changeset 0:14a0e409d574

ADD fast commit
author soto <soto@cr.ie.u-ryukyu.ac.jp>
date Sun, 24 Apr 2022 23:13:44 +0900 (2022-04-24)
parents
children 9f6cb9166d06
files Paper/Makefile Paper/escape_agda.rb Paper/fig/WorkerRun.xbb Paper/fig/bitonicNetwork.pdf Paper/fig/bitonicNetwork.xbb Paper/fig/bitonicSort.pdf Paper/fig/bitonicSort.svg Paper/fig/bitonicSort.xbb Paper/fig/cbc-hoare.graffle Paper/fig/cbc-hoare.pdf Paper/fig/cbc-hoare.xbb Paper/fig/cbc-subtype.graffle Paper/fig/cbc-subtype.pdf Paper/fig/cbc-subtype.xbb Paper/fig/cgdg.pdf Paper/fig/cgdg.xbb Paper/fig/codegear-datagear.graffle Paper/fig/codegear-datagear.pdf Paper/fig/codegear-datagear.xbb Paper/fig/codesegment.pdf Paper/fig/codesegment.xbb Paper/fig/codesegment2.pdf Paper/fig/codesegment2.xbb Paper/fig/csds.graffle Paper/fig/csds.pdf Paper/fig/csds.xbb Paper/fig/cudaArchitecture.graffle Paper/fig/cudaArchitecture.pdf Paper/fig/cudaArchitecture.xbb Paper/fig/cudaDataArchitecture.graffle Paper/fig/cudaDataArchitecture.pdf Paper/fig/cudaDataArchitecture.xbb Paper/fig/dependency.graffle Paper/fig/dependency.pdf Paper/fig/dependency.xbb Paper/fig/factorial.graffle Paper/fig/factorial.pdf Paper/fig/factorial.xbb Paper/fig/gears-meta.graffle Paper/fig/gears-meta.pdf Paper/fig/gears-meta.xbb Paper/fig/goto.graffle Paper/fig/goto.pdf Paper/fig/goto.xbb Paper/fig/gotoInterface.graffle Paper/fig/gotoInterface.pdf Paper/fig/gotoInterface.xbb Paper/fig/hoare-cg-dg.pdf Paper/fig/hoare-cg-dg.xbb Paper/fig/hoare-logic.graffle Paper/fig/hoare-logic.pdf Paper/fig/hoare-logic.xbb Paper/fig/hoare_cg_dg.graffle Paper/fig/hoare_cg_dg.pdf Paper/fig/hoare_cg_dg.xbb Paper/fig/iterateTaskExec.graffle Paper/fig/iterateTaskExec.pdf Paper/fig/iterateTaskExec.xbb Paper/fig/meta-cg-dg.pdf Paper/fig/meta-cg-dg.xbb Paper/fig/meta-hierarchy.graffle Paper/fig/meta-hierarchy.pdf Paper/fig/meta-hierarchy.xbb Paper/fig/meta.graffle Paper/fig/meta.pdf Paper/fig/meta.xbb Paper/fig/meta_cg_dg.graffle Paper/fig/meta_cg_dg.pdf Paper/fig/meta_cg_dg.xbb Paper/fig/metameta.graffle Paper/fig/metameta.pdf Paper/fig/metameta.xbb Paper/fig/non-destructive-rbtree.pdf Paper/fig/non-destructive-rbtree.xbb Paper/fig/put.graffle Paper/fig/put.pdf Paper/fig/put.xbb Paper/fig/putSynchronizedQueue1.graffle Paper/fig/putSynchronizedQueue1.pdf Paper/fig/putSynchronizedQueue1.xbb Paper/fig/putSynchronizedQueue2.graffle Paper/fig/putSynchronizedQueue2.pdf Paper/fig/putSynchronizedQueue2.xbb Paper/fig/rbt-stack.pdf Paper/fig/rbtree.graffle Paper/fig/rbtree.pdf Paper/fig/rbtree.xbb Paper/fig/ryukyu.pdf Paper/fig/ryukyu.xbb Paper/fig/semaphoreSequence.graffle Paper/fig/semaphoreSequence.pdf Paper/fig/semaphoreSequence.xbb Paper/fig/sendTask.graffle Paper/fig/sendTask.pdf Paper/fig/sendTask.xbb Paper/fig/subtype-arg.graffle Paper/fig/subtype-arg.pdf Paper/fig/subtype-arg.xbb Paper/fig/subtype-return.graffle Paper/fig/subtype-return.pdf Paper/fig/subtype-return.xbb Paper/fig/takeSynchronizedQueue1.graffle Paper/fig/takeSynchronizedQueue1.pdf Paper/fig/takeSynchronizedQueue1.xbb Paper/fig/takeSynchronizedQueue2.graffle Paper/fig/takeSynchronizedQueue2.pdf Paper/fig/takeSynchronizedQueue2.xbb Paper/fig/twice.pdf Paper/fig/twice.svg Paper/fig/twice.xbb Paper/fig/u-ryukyu-Mark.eps Paper/fig/vsgo.pdf Paper/fig/vsgo.svg Paper/fig/vsgo.xbb Paper/fig/vsopenmp.pdf Paper/fig/vsopenmp.svg Paper/fig/vsopenmp.xbb Paper/fig/workerRun.graffle Paper/fig/workerRun.pdf Paper/ipsj.cls Paper/ipsjpref.sty Paper/ipsjsort-e.bst Paper/ipsjsort.bst Paper/ipsjtech.sty Paper/ipsjunsrt-e.bst Paper/ipsjunsrt.bst Paper/jlisting.sty Paper/reference.bib Paper/soto-sigos.dvi Paper/soto-sigos.pdf Paper/soto-sigos.synctex.gz Paper/soto-sigos.tex Paper/src/AgdaBasics.agda Paper/src/AgdaBasics.agda.replaced Paper/src/AgdaBool.agda Paper/src/AgdaBool.agda.replaced Paper/src/AgdaDebug.agda Paper/src/AgdaDebug.agda.replaced Paper/src/AgdaElem.agda Paper/src/AgdaElem.agda.replaced Paper/src/AgdaElemApply.agda Paper/src/AgdaElemApply.agda.replaced Paper/src/AgdaFunction.agda Paper/src/AgdaFunction.agda.replaced Paper/src/AgdaId.agda Paper/src/AgdaId.agda.replaced Paper/src/AgdaImplicitId.agda Paper/src/AgdaImplicitId.agda.replaced Paper/src/AgdaImport.agda Paper/src/AgdaImport.agda.replaced Paper/src/AgdaInstance.agda Paper/src/AgdaInstance.agda.replaced Paper/src/AgdaInterface.agda Paper/src/AgdaInterface.agda.replaced Paper/src/AgdaLambda.agda Paper/src/AgdaLambda.agda.replaced Paper/src/AgdaModusPonens.agda Paper/src/AgdaModusPonens.agda.replaced Paper/src/AgdaNPushNPop.agda Paper/src/AgdaNPushNPop.agda.replaced Paper/src/AgdaNPushNPopProof.agda Paper/src/AgdaNPushNPopProof.agda.replaced Paper/src/AgdaNat.agda Paper/src/AgdaNat.agda.replaced Paper/src/AgdaNot.agda Paper/src/AgdaNot.agda.replaced Paper/src/AgdaParameterizedModule.agda Paper/src/AgdaParameterizedModule.agda.replaced Paper/src/AgdaPattern.agda Paper/src/AgdaPattern.agda.replaced Paper/src/AgdaPlus.agda Paper/src/AgdaPlus.agda.replaced Paper/src/AgdaProduct.agda Paper/src/AgdaProduct.agda.replaced Paper/src/AgdaProp.agda Paper/src/AgdaProp.agda.replaced Paper/src/AgdaPushPop.agda Paper/src/AgdaPushPop.agda.replaced Paper/src/AgdaPushPopProof.agda Paper/src/AgdaPushPopProof.agda.replaced Paper/src/AgdaRecord.agda Paper/src/AgdaRecord.agda.replaced Paper/src/AgdaRecordProj.agda Paper/src/AgdaRecordProj.agda.replaced Paper/src/AgdaSingleLinkedStack.agda Paper/src/AgdaSingleLinkedStack.agda.replaced Paper/src/AgdaStack.agda Paper/src/AgdaStack.agda.replaced Paper/src/AgdaStackDS.agda Paper/src/AgdaStackDS.agda.replaced Paper/src/AgdaStackImpl.agda Paper/src/AgdaStackImpl.agda.replaced Paper/src/AgdaStackSomeState.agda Paper/src/AgdaStackSomeState.agda.replaced Paper/src/AgdaStackTest.agda Paper/src/AgdaStackTest.agda.replaced Paper/src/AgdaTree.agda Paper/src/AgdaTree.agda.replaced Paper/src/AgdaTreeDebug.agda Paper/src/AgdaTreeDebug.agda.replaced Paper/src/AgdaTreeDebugReturnNode4.agda Paper/src/AgdaTreeDebugReturnNode4.agda.replaced Paper/src/AgdaTreeImpl.agda Paper/src/AgdaTreeImpl.agda.replaced Paper/src/AgdaTreeProof.agda Paper/src/AgdaTreeProof.agda.replaced Paper/src/AgdaTreeTest.agda Paper/src/AgdaTreeTest.agda.replaced Paper/src/AgdaTypeClass.agda Paper/src/AgdaTypeClass.agda.replaced Paper/src/AgdaWhere.agda Paper/src/AgdaWhere.agda.replaced Paper/src/CodeSegment.agda Paper/src/CodeSegment.agda.replaced Paper/src/CodeSegments.agda Paper/src/CodeSegments.agda.replaced Paper/src/DataSegment.agda Paper/src/DataSegment.agda.replaced Paper/src/Equiv.agda Paper/src/Equiv.agda.replaced Paper/src/Exec.agda Paper/src/Exec.agda.replaced Paper/src/Goto.agda Paper/src/Goto.agda.replaced Paper/src/Maybe.agda Paper/src/Maybe.agda.replaced Paper/src/MetaCodeSegment.agda Paper/src/MetaCodeSegment.agda.replaced Paper/src/MetaDataSegment.agda Paper/src/MetaDataSegment.agda.replaced Paper/src/MetaMetaCodeSegment.agda Paper/src/MetaMetaCodeSegment.agda.replaced Paper/src/MetaMetaDataSegment.agda Paper/src/MetaMetaDataSegment.agda.replaced Paper/src/Nat.agdai Paper/src/NatAdd.agda Paper/src/NatAdd.agda.replaced Paper/src/NatAddSym.agda Paper/src/NatAddSym.agda.replaced Paper/src/PushPopType.agda Paper/src/PushPopType.agda.replaced Paper/src/Reasoning.agda Paper/src/Reasoning.agda.replaced Paper/src/RedBlackTree.agda Paper/src/RedBlackTree.agda.replaced Paper/src/SingleLinkedStack.cbc Paper/src/Stack.cbc Paper/src/ThreePlusOne.agda Paper/src/ThreePlusOne.agda.replaced Paper/src/agda-func.agda Paper/src/agda-func.agda.replaced Paper/src/agda-func.agdai Paper/src/agda-hoare-interpret.agda Paper/src/agda-hoare-interpret.agda.replaced Paper/src/agda-hoare-prog.agda Paper/src/agda-hoare-prog.agda.replaced Paper/src/agda-hoare-rule.agda Paper/src/agda-hoare-rule.agda.replaced Paper/src/agda-hoare-satisfies.agda Paper/src/agda-hoare-satisfies.agda.replaced Paper/src/agda-hoare-soundness.agda Paper/src/agda-hoare-soundness.agda.replaced Paper/src/agda-hoare-term.agda Paper/src/agda-hoare-term.agda.replaced Paper/src/agda-hoare-while.agda Paper/src/agda-hoare-while.agda.replaced Paper/src/agda-hoare-whileprog.agda Paper/src/agda-hoare-whileprog.agda.replaced Paper/src/agda-hoare-write.agda Paper/src/agda-hoare-write.agda.replaced Paper/src/agda-mcg.agda Paper/src/agda-mcg.agda.replaced Paper/src/agda-mdg.agda Paper/src/agda-mdg.agda.replaced Paper/src/agda-pattern.agda Paper/src/agda-pattern.agda.replaced Paper/src/agda-plus.agda Paper/src/agda-plus.agda.replaced Paper/src/agda-rewrite.agda Paper/src/agda-rewrite.agda.replaced Paper/src/agda-term.agda Paper/src/agda-term.agda.replaced Paper/src/agda-term.agdai Paper/src/agda-term1.agda Paper/src/agda-term1.agda.replaced Paper/src/agda-term2.agda Paper/src/agda-term2.agda.replaced Paper/src/agda-term3.agda Paper/src/agda-term3.agda.replaced Paper/src/agda/.#abridgement.agda Paper/src/agda/.#hoare-test.agda Paper/src/agda/.#plus2.agda Paper/src/agda/And.agda Paper/src/agda/And.agda.replaced Paper/src/agda/Nat.agda Paper/src/agda/Nat.agda.replaced Paper/src/agda/_Fresh.agda Paper/src/agda/_Fresh.agda.replaced Paper/src/agda/abridgement.agda Paper/src/agda/abridgement.agda.replaced Paper/src/agda/cbc-agda.agda Paper/src/agda/cbc-agda.agda.replaced Paper/src/agda/cmp.agda Paper/src/agda/cmp.agda.replaced Paper/src/agda/fresh_test.agda Paper/src/agda/fresh_test.agda.replaced Paper/src/agda/hoare-test.agda Paper/src/agda/hoare-test.agda.replaced Paper/src/agda/hoare-while.agda Paper/src/agda/hoare-while.agda.replaced Paper/src/agda/hoare-while1.agda Paper/src/agda/hoare-while1.agda.replaced Paper/src/agda/lambda.agda Paper/src/agda/lambda.agda.replaced Paper/src/agda/list-any.agda Paper/src/agda/list-any.agda.replaced Paper/src/agda/logic.agda Paper/src/agda/logic.agda.replaced Paper/src/agda/plus.agda Paper/src/agda/plus.agda.replaced Paper/src/agda/plus2.agda Paper/src/agda/plus2.agda.replaced Paper/src/agda/rbt_imple.agda Paper/src/agda/rbt_imple.agda.replaced Paper/src/agda/rbt_t.agda Paper/src/agda/rbt_t.agda.replaced Paper/src/agda/rbt_varif.agda Paper/src/agda/rbt_varif.agda.replaced Paper/src/agda/syllogism.agda Paper/src/agda/syllogism.agda.replaced Paper/src/agda/utilities.agda Paper/src/agda/utilities.agda.replaced Paper/src/atomicImpl.cbc Paper/src/atomicInterface.h Paper/src/atton-master-meta-sample.agda Paper/src/atton-master-meta-sample.agda.replaced Paper/src/atton-master-sample.agda Paper/src/atton-master-sample.agda.replaced Paper/src/axiom-taut.agda Paper/src/axiom-taut.agda.replaced Paper/src/bt_impl/bt_env.agda Paper/src/bt_impl/bt_env.agda.replaced Paper/src/bt_impl/find.agda Paper/src/bt_impl/find.agda.replaced Paper/src/bt_impl/replace.agda Paper/src/bt_impl/replace.agda.replaced Paper/src/bt_verif/find.agda Paper/src/bt_verif/find.agda.replaced Paper/src/bt_verif/invariant.agda Paper/src/bt_verif/invariant.agda.replaced Paper/src/cbc-agda.agda Paper/src/cbc-agda.agda.replaced Paper/src/cbc-agda.agdai Paper/src/cbc-condition.agda Paper/src/cbc-condition.agda.replaced Paper/src/cbc-hoare-SoundnessC.agda Paper/src/cbc-hoare-SoundnessC.agda.replaced Paper/src/cbc-hoare-loop.agda Paper/src/cbc-hoare-loop.agda.replaced Paper/src/cbc-hoare-loophelper.agda Paper/src/cbc-hoare-loophelper.agda.replaced Paper/src/cbc-hoare-prim.agda Paper/src/cbc-hoare-prim.agda.replaced Paper/src/cbc-hoare-soundness.agda Paper/src/cbc-hoare-soundness.agda.replaced Paper/src/cbc-hoare-while.agda Paper/src/cbc-hoare-while.agda.replaced Paper/src/cbc-hoare.agda Paper/src/cbc-hoare.agda.replaced Paper/src/cg1.cbc Paper/src/codeGearExample.cbc Paper/src/cong.agda Paper/src/cong.agda.replaced Paper/src/context.c Paper/src/context.h Paper/src/context1.c Paper/src/context2.c Paper/src/contextContinuation.cbc Paper/src/createCPUWorker.cbc Paper/src/createTaskManager.cbc Paper/src/cuLaunchKernel.cbc Paper/src/cudaTwice.cu Paper/src/env.agda Paper/src/env.agda.replaced Paper/src/env.agdai Paper/src/escape_agda.rb Paper/src/ex_cbc Paper/src/ex_code1 Paper/src/ex_code2 Paper/src/ex_stack.cbc Paper/src/ex_stub Paper/src/excbc.cbc Paper/src/executorInterface.h Paper/src/factrial.cbc Paper/src/function.agda Paper/src/function.agda.replaced Paper/src/gears-while.agda Paper/src/gears-while.agda.replaced Paper/src/gears.agda Paper/src/gears.agda.replaced Paper/src/gencontext.c Paper/src/go Paper/src/go.go Paper/src/goto.cbc Paper/src/initContext.c Paper/src/interface.cbc Paper/src/iterateCall.cbc Paper/src/iteratePargoto.cbc Paper/src/iteratorInterface.h Paper/src/metaCodeGearExample.cbc Paper/src/metaCreateTask.cbc Paper/src/nat.agda Paper/src/nat.agda.replaced Paper/src/openMP.c Paper/src/parGotoCreateTask.cbc Paper/src/putSynchronizedQueue.cbc Paper/src/queueInterface.h Paper/src/record.agda Paper/src/record.agda.replaced Paper/src/redBlackTreeTest.agda Paper/src/redBlackTreeTest.agda.replaced Paper/src/semaphoreInterface.h Paper/src/sendTask.cbc Paper/src/singleLinkedQueue.cbc Paper/src/singleLinkedQueueTest.cbc Paper/src/singleLinkedQueueTest_script.cbc Paper/src/singleLinkedStackInterface.cbc Paper/src/sound-conv.agda Paper/src/sound-conv.agda.replaced Paper/src/sound-impl.agda Paper/src/sound-impl.agda.replaced Paper/src/sound-loop.agda Paper/src/sound-loop.agda.replaced Paper/src/sound-looppsem.agda Paper/src/sound-looppsem.agda.replaced Paper/src/sound-pcom.agda Paper/src/sound-pcom.agda.replaced Paper/src/sound-psemcom.agda Paper/src/sound-psemcom.agda.replaced Paper/src/stack-product.agda Paper/src/stack-product.agda.replaced Paper/src/stack-subtype-sample.agda Paper/src/stack-subtype-sample.agda.replaced Paper/src/stack-subtype.agda Paper/src/stack-subtype.agda.replaced Paper/src/stack.agda Paper/src/stack.agda.replaced Paper/src/stack.agdai Paper/src/stackImpl.agda Paper/src/stackImpl.agda.replaced Paper/src/stackTest.agda Paper/src/stackTest.agda.replaced Paper/src/stackTest.agdai Paper/src/stackimpl.cbc Paper/src/stub.cbc Paper/src/stubCodeGear.cbc Paper/src/subtype.agda Paper/src/subtype.agda.replaced Paper/src/sync_dequeue.c Paper/src/sync_enqueue.c Paper/src/synchronizedQueue.h Paper/src/taskManagerInterface.cbc Paper/src/term1.agda Paper/src/term1.agda.replaced Paper/src/term2.agda Paper/src/term2.agda.replaced Paper/src/term3.agda Paper/src/term3.agda.replaced Paper/src/termination.agda Paper/src/termination.agda.replaced Paper/src/termination.agdai Paper/src/tree.agda Paper/src/tree.agda.replaced Paper/src/twice.c Paper/src/while-test.agda Paper/src/while-test.agda.replaced Paper/src/while_loop_impl/init_cg.agda Paper/src/while_loop_impl/init_cg.agda.replaced Paper/src/while_loop_impl/while_loop.agda Paper/src/while_loop_impl/while_loop.agda.replaced Paper/src/while_loop_impl/while_loop_c.agda Paper/src/while_loop_impl/while_loop_c.agda.replaced Paper/src/while_loop_impl/while_loop_dg.agda Paper/src/while_loop_impl/while_loop_dg.agda.replaced Paper/src/while_loop_verif/conversion.agda Paper/src/while_loop_verif/conversion.agda.replaced Paper/src/while_loop_verif/init_cg.agda Paper/src/while_loop_verif/init_cg.agda.replaced Paper/src/while_loop_verif/verif.agda Paper/src/while_loop_verif/verif.agda.replaced Paper/src/while_loop_verif/verif_loop.agda Paper/src/while_loop_verif/verif_loop.agda.replaced Paper/src/while_loop_verif/verif_term.agda Paper/src/while_loop_verif/verif_term.agda.replaced Paper/src/while_loop_verif/while_loop.agda Paper/src/while_loop_verif/while_loop.agda.replaced Paper/src/workerRun.cbc Paper/src/zero.agda Paper/src/zero.agda.replaced Paper/tex/.#cbc_agda.tex Paper/tex/.#rbt_verif.tex Paper/tex/abstract.tex Paper/tex/abstract/abstract.tex Paper/tex/agda.tex Paper/tex/cbc.tex Paper/tex/cbc_agda.tex Paper/tex/continuation_agda.tex Paper/tex/future.tex Paper/tex/hoare.tex Paper/tex/intro.tex Paper/tex/intro/intro.tex Paper/tex/rbt_imple.tex Paper/tex/rbt_intro.tex Paper/tex/rbt_verif.tex Paper/tex/spec.tex Paper/tex/spec/spec.tex Paper/tex/spec/src/agda-mcg.agda Paper/tex/spec/src/agda-mcg.agda.replaced Paper/tex/thanks.tex Paper/tex/tree_desc.tex Paper/tex/while_loop.tex
diffstat 521 files changed, 25736 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Paper/Makefile	Sun Apr 24 23:13:44 2022 +0900
@@ -0,0 +1,35 @@
+TARGET = soto
+
+LATEX   = platex
+BIBTEX  = pbibtex
+#DVIPS   = dvips
+#DVIPDFM = dvipdfmx
+RM      = rm -f
+DVIPDF=dvipdfmx -p a4
+#  Option definitions
+#DVIPDFMOPT = 
+#DVIPSOPT   = -D 720 -mode esphi -O 0mm,0mm -N0 
+
+#  Suffixes definitions
+.SUFFIXES: .tex .dvi .pdf
+
+.tex.dvi:
+	$(LATEX) $<
+	$(BIBTEX) $(TARGET)
+	$(LATEX) $<
+	$(LATEX) $<
+
+.dvi.pdf:
+	$(DVIPDF) $(DVIPDF_OPT) $<
+
+
+all: $(TARGET).pdf
+	open $(TARGET).pdf
+
+dvi: $(TARGET).dvi
+
+pdf: $(TARGET).pdf
+
+
+clean:
+	rm -f *.dvi *.aux *.log *.pdf *.ps *.gz *.bbl *.blg *~ *.core *.bbl
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Paper/escape_agda.rb	Sun Apr 24 23:13:44 2022 +0900
@@ -0,0 +1,43 @@
+#!/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}',
+  '₃' => '_{3}',
+  '∎'  => 'blacksquare',
+  'λ' => 'lambda',
+  '∧' => 'wedge',
+  '/\\' => 'wedge',
+  '⇒' => 'Rightarrow',
+  '¬' => 'neg',
+  '≀' => 'leq',
+  '⊥' => 'bot',
+  '∀' => 'forall',
+  '#' => '\#',
+  '⊀' => '\top',
+  '\'' => '\prime',
+  '≈' =>  '\approx'
+}
+
+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/Paper/fig/WorkerRun.xbb	Sun Apr 24 23:13:44 2022 +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 Paper/fig/bitonicNetwork.pdf has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Paper/fig/bitonicNetwork.xbb	Sun Apr 24 23:13:44 2022 +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 Paper/fig/bitonicSort.pdf has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Paper/fig/bitonicSort.svg	Sun Apr 24 23:13:44 2022 +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/Paper/fig/bitonicSort.xbb	Sun Apr 24 23:13:44 2022 +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 Paper/fig/cbc-hoare.graffle has changed
Binary file Paper/fig/cbc-hoare.pdf has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Paper/fig/cbc-hoare.xbb	Sun Apr 24 23:13:44 2022 +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 Paper/fig/cbc-subtype.graffle has changed
Binary file Paper/fig/cbc-subtype.pdf has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Paper/fig/cbc-subtype.xbb	Sun Apr 24 23:13:44 2022 +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 Paper/fig/cgdg.pdf has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Paper/fig/cgdg.xbb	Sun Apr 24 23:13:44 2022 +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 Paper/fig/codegear-datagear.graffle has changed
Binary file Paper/fig/codegear-datagear.pdf has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Paper/fig/codegear-datagear.xbb	Sun Apr 24 23:13:44 2022 +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 Paper/fig/codesegment.pdf has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Paper/fig/codesegment.xbb	Sun Apr 24 23:13:44 2022 +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 Paper/fig/codesegment2.pdf has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Paper/fig/codesegment2.xbb	Sun Apr 24 23:13:44 2022 +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 Paper/fig/csds.graffle has changed
Binary file Paper/fig/csds.pdf has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Paper/fig/csds.xbb	Sun Apr 24 23:13:44 2022 +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 Paper/fig/cudaArchitecture.graffle has changed
Binary file Paper/fig/cudaArchitecture.pdf has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Paper/fig/cudaArchitecture.xbb	Sun Apr 24 23:13:44 2022 +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 Paper/fig/cudaDataArchitecture.graffle has changed
Binary file Paper/fig/cudaDataArchitecture.pdf has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Paper/fig/cudaDataArchitecture.xbb	Sun Apr 24 23:13:44 2022 +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 Paper/fig/dependency.graffle has changed
Binary file Paper/fig/dependency.pdf has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Paper/fig/dependency.xbb	Sun Apr 24 23:13:44 2022 +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/Paper/fig/factorial.graffle	Sun Apr 24 23:13:44 2022 +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 Paper/fig/factorial.pdf has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Paper/fig/factorial.xbb	Sun Apr 24 23:13:44 2022 +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/Paper/fig/gears-meta.graffle	Sun Apr 24 23:13:44 2022 +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 Paper/fig/gears-meta.pdf has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Paper/fig/gears-meta.xbb	Sun Apr 24 23:13:44 2022 +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/Paper/fig/goto.graffle	Sun Apr 24 23:13:44 2022 +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 Paper/fig/goto.pdf has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Paper/fig/goto.xbb	Sun Apr 24 23:13:44 2022 +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 Paper/fig/gotoInterface.graffle has changed
Binary file Paper/fig/gotoInterface.pdf has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Paper/fig/gotoInterface.xbb	Sun Apr 24 23:13:44 2022 +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 Paper/fig/hoare-cg-dg.pdf has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Paper/fig/hoare-cg-dg.xbb	Sun Apr 24 23:13:44 2022 +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 Paper/fig/hoare-logic.graffle has changed
Binary file Paper/fig/hoare-logic.pdf has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Paper/fig/hoare-logic.xbb	Sun Apr 24 23:13:44 2022 +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 Paper/fig/hoare_cg_dg.graffle has changed
Binary file Paper/fig/hoare_cg_dg.pdf has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Paper/fig/hoare_cg_dg.xbb	Sun Apr 24 23:13:44 2022 +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 Paper/fig/iterateTaskExec.graffle has changed
Binary file Paper/fig/iterateTaskExec.pdf has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Paper/fig/iterateTaskExec.xbb	Sun Apr 24 23:13:44 2022 +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 Paper/fig/meta-cg-dg.pdf has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Paper/fig/meta-cg-dg.xbb	Sun Apr 24 23:13:44 2022 +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 Paper/fig/meta-hierarchy.graffle has changed
Binary file Paper/fig/meta-hierarchy.pdf has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Paper/fig/meta-hierarchy.xbb	Sun Apr 24 23:13:44 2022 +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 Paper/fig/meta.graffle has changed
Binary file Paper/fig/meta.pdf has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Paper/fig/meta.xbb	Sun Apr 24 23:13:44 2022 +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 Paper/fig/meta_cg_dg.graffle has changed
Binary file Paper/fig/meta_cg_dg.pdf has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Paper/fig/meta_cg_dg.xbb	Sun Apr 24 23:13:44 2022 +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 Paper/fig/metameta.graffle has changed
Binary file Paper/fig/metameta.pdf has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Paper/fig/metameta.xbb	Sun Apr 24 23:13:44 2022 +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 Paper/fig/non-destructive-rbtree.pdf has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Paper/fig/non-destructive-rbtree.xbb	Sun Apr 24 23:13:44 2022 +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 Paper/fig/put.graffle has changed
Binary file Paper/fig/put.pdf has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Paper/fig/put.xbb	Sun Apr 24 23:13:44 2022 +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 Paper/fig/putSynchronizedQueue1.graffle has changed
Binary file Paper/fig/putSynchronizedQueue1.pdf has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Paper/fig/putSynchronizedQueue1.xbb	Sun Apr 24 23:13:44 2022 +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 Paper/fig/putSynchronizedQueue2.graffle has changed
Binary file Paper/fig/putSynchronizedQueue2.pdf has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Paper/fig/putSynchronizedQueue2.xbb	Sun Apr 24 23:13:44 2022 +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 Paper/fig/rbt-stack.pdf has changed
Binary file Paper/fig/rbtree.graffle has changed
Binary file Paper/fig/rbtree.pdf has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Paper/fig/rbtree.xbb	Sun Apr 24 23:13:44 2022 +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 Paper/fig/ryukyu.pdf has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Paper/fig/ryukyu.xbb	Sun Apr 24 23:13:44 2022 +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 Paper/fig/semaphoreSequence.graffle has changed
Binary file Paper/fig/semaphoreSequence.pdf has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Paper/fig/semaphoreSequence.xbb	Sun Apr 24 23:13:44 2022 +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 Paper/fig/sendTask.graffle has changed
Binary file Paper/fig/sendTask.pdf has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Paper/fig/sendTask.xbb	Sun Apr 24 23:13:44 2022 +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 Paper/fig/subtype-arg.graffle has changed
Binary file Paper/fig/subtype-arg.pdf has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Paper/fig/subtype-arg.xbb	Sun Apr 24 23:13:44 2022 +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 Paper/fig/subtype-return.graffle has changed
Binary file Paper/fig/subtype-return.pdf has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Paper/fig/subtype-return.xbb	Sun Apr 24 23:13:44 2022 +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 Paper/fig/takeSynchronizedQueue1.graffle has changed
Binary file Paper/fig/takeSynchronizedQueue1.pdf has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Paper/fig/takeSynchronizedQueue1.xbb	Sun Apr 24 23:13:44 2022 +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 Paper/fig/takeSynchronizedQueue2.graffle has changed
Binary file Paper/fig/takeSynchronizedQueue2.pdf has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Paper/fig/takeSynchronizedQueue2.xbb	Sun Apr 24 23:13:44 2022 +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 Paper/fig/twice.pdf has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Paper/fig/twice.svg	Sun Apr 24 23:13:44 2022 +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/Paper/fig/twice.xbb	Sun Apr 24 23:13:44 2022 +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/Paper/fig/u-ryukyu-Mark.eps	Sun Apr 24 23:13:44 2022 +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 Paper/fig/vsgo.pdf has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Paper/fig/vsgo.svg	Sun Apr 24 23:13:44 2022 +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/Paper/fig/vsgo.xbb	Sun Apr 24 23:13:44 2022 +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 Paper/fig/vsopenmp.pdf has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Paper/fig/vsopenmp.svg	Sun Apr 24 23:13:44 2022 +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/Paper/fig/vsopenmp.xbb	Sun Apr 24 23:13:44 2022 +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 Paper/fig/workerRun.graffle has changed
Binary file Paper/fig/workerRun.pdf has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Paper/ipsj.cls	Sun Apr 24 23:13:44 2022 +0900
@@ -0,0 +1,5950 @@
+
+% ipsj.cls  (C) 2012 Information Processing Society of Japan
+% Copyright (C) 1995-2010 by Hiroshi Nakashima, Yasuki Saito and
+%                            The Editorial Board of the IPSJ Journal
+
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesClass{ipsj}
+% [2011/08/22-11/25 Test.ver IPSJ class]
+% [2011/12/15-2012/04/24 v1.01-v1.02e IPSJ class]
+% [2012/06/01-2018/03/22 v1.03-v3.05 IPSJ class]
+ [2018/08/03 v4.0 IPSJ class]
+
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\RequirePackage{color}
+
+\newif\if@Proof \@Prooffalse%
+\DeclareOption{Proof}{\@Prooftrue}
+
+
+\newif\if@LAYOUT \@LAYOUTfalse%
+\DeclareOption{LAYOUT}{\@LAYOUTtrue}
+
+\newif\if@submit \@submitfalse
+\DeclareOption{submit}{\@submittrue}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%%%%% Document Styles %%%%%%
+%\newif\ifDS@printer \DS@printerfalse
+\newif\ifDS@english \DS@englishfalse
+\newif\ifDS@technote \DS@technotefalse
+\newif\ifDS@preface \DS@prefacefalse
+\newif\ifDS@techrep \DS@techrepfalse
+\newif\ifDS@sigrecommended \DS@sigrecommendedfalse
+\newif\ifDS@invited \DS@invitedfalse
+\newif\ifDS@online \DS@onlinefalse
+\newif\ifDS@draft \DS@draftfalse
+%======================
+\newif\ifDS@PRO \DS@PROfalse
+\newif\ifDS@ACS \DS@ACSfalse
+\newif\ifDS@TOD \DS@TODfalse
+\newif\ifDS@TOM \DS@TOMfalse
+\newif\ifDS@CVA \DS@CVAfalse
+\newif\ifDS@TBIO \DS@TBIOfalse
+\newif\ifDS@SLDM \DS@SLDMfalse
+\newif\ifDS@CDS \DS@CDSfalse
+\newif\ifDS@DC \DS@DCfalse % v1.5
+\newif\ifDS@DCON \DS@DCONfalse % v2.0
+%======================
+\newif\ifDS@JIP \DS@JIPfalse
+\newif\ifDS@Data \DS@Datafalse
+\newif\ifDS@Survey \DS@Surveyfalse
+\newif\ifDS@Research \DS@Researchfalse
+\newif\ifDS@Short \DS@Shortfalse
+\newif\ifDS@systems \DS@systemsfalse
+\newif\ifDS@services \DS@servicesfalse
+\newif\ifDS@devices \DS@devicesfalse
+%======================
+\newif\ifDS@abstract \DS@abstractfalse
+\newif\ifDS@EEE \DS@EEEfalse
+%======================
+\newif\ifDS@OT \DS@OTfalse
+
+
+%% v1.02b
+\newif\ifDS@noauthor \DS@noauthorfalse
+
+%% v1.4
+\newif\ifDS@system \DS@systemfalse
+
+
+%% v1.5
+\newif\ifDS@Express \DS@Expressfalse
+\newif\ifDS@Practice \DS@Practicefalse
+\newif\ifDS@Content \DS@Contentfalse
+
+%% v1.7 TCE
+\newif\ifDS@TCE \DS@TCEfalse
+\newif\ifDS@invitedshort \DS@invitedshortfalse
+\newif\ifDS@recommendedshort \DS@recommendedshortfalse
+%% v1.7 DCON
+%% v2.0 DCON
+\newif\ifDS@recommendedresearch \DS@recommendedresearchfalse
+\newif\ifDS@recommendedpractice \DS@recommendedpracticefalse
+\newif\ifDS@recommendedcontent \DS@recommendedcontentfalse
+
+%% v3.5 CDS
+\newif\ifDS@recommendeddevices \DS@recommendeddevicesfalse
+
+
+
+
+
+
+\DeclareOption{DAM}{\def\@type{DAM}\def\@Mtype{DAM}}
+
+\DeclareOption{english}{\DS@englishtrue\DS@EEEtrue}
+%%%
+\DeclareOption{technote}{\DS@technotetrue\def\@Mtype{technote}}
+\DeclareOption{sigrecommended}{\DS@sigrecommendedtrue\def\@Mtype{sigrecommended}}
+\DeclareOption{invited}{\DS@invitedtrue\def\@Mtype{invited}}
+%=============
+\DeclareOption{PRO}{\DS@PROtrue\def\@type{PRO}\DS@EEEfalse}
+\DeclareOption{ACS}{\DS@ACStrue\def\@type{ACS}\DS@EEEfalse}
+\DeclareOption{TOD}{\DS@TODtrue\def\@type{TOD}\DS@EEEfalse}
+\DeclareOption{TOM}{\DS@TOMtrue\def\@type{TOM}\DS@EEEfalse}
+\DeclareOption{CDS}{\DS@CDStrue\def\@type{CDS}\DS@EEEfalse}
+\DeclareOption{DC}{\DS@DCtrue\def\@type{DC}\DS@EEEfalse}% v1.5
+\DeclareOption{DCON}{\DS@DCONtrue\def\@type{DCON}\DS@EEEfalse}% v2.0
+%%
+\DeclareOption{CVA}{\DS@englishtrue\DS@CVAtrue\def\@type{CVA}\DS@EEEfalse}
+\DeclareOption{TBIO}{\DS@englishtrue\DS@TBIOtrue\def\@type{TBIO}\def\@Mtype{TBIOM}\DS@EEEfalse}
+\DeclareOption{SLDM}{\DS@englishtrue\DS@SLDMtrue\def\@type{SLDM}\DS@EEEfalse}
+%%
+\DeclareOption{JIP}{\DS@englishtrue\DS@JIPtrue\def\@type{JIP}\DS@EEEfalse}
+
+\DeclareOption{Data}{\DS@Datatrue\def\@type{Data}\def\@Mtype{Data}\DS@EEEfalse}
+\DeclareOption{Survey}{\DS@Surveytrue\def\@type{Survey}\def\@Mtype{Survey}\DS@EEEfalse}
+\DeclareOption{Research}{\DS@Researchtrue\def\@type{Research}\def\@Mtype{Research}\DS@EEEfalse}
+\DeclareOption{Short}{\DS@Shorttrue\def\@type{Short}\def\@Mtype{Short}\DS@EEEfalse}
+
+\DeclareOption{abstract}{\DS@abstracttrue\def\@Mtype{abstract}\DS@EEEfalse}
+
+\DeclareOption{systems}{\DS@systemstrue\def\@Mtype{systems}\DS@EEEfalse}
+\DeclareOption{services}{\DS@servicestrue\def\@Mtype{services}\DS@EEEfalse}
+\DeclareOption{devices}{\DS@devicestrue\def\@Mtype{devices}\DS@EEEfalse}
+
+\DeclareOption{preface}{\DS@prefacetrue}
+\DeclareOption{draft}{\DS@drafttrue}
+
+\DeclareOption{OT}{\DS@OTtrue}
+
+%% v1.02b
+\DeclareOption{techrep}{\DS@techreptrue}
+\DeclareOption{noauthor}{\DS@noauthortrue}
+
+%% v1.4
+\DeclareOption{system}{\DS@systemtrue\def\@Mtype{system}\DS@EEEfalse}
+
+%% v1.5
+\DeclareOption{Express}{\DS@Expresstrue\def\@Mtype{Express}\DS@EEEfalse}
+\DeclareOption{Practice}{\DS@Practicetrue\def\@Mtype{Practice}\DS@EEEfalse}
+\DeclareOption{Content}{\DS@Contenttrue\def\@Mtype{Content}\DS@EEEfalse}
+
+%% v1.7 TCE
+\DeclareOption{TCE}{\DS@TCEtrue\def\@type{TCE}\DS@EEEfalse}
+\DeclareOption{invitedshort}{\DS@invitedshorttrue\def\@Mtype{invitedshort}\DS@EEEfalse}
+\DeclareOption{recommendedshort}{\DS@recommendedshorttrue\def\@Mtype{recommendedshort}\DS@EEEfalse}
+
+%% v1.7 DCON
+%% v2.0 DCON
+\DeclareOption{recommendedresearch}{\DS@recommendedresearchtrue\def\@Mtype{recommendedresearch}\DS@EEEfalse}
+\DeclareOption{recommendedpractice}{\DS@recommendedpracticetrue\def\@Mtype{recommendedpractice}\DS@EEEfalse}
+\DeclareOption{recommendedcontent}{\DS@recommendedcontenttrue\def\@Mtype{recommendedcontent}\DS@EEEfalse}
+
+%% v3.5
+\DeclareOption{recommendeddevices}{\DS@recommendeddevicestrue\def\@Mtype{recommendeddevices}\DS@EEEfalse}
+
+
+
+
+
+
+%% v1.8
+\newif\ifDS@preprint \DS@preprintfalse
+
+\DeclareOption{preprint}{%
+\DS@preprinttrue%
+\DS@englishtrue%
+\DS@PROfalse%
+\DS@TOMfalse%
+\DS@ACSfalse%
+\DS@TODfalse%
+\DS@DCfalse%
+\DS@DCONfalse%
+\DS@TCEfalse%
+\DS@CDSfalse%
+\def\@type{DAM}%
+\def\@Mtype{DAM}%
+\DS@EEEtrue%
+\ifDS@systems\def\@Mtype{systems}\fi
+\ifDS@services\def\@Mtype{services}\fi
+\ifDS@devices\def\@Mtype{devices}\fi
+\ifDS@Research\def\@Mtype{Research}\fi
+\ifDS@Practice\def\@Mtype{Practice}\fi
+\ifDS@Content\def\@Mtype{Content}\fi
+%%%v1.10
+\ifDS@invited\def\@Mtype{invited}\fi
+\ifDS@sigrecommended\def\@Mtype{sigrecommended}\fi
+%%%v3.04
+\ifDS@technote\def\@Mtype{technote}\fi
+%%v3.04
+\ifDS@recommendeddevices\def\@Mtype{recommendeddevices}\fi
+}
+%%%%%%%%%%%%%
+
+
+
+
+
+
+
+
+
+
+%%%% parameter %%%%%%%%%
+\unitlength=1mm
+\predisplaypenalty=0
+%%%%%%%%%%%%%%%%%%%%%%%%
+
+
+
+%%A4: 210mm, 297mm 
+\newcounter{@paper}
+\newif\if@landscape \@landscapefalse
+\newcommand{\@ptsize}{}
+\newif\if@restonecol
+\newif\if@titlepage
+\@titlepagetrue
+\newif\if@openright
+\newif\if@mainmatter \@mainmattertrue
+%\hour\time \divide\hour by 60\relax
+%\@tempcnta\hour \multiply\@tempcnta 60\relax
+%\minute\time \advance\minute-\@tempcnta
+\newif\if@stysize \@stysizefalse
+\newif\if@enablejfam \@enablejfamtrue
+\DeclareOption{a4paper}{\setcounter{@paper}{1}%
+  \setlength\paperheight {297mm}%
+  \setlength\paperwidth  {210mm}}
+\DeclareOption{a5paper}{\setcounter{@paper}{2}%
+  \setlength\paperheight {210mm}
+  \setlength\paperwidth  {148mm}}
+\DeclareOption{b4paper}{\setcounter{@paper}{3}%
+  \setlength\paperheight {364mm}
+  \setlength\paperwidth  {257mm}}
+\DeclareOption{b5paper}{\setcounter{@paper}{4}%
+  \setlength\paperheight {257mm}
+  \setlength\paperwidth  {182mm}}
+\DeclareOption{a4j}{\setcounter{@paper}{1}\@stysizetrue
+  \setlength\paperheight {297mm}%
+  \setlength\paperwidth  {210mm}}
+\DeclareOption{a5j}{\setcounter{@paper}{2}\@stysizetrue
+  \setlength\paperheight {210mm}
+  \setlength\paperwidth  {148mm}}
+\DeclareOption{b4j}{\setcounter{@paper}{3}\@stysizetrue
+  \setlength\paperheight {364mm}
+  \setlength\paperwidth  {257mm}}
+\DeclareOption{b5j}{\setcounter{@paper}{4}\@stysizetrue
+  \setlength\paperheight {257mm}
+  \setlength\paperwidth  {182mm}}
+\DeclareOption{a4p}{\setcounter{@paper}{1}\@stysizetrue
+  \setlength\paperheight {297mm}%
+  \setlength\paperwidth  {210mm}}
+\DeclareOption{a5p}{\setcounter{@paper}{2}\@stysizetrue
+  \setlength\paperheight {210mm}
+  \setlength\paperwidth  {148mm}}
+\DeclareOption{b4p}{\setcounter{@paper}{3}\@stysizetrue
+  \setlength\paperheight {364mm}
+  \setlength\paperwidth  {257mm}}
+\DeclareOption{b5p}{\setcounter{@paper}{4}\@stysizetrue
+  \setlength\paperheight {257mm}
+  \setlength\paperwidth  {182mm}}
+\if@compatibility
+  \renewcommand{\@ptsize}{0}
+\else
+  \DeclareOption{10pt}{\renewcommand{\@ptsize}{0}}
+\fi
+\DeclareOption{11pt}{\renewcommand{\@ptsize}{1}}
+\DeclareOption{12pt}{\renewcommand{\@ptsize}{2}}
+\DeclareOption{landscape}{\@landscapetrue
+  \setlength\@tempdima{\paperheight}%
+  \setlength\paperheight{\paperwidth}%
+  \setlength\paperwidth{\@tempdima}}
+%\DeclareOption{tombow}{%
+%  \tombowtrue \tombowdatetrue
+%  \setlength{\@tombowwidth}{.1\p@}%
+%  \@bannertoken{%
+%     \jobname\space:\space\number\year/\number\month/\number\day
+%      (\number\hour:\number\minute)}
+%  \maketombowbox}
+%\DeclareOption{tombo}{%
+%  \tombowtrue \tombowdatefalse
+%  \setlength{\@tombowwidth}{.1\p@}%
+%  \maketombowbox}
+\DeclareOption{mentuke}{%
+  \tombowtrue \tombowdatefalse
+  \setlength{\@tombowwidth}{\z@}%
+  \maketombowbox}
+\DeclareOption{tate}{%
+  \AtBeginDocument{\tate\message{《瞊組モヌド》}%
+                   \adjustbaseline}%
+}
+\DeclareOption{oneside}{\@twosidefalse}
+\DeclareOption{twoside}{\@twosidetrue}
+\DeclareOption{onecolumn}{\@twocolumnfalse}
+\DeclareOption{twocolumn}{\@twocolumntrue}
+\DeclareOption{titlepage}{\@titlepagetrue}
+\DeclareOption{notitlepage}{\@titlepagefalse}
+\if@compatibility
+\@openrighttrue
+\else
+\DeclareOption{openright}{\@openrighttrue}
+\DeclareOption{openany}{\@openrightfalse}
+\fi
+\DeclareOption{leqno}{\input{leqno.clo}}
+\DeclareOption{fleqn}{\input{fleqn.clo}}
+\DeclareOption{openbib}{%
+  \AtEndOfPackage{%
+   \renewcommand\@openbib@code{%
+      \advance\leftmargin\bibindent
+      \itemindent -\bibindent
+      \listparindent \itemindent
+      \parsep \z@
+      }%
+   \renewcommand\newblock{\par}}}
+\if@compatibility
+\else
+  \DeclareOption{disablejfam}{\@enablejfamfalse}
+\fi
+%\DeclareOption{draft}{\setlength\overfullrule{5pt}}
+\DeclareOption{final}{\setlength\overfullrule{0pt}}
+
+%%
+%% Option
+%%
+\ExecuteOptions{a4paper,10pt,twoside,twocolumn,final,openright,DAM,Prooffalse}%!!
+\tracingmacros=1
+\ProcessOptions\relax
+\tracingmacros=0
+
+%% 
+\newdimen\h
+  \h=0.25mm
+\newdimen\JQ
+  \JQ=0.7392507pt
+\newdimen\Q
+  \Q=0.71144pt
+
+\newdimen\@Q \@Q=0.25mm
+
+
+%%
+%% Font
+%%
+
+\ifDS@english
+\else
+%% 
+\expandafter\let\csname JY1/mc/m/n/10\endcsname\relax
+\expandafter\let\csname JY1/gt/m/n/10\endcsname\relax
+%%%
+\DeclareFontShape{JT1}{gt}{m}{it}{<-> ssub*gt/m/n}{}
+\DeclareFontFamily{JT1}{mdg}{}
+\DeclareFontShape{JT1}{mdg}{m}{n}{<-> ssub*gt/m/n}{}
+\DeclareFontFamily{JT1}{gmb}{}
+\DeclareFontShape{JT1}{gmb}{m}{n}{<-> ssub*gt/m/n}{}
+\DeclareFontShape{JT1}{gmb}{bx}{n}{<-> ssub*gt/m/n}{}
+\DeclareFontFamily{JT1}{sg}{}
+\DeclareFontShape{JT1}{sg}{m}{n}{<-> ssub*gt/m/n}{}
+\DeclareFontShape{JT1}{sg}{bx}{n}{<-> ssub*gt/m/n}{}
+\DeclareFontFamily{JT1}{gbm}{}
+\DeclareFontShape{JT1}{gbm}{m}{n}{<-> ssub*gt/m/n}{}
+\DeclareFontShape{JT1}{gbm}{bx}{n}{<-> ssub*gt/m/n}{}
+\DeclareFontFamily{JT1}{jun}{}
+\DeclareFontShape{JT1}{jun}{b}{n}{<-> ssub*gt/m/n}{}
+\DeclareFontShape{JT1}{jun}{m}{n}{<-> ssub*gt/m/n}{}
+\DeclareFontShape{JT1}{jun}{bx}{n}{<-> ssub*gt/m/n}{}
+\DeclareFontShape{JT1}{mc}{m}{it}{<-> ssub*mc/m/n}{}
+\DeclareFontShape{JY1}{mc}{m}{it}{<-> ssub*mc/m/n}{}%% v1.4
+%
+\DeclareFontShape{JT1}{mc}{bx}{it}{<-> ssub*gt/m/n}{}%% v1.4
+\DeclareFontShape{JY1}{mc}{bx}{it}{<-> ssub*gt/m/n}{}%% v1.4
+
+
+%%%
+\DeclareFontShape{JT1}{mc}{m}{sc}{<-> ssub*mc/m/n}{}
+\DeclareFontShape{JY1}{mc}{m}{sc}{<-> ssub*mc/m/n}{}
+
+\DeclareFontShape{JY1}{mc}{m}{n}{<5>jis <6> jis
+ <7> s * [1.05571] jis
+ <8> s * [1.01625] jis
+ <9> s * [0.98556] jis
+ <10> s * [0.961] jis
+ <10.95> s * [0.94516] jis
+ <12> s * [0.98567] jis
+ <14.4> s * [0.92406] jis
+ <17.28> s * [0.85561] jis
+ <20.74> s * [0.88545] jis
+ <24.88> s * [0.9508] jis 
+ <-> jis
+ }{}
+%
+\DeclareFontShape{JY1}{gt}{m}{n}{<5>jisg <6> jisg
+ <7> s * [1.05571] jisg 
+ <8> s * [1.01625] jisg 
+ <9> s * [0.98556] jisg
+ <10> s * [0.961] jisg
+ <10.95> s * [0.94516] jisg
+ <12> s * [0.98567] jisg
+ <14.4> s * [0.92406] jisg
+ <17.28> s * [0.85561] jisg
+ <20.74> s * [0.88545] jisg
+ <24.88> s * [0.9508] jisg  
+ <-> jisg
+ }{}
+\fi
+
+
+%
+\DeclareFontShape{OT1}{cmr}{m}{n}%
+     {<-5.5>   cmr5%
+      <5.5-6.5>   cmr6%
+      <6.5-7.5>   cmr7% 
+      <7.5-8.5>   cmr8%
+      <8.5-11.5>  cmr10%
+      <11.5-16.5> cmr12%
+      <16.5->   cmr17%
+      }{}
+\DeclareFontShape{OT1}{cmr}{m}{sl}%
+     {  <-8.5>   cmsl8%
+      <8.5-9.5>  cmsl9%
+      <9.5-11.5> cmsl10%
+      <11.5->    cmsl12%
+      }{}
+\DeclareFontShape{OT1}{cmr}{m}{it}%
+     {%
+      <-7.5>     cmti7%
+      <7.5-8.5>  cmti8%
+      <8.5-9.5>  cmti9%
+      <9.5-11.5> cmti10%
+      <11.5->    cmti12%
+      }{}
+\DeclareFontShape{OT1}{cmr}{m}{sc}%
+     {%
+      <->cmcsc10%
+      }{}
+\DeclareFontShape{OT1}{cmr}{m}{ui}
+     {%
+      <-> cmu10%
+      }{}
+%%%%%%% bold series
+\DeclareFontShape{OT1}{cmr}{b}{n}
+     {%
+      <-> cmb10%
+      }{}
+%%%%%%%% bold extended series
+\DeclareFontShape{OT1}{cmr}{bx}{n}
+   {%
+      <-5.5>     cmbx5
+      <5.5-6.5>  cmbx6
+      <6.5-7.5>  cmbx7
+      <7.5-8.5>  cmbx8
+      <8.5-9.5>  cmbx9%
+      <9.5-11.5> cmbx10%
+      <11.5->    cmbx12%
+      }{}
+\DeclareFontShape{OT1}{cmr}{bx}{sl}
+      {%
+      <-> cmbxsl10%
+      }{}
+\DeclareFontShape{OT1}{cmr}{bx}{it}
+      {%
+      <-> cmbxti10%
+      }{}
+\DeclareFontShape{OT1}{cmr}{bx}{ui}
+      {<->sub*cmr/m/ui}{}
+%OMScmsy
+\DeclareFontShape{OMS}{cmsy}{m}{n}{%
+      <-5.5>    cmsy5
+      <5.5-6.5> cmsy6
+      <6.5-7.5> cmsy7
+      <7.5-8.5> cmsy8
+      <8.5-9.5> cmsy9
+      <9.5->    cmsy10%
+      }{}
+\DeclareFontShape{OMS}{cmsy}{b}{n}{%
+      <-5.5>    cmbsy5
+      <5.5-6.5> cmbsy6
+      <6.5-7.5> cmbsy7
+      <7.5-8.5> cmbsy8
+      <8.5-9.5> cmbsy9
+      <9.5->    cmbsy10%
+      }{}
+%OMXcmex
+\DeclareFontShape{OMX}{cmex}{m}{n}{%
+   <-> cmex10%
+   }{}
+%OMLcmmi
+\DeclareFontShape{OML}{cmm}{m}{it}%
+     {<-5.5>    cmmi5
+      <5.5-6.5> cmmi6
+      <6.5-7.5> cmmi7
+      <7.5-8.5> cmmi8
+      <8.5-9.5> cmmi9%
+      <9.5-11.5>cmmi10%
+      <11.5->   cmmi12%
+      }{}
+\DeclareFontShape{OML}{cmm}{b}{it}{%
+      <-5.5>    cmmib5
+      <5.5-6.5> cmmib6
+      <6.5-7.5> cmmib7
+      <7.5-8.5> cmmib8
+      <8.5-9.5> cmmib9%
+      <9.5->    cmmib10%
+      }{}
+\DeclareFontShape{OML}{cmm}{bx}{it}%
+   {<->ssub*cmm/b/it}{}
+%%OT1cmtt
+\DeclareFontShape{OT1}{cmtt}{m}{n}
+     {%
+      <-8.5>     cmtt8
+      <8.5-9.5>  cmtt9%
+      <9.5-11.5> cmtt10%
+      <11.5->    cmtt12%
+      }{}
+%%%%%% make sure subst shapes are available
+\DeclareFontShape{OT1}{cmtt}{m}{it}
+     {%
+      <-> cmitt10%
+      }{}
+\DeclareFontShape{OT1}{cmtt}{m}{sl}
+     {%
+      <-> cmsltt10%
+      }{}
+\DeclareFontShape{OT1}{cmtt}{m}{sc}
+     {%
+      <-> cmtcsc10%
+      }{}
+\DeclareFontShape{OT1}{cmtt}{m}{ui}
+  {<->ssub*cmtt/m/it}{}
+\DeclareFontShape{OT1}{cmtt}{bx}{n}
+  {<->ssub*cmtt/m/n}{}
+\DeclareFontShape{OT1}{cmtt}{bx}{it}
+  {<->ssub*cmtt/m/it}{}
+\DeclareFontShape{OT1}{cmtt}{bx}{ui}
+  {<->ssub*cmtt/m/it}{}
+%umsa
+\DeclareFontFamily{U}{msa}{}
+\DeclareFontShape{U}{msa}{m}{n}{
+  <   -5.5> msam5
+  <5.5-6.5> msam6
+  <6.5-7.5> msam7
+  <7.5-8.5> msam8
+  <8.5-9.5> msam9
+  <9.5-    > msam10
+  }{}
+\DeclareFontFamily{U}{msb}{}
+\DeclareFontShape{U}{msb}{m}{n}{
+  <   -5.5> msbm5
+  <5.5-6.5> msbm6
+  <6.5-7.5> msbm7
+  <7.5-8.5> msbm8
+  <8.5-9.5> msbm9
+  <9.5-    > msbm10
+  }{}
+
+\DeclareFontShape{OT1}{cmss}{m}{n}
+     {%
+      <-8.5>cmss8%
+      <8.5-9.5>cmss9%
+      <9.5-11.5>cmss10%
+      <11.5-16.5>cmss12%
+      <16.5->cmss17%
+      }{}
+\DeclareFontShape{OT1}{cmss}{m}{it}
+      {<->sub*cmss/m/sl}{}
+\DeclareFontShape{OT1}{cmss}{m}{sl}
+    {%
+      <-8.5>cmssi8
+      <8.5-9.5>cmssi9%
+      <9.5-11.5>cmssi10%
+      <11.5-16.5>cmssi12%
+      <16.5->cmssi17%
+      }{}
+\DeclareFontShape{OT1}{cmss}{m}{sc}
+       {<->sub*cmr/m/sc}{}
+\DeclareFontShape{OT1}{cmss}{m}{ui}
+       {<->sub*cmr/m/ui}{}
+\DeclareFontShape{OT1}{cmss}{sbc}{n}
+     {%
+      <->cmssdc10%
+     }{}
+\DeclareFontShape{OT1}{cmss}{bx}{n}
+     {%
+      <->cmssbx10%
+      }{}
+\DeclareFontShape{OT1}{cmss}{bx}{ui}
+       {<->sub*cmr/bx/ui}{}
+%%for latexsym
+\DeclareFontFamily{U}{lasy}{}
+\DeclareFontShape{U}{lasy}{m}{n}{
+ <   -5.5>lasy5
+ <5.5-6.5>lasy6
+ <6.5-7.5>lasy7
+ <7.5-8.5>lasy8
+ <8.5-9.5>lasy9
+ <9.5-    >lasy10  }{}
+\DeclareFontShape{U}{lasy}{b}{n}{ 
+     <  -10> ssub * lasy/m/n
+     <10-  > lasyb10  }{}
+%%%
+
+
+
+\ifDS@english
+\else
+%% FutoGo
+ \DeclareFontFamily{JY1}{fgb}{}
+ \DeclareFontShape{JY1}{fgb}{m}{n}{%
+ <-14> s *[0.961] FutoGoB101-Bold-J.tfm%
+ <14-> s *[1] FutoGoB101-Bold-J.tfm%
+ }{}
+ \DeclareFontFamily{JT1}{fgb}{}
+ \DeclareFontShape{JT1}{fgb}{m}{n}{%
+ <-> s *tmin10%
+ }{}
+
+%% FutoMin
+ \DeclareFontFamily{JY1}{fmb}{}
+ \DeclareFontShape{JY1}{fmb}{m}{n}{%
+ <-14> s *[0.961] FutoMinA101-Bold-J.tfm%
+ <14-> s *[1] FutoMinA101-Bold-J.tfm%
+ }{}
+ \DeclareFontFamily{JT1}{fmb}{}
+ \DeclareFontShape{JT1}{fmb}{m}{n}{%
+ <-> s *tmin10%
+ }{}
+\fi
+
+
+\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}
+
+
+\newskip\ChtE
+\newskip\CdpE
+\newskip\CwdE
+\newskip\CvsE
+
+
+
+% normalsize
+% J: 13Q x 21H
+% E: 13Q x 18H
+
+\ifDS@english
+\renewcommand{\normalsize}{%
+    \@setfontsize\normalsize{9.25pt}{12.80592pt}%
+%  \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\Chs{\wd0}
+ \setlength\ChtE{7.19269pt}
+ \setlength\CdpE{1.28441pt}
+ \setlength\CwdE{8.9005pt}
+ \setlength\CvsE{12.80592pt}
+\else
+\renewcommand{\normalsize}{%
+    \@setfontsize\normalsize{13\JQ}{21H}%
+  \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}
+\fi
+
+\ifDS@english
+\let\Cht\ChtE
+\let\Cdp\CdpE
+\let\Cwd\CwdE
+\let\Cvs\CvsE
+\else\fi
+
+
+
+% small
+% J: 12Q x 20H
+% E: 12Q x 17H
+
+\ifDS@english
+ \newcommand{\small}{%
+  \@setfontsize\small{8.53728pt}{9.960159pt}%
+%  \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}
+\else 
+\newcommand{\small}{%
+  \@setfontsize\small{12\JQ}{20H}%
+  \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}
+\fi
+
+
+% footnotesize
+% J: 11Q x 18H
+% E: 11Q x 13H
+
+\ifDS@english
+ \newcommand{\footnotesize}{%
+%  \@setfontsize\footnotesize{7.82584pt}{9.24872pt}%
+  \@setfontsize\footnotesize{7.82584pt}{9.24872pt}%
+%  \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}
+\else
+ \newcommand{\footnotesize}{%
+  \@setfontsize\footnotesize{11\JQ}{18H}%
+  \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}
+\fi
+
+
+
+\ifDS@english
+ \newcommand{\scriptsize}{\@setfontsize\scriptsize{10\Q}{12\h}}
+\else
+ \newcommand{\scriptsize}{\@setfontsize\scriptsize{10\JQ}{16H}}
+\fi
+
+ \newcommand{\tiny}{\@setfontsize\tiny\@vpt\@vipt}
+ \newcommand{\large}{\@setfontsize\large\@xpt{22\JQ}}
+ \newcommand{\Large}{\@setfontsize\Large\@xipt{27\JQ}}
+ \newcommand{\LARGE}{\@setfontsize\LARGE\@xiipt{33\JQ}}
+ \newcommand{\huge}{\@setfontsize\huge\@xivpt{25}}
+ \newcommand{\Huge}{\@setfontsize\Huge\@xviipt{30}}
+
+
+
+\setlength\floatsep    {1\Cvs \@plus .75\Cvs \@minus .25\Cvs}
+\setlength\textfloatsep{1\Cvs \@plus .75\Cvs \@minus .25\Cvs}
+\setlength\intextsep   {1\Cvs \@plus .75\Cvs \@minus .25\Cvs}
+\setlength\dblfloatsep    {12\p@ \@plus 2\p@ \@minus 2\p@}
+\setlength\dbltextfloatsep{20\p@ \@plus 2\p@ \@minus 4\p@}
+
+
+\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@
+  \itemsep4\p@ \@plus2\p@ \@minus\p@}
+\let\@listI\@listi
+\@listi
+\def\@listii{\leftmargin\leftmarginii
+   \labelwidth\leftmarginii \advance\labelwidth-\labelsep
+   \topsep  4\p@ \@plus2\p@ \@minus\p@
+   \parsep  2\p@ \@plus\p@  \@minus\p@
+   \itemsep\parsep}
+\def\@listiii{\leftmargin\leftmarginiii
+   \labelwidth\leftmarginiii \advance\labelwidth-\labelsep
+   \topsep 2\p@  \@plus\p@\@minus\p@
+   \parsep\z@
+   \partopsep \p@ \@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}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+
+
+\setlength\headheight{12\p@}
+\setlength\headsep{4.5mm}
+\ifDS@english
+\setlength\topskip{7.19269pt}%% 1\Cht
+\else
+\setlength\topskip{1\Cht}
+\fi
+%\advance\topskip by 0.14748pt%%%%%%%%%%%
+%\setlength\topskip{12.80592pt}
+%\setlength\topskip{12Q}
+\setlength\footskip{11.7mm} %
+\if@compatibility
+  \setlength\maxdepth{4\p@}
+\else
+  \setlength\maxdepth{.5\topskip}
+\fi
+\if@compatibility
+  \if@stysize
+    \ifnum\c@@paper=2 % A5
+      \if@landscape
+        \setlength\textwidth{47\Cwd}
+      \else
+        \setlength\textwidth{28\Cwd}
+      \fi
+    \else\ifnum\c@@paper=3 % B4
+      \if@landscape
+        \setlength\textwidth{75\Cwd}
+      \else
+        \setlength\textwidth{60\Cwd}
+      \fi
+    \else\ifnum\c@@paper=4 % B5
+      \if@landscape
+        \setlength\textwidth{60\Cwd}
+      \else
+        \setlength\textwidth{37\Cwd}
+      \fi
+    \else % A4 ant other
+      \if@landscape
+        \setlength\textwidth{73\Cwd}
+      \else
+        \setlength\textwidth{47\Cwd}
+      \fi
+    \fi\fi\fi
+  \else
+    \if@twocolumn
+      \setlength\textwidth{52\Cwd}
+    \else
+      \setlength\textwidth{4.3in}
+    \fi
+  \fi
+\else
+  \if@stysize
+    \if@twocolumn
+      \setlength\textwidth{.8\paperwidth}
+    \else
+      \setlength\textwidth{.7\paperwidth}
+    \fi
+  \else
+    \setlength\@tempdima{\paperwidth}
+    \addtolength\@tempdima{-2in}
+    \setlength\@tempdimb{327\p@}
+    \if@twocolumn
+      \ifdim\@tempdima>2\@tempdimb\relax
+        \setlength\textwidth{2\@tempdimb}
+      \else
+        \setlength\textwidth{\@tempdima}
+      \fi
+    \else
+      \ifdim\@tempdima>\@tempdimb\relax
+        \setlength\textwidth{\@tempdimb}
+      \else
+        \setlength\textwidth{\@tempdima}
+      \fi
+    \fi
+  \fi
+\fi
+\@settopoint\textwidth
+\if@compatibility
+  \if@stysize
+    \ifnum\c@@paper=2 % A5
+      \if@landscape
+        \setlength\textheight{17\Cvs}
+      \else
+        \setlength\textheight{28\Cvs}
+      \fi
+    \else\ifnum\c@@paper=3 % B4
+      \if@landscape
+        \setlength\textheight{38\Cvs}
+      \else
+        \setlength\textheight{57\Cvs}
+      \fi
+    \else\ifnum\c@@paper=4 % B5
+      \if@landscape
+        \setlength\textheight{22\Cvs}
+      \else
+        \setlength\textheight{35\Cvs}
+      \fi
+    \else % A4 and other
+      \if@landscape
+        \setlength\textheight{27\Cvs}
+      \else
+        \setlength\textheight{43\Cvs}
+      \fi
+    \fi\fi\fi
+    \addtolength\textheight{\topskip}
+    \addtolength\textheight{\baselineskip}
+  \else
+  \setlength\textheight{554\p@}
+  \fi
+\else
+  \if@stysize
+    \setlength\textheight{.70\paperheight}
+  \else
+    \setlength\@tempdima{\paperheight}
+    \addtolength\@tempdima{-2in}
+    \addtolength\@tempdima{-1.5in}
+    \divide\@tempdima\baselineskip
+    \@tempcnta\@tempdima
+    \setlength\textheight{\@tempcnta\baselineskip}
+  \fi
+\fi
+\addtolength\textheight{\topskip}
+\@settopoint\textheight
+\if@compatibility
+  \if@stysize
+    \setlength\topmargin{-.3in}
+  \else
+    \setlength\topmargin{.75in}
+  \fi
+\else
+  \setlength\topmargin{\paperheight}
+  \addtolength\topmargin{-\headheight}
+  \addtolength\topmargin{-\headsep}
+  \addtolength\topmargin{-\textheight}
+  \addtolength\topmargin{-\footskip}
+  \if@stysize
+    \ifnum\c@@paper=2 % A5
+      \addtolength\topmargin{-1.3in}
+    \else
+      \addtolength\topmargin{-2.0in}
+    \fi
+  \else
+    \addtolength\topmargin{-2.0in}
+  \fi
+  \addtolength\topmargin{-.5\topmargin}
+\fi
+\@settopoint\topmargin
+\if@twocolumn
+  \setlength\marginparsep{10\p@}
+\else
+  \setlength\marginparsep{10\p@}
+\fi
+\setlength\marginparpush{5\p@}
+\if@compatibility
+    \setlength\oddsidemargin   {.5in}
+    \setlength\evensidemargin  {1.5in}
+    \setlength\marginparwidth {.75in}
+  \if@twocolumn
+     \setlength\oddsidemargin  {30\p@}
+     \setlength\evensidemargin {30\p@}
+     \setlength\marginparwidth {48\p@}
+  \fi
+  \if@stysize
+    \if@twocolumn\else
+      \setlength\oddsidemargin{0\p@}
+      \setlength\evensidemargin{0\p@}
+    \fi
+  \fi
+\else
+  \setlength\@tempdima{\paperwidth}
+  \addtolength\@tempdima{-\textwidth}
+  \if@twoside
+    \setlength\oddsidemargin{.4\@tempdima}
+  \else
+    \setlength\oddsidemargin{.5\@tempdima}
+  \fi
+  \addtolength\oddsidemargin{-1in}
+  \setlength\evensidemargin{\paperwidth}
+  \addtolength\evensidemargin{-2in}
+  \addtolength\evensidemargin{-\textwidth}
+  \addtolength\evensidemargin{-\oddsidemargin}
+  \@settopoint\oddsidemargin
+  \@settopoint\evensidemargin
+  \if@twoside
+    \setlength\marginparwidth{.6\@tempdima}
+    \addtolength\marginparwidth{-.4in}
+  \else
+    \setlength\marginparwidth{.5\@tempdima}
+    \addtolength\marginparwidth{-.4in}
+  \fi
+  \ifdim \marginparwidth >2in
+    \setlength\marginparwidth{2in}
+  \fi
+  \@settopoint\marginparwidth
+\fi
+
+%
+\headheight5mm
+%
+\headsep9.5mm
+
+
+\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@enablejfam \@enablejfamtrue%
+
+\setlength\lineskip{1\p@}%
+\setlength\normallineskip{1\p@}%
+\renewcommand{\baselinestretch}{}%
+\newskip\normalbaselineskip
+
+\setlength\parskip{\z@}%
+
+
+\ifDS@english
+\setlength\parindent{1em}%
+\else
+\setlength\parindent{1zw}%
+\fi
+
+
+%penalty
+\@lowpenalty   51
+\@medpenalty  151
+\@highpenalty 301
+
+%%float
+\setcounter{topnumber}{8}
+\setcounter{bottomnumber}{8}
+\setcounter{totalnumber}{16}
+\setcounter{dbltopnumber}{2}
+
+%\renewcommand{\topfraction}{1}
+%\renewcommand{\bottomfraction}{1}
+%\renewcommand{\textfraction}{.05}
+%\renewcommand{\floatpagefraction}{.05}
+%\renewcommand{\dbltopfraction}{.95}
+%\renewcommand{\dblfloatpagefraction}{.05}
+
+\def\topfraction{1}
+\def\bottomfraction{1}
+\def\textfraction{0}
+\def\floatpagefraction{0}
+\def\dbltopfraction{1}
+\def\dblfloatpagefraction{0}
+%
+
+%=================================================================================
+
+%
+\def\SIGHead{\ifDS@english%
+{IPSJ Transactions on}%
+\else 情報凊理孊䌚論文誌\fi}%%
+
+
+\def\signame@DAM{\ifDS@english%
+Electronic Preprint for Journal of Information Processing%
+\else 情報凊理孊䌚論文誌\fi}%%
+
+\ifDS@english
+\newcommand{\COMS}{Consumer Devices \& Systems}
+\else
+\newcommand{\COMS}{コンシュヌマ・デバむス\,\&\,システム}
+\fi
+
+
+\def\signame@ACS{\ifDS@english%
+{{{\SIGHead} Advanced Computing Systems}}%
+\else {\SIGHead}\hskip12\JQ コンピュヌティングシステム\fi}%
+%
+\def\signame@PRO{\ifDS@english%
+{{{\SIGHead} Programming}}%
+\else {\SIGHead}\hskip12\JQ プログラミング\fi}%
+%
+\def\signame@TOM{\ifDS@english%
+{{{\SIGHead} Mathematical Modeling and Its Applications}}%
+\else {\SIGHead}\hskip12\JQ 数理モデル化ず応甚\fi}%
+%
+\def\signame@TOD{\ifDS@english%
+{{{\SIGHead} Databases}}%
+\else {\SIGHead}\hskip12\JQ デヌタベヌス\fi}%
+%
+\def\signame@CDS{\ifDS@english%
+{{{\SIGHead} Consumer Devices \& Systems}}%
+\else {\SIGHead}\hskip12\JQ \COMS%
+\fi}%
+%
+% v1.5
+\def\signame@DC{\ifDS@english%
+{{{\SIGHead} Digital Content}}%
+\else {\SIGHead}\hskip12\JQ デゞタルコンテンツ\fi}%
+%%%
+% v2.0
+\def\signame@DCON{\ifDS@english%
+{{{\SIGHead} Digital Content}}%
+\else {\SIGHead}\hskip12\JQ デゞタルコンテンツ\fi}%
+%%%
+\def\signame@CVA{{{{\SIGHead} Computer Vision and Applications}}}
+\def\signame@TBIO{{{{\SIGHead} Bioinformatics}}}
+\def\signame@SLDM{{{{\SIGHead} System LSI Design Methodology}}}
+\def\signame@JIP{{{Journal of Information Processing}}}
+%%%
+\let\signame@Data\signame@TBIO
+\let\signame@Survey\signame@TBIO
+%\let\signame@Research\signame@CVA
+\let\signame@Short\signame@SLDM
+%
+% v1.7
+\def\signame@TCE{\ifDS@english%
+{{{\SIGHead} Computers and Education}}%
+\else {\SIGHead}\hskip12\JQ 教育ずコンピュヌタ\fi}%
+
+
+
+
+
+%%%<<<< 1.02
+\def\signame@Research{%
+   \ifDS@CVA
+      {{\SIGHead} Computer Vision and Applications}%
+   \else
+      \ifDS@CDS%
+         \ifDS@english%
+         {{{\SIGHead} Consumer Devices \& Systems}}%
+         \else {\SIGHead}\hskip12\JQ \COMS%
+         \fi
+      \else\fi
+%%%
+      \ifDS@DCON%
+         \ifDS@english%
+         {{{\SIGHead} Digital Content}}%
+         \else {\SIGHead}\hskip12\JQ デゞタルコンテンツ%
+         \fi
+      \else\fi
+%%%
+      \ifDS@DC%
+         \ifDS@english%
+         {{{\SIGHead} Digital Content}}%
+         \else {\SIGHead}\hskip12\JQ デゞタルコンテンツ%
+         \fi
+      \else\fi
+   \fi
+}%
+%
+
+
+
+
+\def\signame{\csname signame@\@type\endcsname}
+
+\def\type#1{\def\@type{#1}}
+
+
+\def\HeadfontE{%
+\ifDS@english
+   \fontsize{13\Q}{0\h}\sffamily\bfseries\selectfont%
+\else
+   \if@submit
+   \fontsize{13\Q}{0\h}\sffamily\bfseries\selectfont%
+   \else
+   \fontsize{13\Q}{0\h}\usefont{OT1}{phv}{b}{n}\selectfont%
+   \fi
+\fi
+}
+
+
+\def\HeadfontJ{\fontsize{12\JQ}{0\h}\bfseries\selectfont}
+
+\def\DOIHeadfont{\fontsize{11\Q}{0\h}%\usefont{OT1}{phv}{m}{n}\selectfont
+\sffamily\selectfont}
+
+%============================================================
+
+
+\def\Mtype#1{\def\@type{#1}}
+
+\def\SHUBETUname{\csname SHUBETUname@\@Mtype\endcsname}
+
+
+
+\def\SHUBETUfontE{\fontsize{18\Q}{0\h}\bfseries%
+%\usefont{OT1}{ptm}{b}{n}%Times-Bold*
+\selectfont
+}
+
+\def\SHUBETUfontJ{%
+\if@submit
+\fontsize{18\JQ}{0\h}\usefont{JY1}{gt}{m}{n}%
+\selectfont%
+\else
+\fontsize{18\JQ}{0\h}\usefont{JY1}{fgb}{m}{n}%
+\selectfont%
+\fi
+}
+
+
+%v1.7
+\def\SHUBETUname@DAM{\ifDS@english%
+Regular Paper%
+\else 
+ \ifDS@TCE
+ 論{\hskip1\zw}文%
+ \fi
+\leavevmode \fi}%%
+
+
+
+
+%%%
+\def\SHUBETUname@invited{\ifDS@english%
+Invited Paper%
+\else 招埅論文\fi}
+
+
+%v1.7
+\def\SHUBETUname@sigrecommended{\ifDS@english%
+Recommended Paper%
+\else 
+ \ifDS@TCE
+ 研究䌚%
+ \fi
+掚薊論文\fi}%
+
+
+%v1.7
+\def\SHUBETUname@invitedshort{\ifDS@english%
+Invited Short Paper%
+\else 招埅ショヌトペヌパヌ\fi}%
+
+
+\def\SHUBETUname@recommendedshort{\ifDS@english%
+Recommended Short Paper%
+\else 研究䌚掚薊ショヌトペヌパヌ\fi}%
+
+
+
+\def\SHUBETUname@technote{\ifDS@english%
+Technical Note%
+\else テクニカルノヌト\fi}%
+
+
+
+\def\SHUBETUname@recommendedresearch{\ifDS@english%
+Recommended Research Paper%
+\else 掚薊研究論文\fi}%
+
+
+
+\def\SHUBETUname@recommendedpractice{\ifDS@english%
+Recommended Practice Paper%
+\else 掚薊産業論文\fi}%
+
+
+\def\SHUBETUname@recommendedcontent{\ifDS@english%
+Recommended Content Paper%
+\else 掚薊䜜品論文\fi}%
+
+
+
+
+
+
+
+
+
+%%%<<<< 4.0
+\def\SHUBETUname@abstract{\ifDS@english%
+Presentation Abstract%
+\else 発衚抂芁\fi}%
+
+
+\def\SHUBETUname@Eabstract{Presentation Abstract}
+
+
+
+
+
+\ifDS@english
+\newcommand{\COMSYS}{Paper on Consumer Systems}
+\newcommand{\COMSER}{Paper on Consumer Services}
+\newcommand{\COMSDV}{Paper on Consumer Devices}
+\newcommand{\RECCOMSDV}{Paper on Consumer Devices}%% v3.05
+\newcommand{\COMSAN}{Practice Paper}% v1.5
+\newcommand{\COMCON}{Content Paper} % v1.5
+\else
+\newcommand{\COMSYS}{コンシュヌマ・システム論文}
+\newcommand{\COMSER}{コンシュヌマ・サヌビス論文}
+\newcommand{\COMSDV}{コンシュヌマ・デバむス論文}
+\newcommand{\RECCOMSDV}{掚薊コンシュヌマ・デバむス論文}%v3.05
+\newcommand{\COMSAN}{産業論文}% v1.5
+\newcommand{\COMCON}{䜜品論文}% v1.5
+\fi
+
+
+
+\def\SHUBETUname@systems{\ifDS@english%
+\ifDS@JIP Paper (Consumer Systems)\else Paper on Consumer Systems\fi
+\else \COMSYS%
+\fi}
+
+\def\SHUBETUname@services{\ifDS@english%
+\ifDS@JIP Paper (Consumer Services)\else Paper on Consumer Services\fi
+\else \COMSER%
+\fi}
+
+\def\SHUBETUname@devices{\ifDS@english%
+\ifDS@JIP Paper (Consumer Devices)\else Paper on Consumer Devices\fi
+\else \COMSDV%
+\fi}
+
+\def\SHUBETUname@Research{\ifDS@english%
+\ifDS@JIP Regular Paper\else Research Paper\fi
+\else 研究論文\fi}
+
+
+\def\SHUBETUname@Data{Database/Software Paper}
+\def\SHUBETUname@Survey{Survey Paper}
+\def\SHUBETUname@TBIOM{Original Paper}
+
+
+%v1.7
+\def\SHUBETUname@Short{\ifDS@english%
+Short Paper%
+\else ショヌトペヌパヌ\fi}
+
+
+
+
+% v1.4
+\def\SHUBETUname@system{Systems Paper}
+
+% v1.5
+\def\SHUBETUname@Express{Express Paper}
+
+% v3.05
+\def\SHUBETUname@recommendeddevices{\ifDS@english%
+\ifDS@JIP Paper (Consumer Devices)\else Paper on Consumer Devices\fi
+\else \RECCOMSDV%
+\fi}
+
+
+
+\def\SHUBETUname@Practice{\ifDS@english%
+\ifDS@JIP Regular Paper\else Practice Paper\fi
+\else \COMSAN%
+\fi}
+
+
+\def\SHUBETUname@Content{\ifDS@english%
+\ifDS@JIP Regular Paper\else Content Paper\fi
+\else \COMCON%
+\fi}
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+
+\def\ps@plain{\let\@mkboth\@gobbletwo
+   \let\ps@jpl@in\ps@plain
+   \let\@oddhead\@empty
+   \def\@oddfoot{\reset@font\hfil\thepage\hfil}%
+   \let\@evenhead\@empty
+   \let\@evenfoot\@oddfoot}
+\let\ps@jpl@in\ps@plain
+\def\ps@headnombre{\let\@mkboth\@gobbletwo
+    \let\ps@jpl@in\ps@headnombre
+  \def\@evenhead{\thepage\hfil}%
+  \def\@oddhead{\hfil\thepage}%
+  \let\@oddfoot\@empty\let\@evenfoot\@empty}
+\def\ps@footnombre{\let\@mkboth\@gobbletwo
+    \let\ps@jpl@in\ps@footnombre
+  \def\@evenfoot{\thepage\hfil}%
+  \def\@oddfoot{\hfil\thepage}%
+  \let\@oddhead\@empty\let\@evenhead\@empty}
+
+
+\def\ps@empty{%
+ \def\@oddhead{\@Ltop\hfil\@Rtop}%
+ \let\@evenhead\@oddhead
+ \def\@oddfoot{\@Lbot\hfil\@Rbot}%
+ \let\@evenfoot\@oddfoot
+ \let\@mkboth\@gobbletwo
+}
+
+%===============================================================
+
+
+% copyright
+\DeclareTextCommandDefault{\textcopyrighttx}{%
+{\fontfamily{txsy}\textcircled{%
+\usefont{OT1}{ptm}{m}{n}\selectfont%
+c}}}
+
+
+
+\def\bothashira{%
+\ifDS@english
+ \fontsize{10\Q}{0\h}\normalfont\selectfont%
+\else
+   \if@submit
+      \fontsize{10\Q}{0\h}\normalfont\selectfont%
+   \else
+      \fontsize{10\Q}{0\h}\usefont{OT1}{ptm}{m}{n}%Times
+      \selectfont%
+   \fi
+\fi
+}
+
+
+\def\botnomble{%
+\ifDS@english
+ \fontsize{13\Q}{0\h}\normalfont\selectfont%
+\else
+   \if@submit
+      \fontsize{13\Q}{0\h}\normalfont\selectfont%
+   \else
+      \fontsize{13\Q}{0\h}\usefont{OT1}{ptm}{m}{n}%Times
+      \selectfont%
+   \fi
+\fi
+}
+
+
+
+
+
+%%%<<<< 1.02
+\ifDS@english
+\def\ps@IPSJTITLEheadings{%
+ \def\@oddhead{\@Ltop%
+\rlap{\small{%%
+%%
+\ifx\signame\relax%
+{\HeadfontE{\signame@DEF}}%%
+\else%<<<--   to TCE
+  \ifDS@JIP
+    {\HeadfontE{\signame@JIP}}%%
+  \else
+    {\HeadfontE{\signame}}%%
+  \fi
+\fi
+%%%%%
+%vol
+%%%%%
+%===============
+\hskip12\Q{\HeadfontE{Vol.\number\c@volume}}%
+%===============
+  \ifDS@CVA\relax\else
+  \ifDS@TBIO\relax\else
+  \ifDS@SLDM\relax\else
+%%%<<<< 3.03
+  \ifDS@preprint\relax\else
+  \ifDS@JIP\relax\else
+%%%%%%
+%no
+%%%%%%
+%%%<<<< 3.01
+\hskip1em{\HeadfontE{No.\number\c@number}}%
+\fi\fi\fi\fi\fi
+%%%%%%
+%page
+%%%%%%
+\bgroup
+%%%
+%
+\ifDS@ACS
+%%%<<<< 3.01
+%\hskip1em{\HeadfontE{No.\number\c@number}}%
+  \ifDS@JIP
+  \else
+     \hskip12\Q{\HeadfontE{\pageref{ipsj@firstpage}--\pageref{ipsj@lastpage}}}\ %
+     \HeadfontE{(\@monthyear)}%
+  \fi
+\else\relax\fi
+%
+\ifDS@PRO
+%%%<<<< 3.01
+%\hskip1em{\HeadfontE{No.\number\c@number}}%
+   \ifDS@abstract
+      \hskip12\Q{\HeadfontE{\pageref{ipsj@firstpage}}}\ %
+      \HeadfontE{(\@monthyear)}%
+   \else
+     \ifDS@JIP
+     \else
+       \hskip12\Q{\HeadfontE{\pageref{ipsj@firstpage}--\pageref{ipsj@lastpage}}}\ %
+       \HeadfontE{(\@monthyear)}%
+     \fi
+   \fi
+\else\relax\fi
+%
+\ifDS@TOD
+%%%<<<< 3.01
+%\hskip1em{\HeadfontE{No.\number\c@number}}%
+  \ifDS@JIP
+  \else
+     \hskip12\Q{\HeadfontE{\pageref{ipsj@firstpage}--\pageref{ipsj@lastpage}}}\ %
+     \HeadfontE{(\@monthyear)}%
+  \fi
+\else\relax\fi
+%
+\ifDS@TOM
+%%%<<<< 3.01
+%\hskip1em{\HeadfontE{No.\number\c@number}}%
+  \ifDS@JIP
+  \else
+      \hskip12\Q{\HeadfontE{\pageref{ipsj@firstpage}--\pageref{ipsj@lastpage}}}\ %
+      \HeadfontE{(\@monthyear)}%
+  \fi
+\else\relax\fi
+%
+\ifDS@TBIO
+   \hskip12\Q{\HeadfontE{\pageref{ipsj@firstpage}--\pageref{ipsj@lastpage}}}\ %
+   \HeadfontE{(\@monthyear)}%
+\else\relax\fi
+%
+\ifDS@CVA
+   \hskip12\Q{\HeadfontE{\pageref{ipsj@firstpage}--\pageref{ipsj@lastpage}}}\ %
+   \HeadfontE{(\@monthyear)}%
+\else\relax\fi
+%
+\ifDS@SLDM
+   \hskip12\Q{\HeadfontE{\pageref{ipsj@firstpage}--\pageref{ipsj@lastpage}}}\ %
+   \HeadfontE{(\@monthyear)}%
+\else\relax\fi
+%
+\ifDS@JIP
+   \hskip12\Q{\HeadfontE{\pageref{ipsj@firstpage}--\pageref{ipsj@lastpage}}}\ %
+   \HeadfontE{(\@monthyear)}%
+\else\relax\fi
+%
+\ifDS@CDS
+%%%<<<< 3.01
+%\hskip1em{\HeadfontE{No.\number\c@number}}%
+  \ifDS@JIP
+  \else
+     \hskip12\Q{\HeadfontE{\pageref{ipsj@firstpage}--\pageref{ipsj@lastpage}}}\ %
+     \HeadfontE{(\@monthyear)}%
+  \fi
+\else\relax\fi
+%
+% v1.5
+\ifDS@DC
+%%%%<<<< 3.01
+\hskip1em{\HeadfontE{No.\number\c@number}}%
+  \ifDS@JIP
+  \else
+     \hskip12\Q{\HeadfontE{\pageref{ipsj@firstpage}--\pageref{ipsj@lastpage}}}\ %
+     \HeadfontE{(\@monthyear)}%
+  \fi
+\else\relax\fi
+%
+% v2.0
+\ifDS@DCON
+%%%<<<< 3.01
+%\hskip1em{\HeadfontE{No.\number\c@number}}%
+  \ifDS@JIP
+  \else
+     \hskip12\Q{\HeadfontE{\pageref{ipsj@firstpage}--\pageref{ipsj@lastpage}}}\ %
+     \HeadfontE{(\@monthyear)}%
+  \fi
+\else\relax\fi
+%
+% v1.7
+\ifDS@TCE%% invitedshort,recommendedshort
+%%%<<<< 3.01
+%\hskip1em{\HeadfontE{No.\number\c@number}}%
+  \ifDS@JIP
+  \else
+     \hskip12\Q{\HeadfontE{\pageref{ipsj@firstpage}--\pageref{ipsj@lastpage}}}\ %
+     \HeadfontE{(\@monthyear)}%
+  \fi
+\else\relax\fi
+%%%
+\egroup
+}%
+}%
+%%%%%
+\smash{\raisebox{-6mm}{\rlap{%
+{\DOIHeadfont%
+%%%%
+\bgroup
+\ifDS@TBIO
+   [DOI: 10.2197/ipsjtbio.\number\c@volume.\pageref{ipsj@firstpage}]
+\else\fi
+%
+\ifDS@CVA
+   [DOI: 10.2197/ipsjtcva.\number\c@volume.\pageref{ipsj@firstpage}]
+\else\fi
+%
+\ifDS@SLDM
+   [DOI: 10.2197/ipsjtsldm.\number\c@volume.\pageref{ipsj@firstpage}]
+\else\fi
+%
+\ifDS@JIP
+   [DOI: 10.2197/ipsjjip.\number\c@volume.\pageref{ipsj@firstpage}]
+\else\fi
+%
+%%
+%%
+%%%%%
+\egroup
+}%
+}}}%
+\hfil\@Rtop}%
+%%%%%
+ \let\@evenhead\@oddhead
+ \def\@oddfoot{\@Lbot%
+\rlap{%\fontsize{10\Q}{0\h}%
+%\usefont{OT1}{ptm}{m}{n}%Times
+%\selectfont%
+%\normalfont%
+{\bothashira%
+\copyright \ {\@footyear} Information Processing Society of Japan%
+}}%
+\hfil
+%\fontsize{13\Q}{0\h}%
+%\usefont{OT1}{ptm}{m}{n}%Times
+%\selectfont%
+%\normalsize
+{\botnomble
+%%%%%%
+\ifDS@ACS{\ifDS@JIP\else\thepage\fi}\else\fi
+\ifDS@PRO{\ifDS@JIP\else\thepage\fi}\else\fi
+\ifDS@TOD{\ifDS@JIP\else\thepage\fi}\else\fi
+\ifDS@TOM{\ifDS@JIP\else\thepage\fi}\else\fi
+\ifDS@TBIO{\thepage}\else\fi
+\ifDS@CVA{\thepage}\else\fi
+\ifDS@SLDM{\thepage}\else\fi
+\ifDS@JIP{\thepage}\else\fi
+\ifDS@CDS{\ifDS@JIP\else\thepage\fi}\else\fi
+\ifDS@DC{\ifDS@JIP\else\thepage\fi}\else\fi
+\ifDS@DCON{\ifDS@JIP\else\thepage\fi}\else\fi
+\ifDS@TCE{\ifDS@JIP\else\thepage\fi}\else\fi
+%<<<<<<<<<<< 3.02
+%\ifDS@invitedshort{\thepage}\else\fi % v1.7
+%\ifDS@recommendedshort{\thepage}\else\fi % v1.7
+%%%%%
+\@Rbot}%
+ \let\@evenfoot\@oddfoot
+ \let\@mkboth\@gobbletwo
+}}
+%%%
+%%%%%%%%%
+\else
+%%%%%%%%%
+%%%
+\def\ps@IPSJTITLEheadings{%
+ \def\@oddhead{\@Ltop%
+\rlap{\small%
+%%
+\ifx\signame\relax%
+{\HeadfontJ{\signame@DEF}}%%
+\else
+{\HeadfontJ{\signame}}%%
+\fi
+%%%%%
+{%%
+\hskip12\JQ{\HeadfontE{Vol.\number\c@volume}}%
+\hskip12\JQ{\HeadfontE{No.\number\c@number}}% jp1p
+\ifDS@abstract
+   \hskip12\Q{\HeadfontE{\pageref{ipsj@firstpage}}}\ %
+   \HeadfontE{(\@monthyear)}%
+\else
+\hskip12\JQ{\HeadfontE{\pageref{ipsj@firstpage}--\pageref{ipsj@lastpage}}}\ %
+\HeadfontE{(\@monthyear)}%
+\fi
+}}%
+%%%%
+\smash{\raisebox{-6mm}{\rlap{%
+{\DOIHeadfont%%
+}%
+}}}%
+\hfil\@Rtop}%
+%%
+ \let\@evenhead\@oddhead
+ \def\@oddfoot{\@Lbot%
+\rlap{%
+%\fontsize{10\Q}{0\h}\usefont{OT1}{ptm}{m}{n}%Times
+%\selectfont%
+{\bothashira%
+{\textcopyrighttx} \ {\@footyear} Information Processing Society of Japan%
+}}%
+\hfil%
+%\fontsize{13\Q}{0\h}%
+%\usefont{OT1}{ptm}{m}{n}%Times
+%\selectfont%
+{\botnomble%
+{\thepage}}%
+\@Rbot}%
+ \let\@evenfoot\@oddfoot
+ \let\@mkboth\@gobbletwo
+}
+\fi
+
+
+
+
+
+
+
+
+%===================================================================
+%%%
+\ifDS@english
+\def\ps@headings{%
+ \def\@oddhead{\@Ltop%
+\rlap{\small{%%
+%%
+\ifx\signame\relax%
+{\HeadfontE{\signame@DEF}}%%
+\else%<<<--   to TCE
+  \ifDS@JIP
+    {\HeadfontE{\signame@JIP}}%%
+  \else
+    {\HeadfontE{\signame}}%%
+  \fi
+\fi
+%%%%%
+%vol
+%%%%%
+%===============
+\hskip12\Q{\HeadfontE{Vol.\number\c@volume}}%
+%===============
+  \ifDS@CVA\relax\else
+  \ifDS@TBIO\relax\else
+  \ifDS@SLDM\relax\else
+%%%<<<< 3.03
+  \ifDS@preprint\relax\else
+  \ifDS@JIP\relax\else
+%%%%%%
+%no
+%%%%%%
+%%%<<<< 3.01
+\hskip1em{\HeadfontE{No.\number\c@number}}%
+\fi\fi\fi\fi\fi
+%%%%%%
+%page
+%%%%%%
+\bgroup
+%%%
+%
+\ifDS@ACS
+%%%<<<< 3.01
+%\hskip1em{\HeadfontE{No.\number\c@number}}%
+  \ifDS@JIP
+  \else
+     \hskip12\Q{\HeadfontE{\pageref{ipsj@firstpage}--\pageref{ipsj@lastpage}}}\ %
+     \HeadfontE{(\@monthyear)}%
+  \fi
+\else\relax\fi
+%
+\ifDS@PRO
+%%%<<<< 3.01
+%\hskip1em{\HeadfontE{No.\number\c@number}}%
+     \ifDS@JIP
+     \else
+       \hskip12\Q{\HeadfontE{\pageref{ipsj@firstpage}--\pageref{ipsj@lastpage}}}\ %
+       \HeadfontE{(\@monthyear)}%
+     \fi
+\else\relax\fi
+%
+\ifDS@TOD
+%%%<<<< 3.01
+%\hskip1em{\HeadfontE{No.\number\c@number}}%
+  \ifDS@JIP
+  \else
+     \hskip12\Q{\HeadfontE{\pageref{ipsj@firstpage}--\pageref{ipsj@lastpage}}}\ %
+     \HeadfontE{(\@monthyear)}%
+  \fi
+\else\relax\fi
+%
+\ifDS@TOM
+%%%<<<< 3.01
+%\hskip1em{\HeadfontE{No.\number\c@number}}%
+  \ifDS@JIP
+  \else
+     \hskip12\Q{\HeadfontE{\pageref{ipsj@firstpage}--\pageref{ipsj@lastpage}}}\ %
+     \HeadfontE{(\@monthyear)}%
+  \fi
+\else\relax\fi
+%
+\ifDS@TBIO
+   \hskip12\Q{\HeadfontE{\pageref{ipsj@firstpage}--\pageref{ipsj@lastpage}}}\ %
+   \HeadfontE{(\@monthyear)}%
+\else\relax\fi
+%
+\ifDS@CVA
+   \hskip12\Q{\HeadfontE{\pageref{ipsj@firstpage}--\pageref{ipsj@lastpage}}}\ %
+   \HeadfontE{(\@monthyear)}%
+\else\relax\fi
+%
+\ifDS@SLDM
+   \hskip12\Q{\HeadfontE{\pageref{ipsj@firstpage}--\pageref{ipsj@lastpage}}}\ %
+   \HeadfontE{(\@monthyear)}%
+\else\relax\fi
+%
+\ifDS@JIP
+   \hskip12\Q{\HeadfontE{\pageref{ipsj@firstpage}--\pageref{ipsj@lastpage}}}\ %
+   \HeadfontE{(\@monthyear)}%
+\else\relax\fi
+%
+\ifDS@CDS
+%%%<<<< 3.01
+%\hskip1em{\HeadfontE{No.\number\c@number}}%
+  \ifDS@JIP
+  \else
+     \hskip12\Q{\HeadfontE{\pageref{ipsj@firstpage}--\pageref{ipsj@lastpage}}}\ %
+     \HeadfontE{(\@monthyear)}%
+  \fi
+\else\relax\fi
+%
+% v1.5
+\ifDS@DC
+%%%<<<< 3.01
+%\hskip1em{\HeadfontE{No.\number\c@number}}%
+  \ifDS@JIP
+  \else
+     \hskip12\Q{\HeadfontE{\pageref{ipsj@firstpage}--\pageref{ipsj@lastpage}}}\ %
+     \HeadfontE{(\@monthyear)}%
+  \fi
+\else\relax\fi
+%
+% v2.0
+\ifDS@DCON
+%%%<<<< 3.01
+%\hskip1em{\HeadfontE{No.\number\c@number}}%
+  \ifDS@JIP
+  \else
+     \hskip12\Q{\HeadfontE{\pageref{ipsj@firstpage}--\pageref{ipsj@lastpage}}}\ %
+     \HeadfontE{(\@monthyear)}%
+  \fi
+\else\relax\fi
+%
+% v1.7
+\ifDS@TCE%% invitedshort,recommendedshort
+%%%<<<< 3.01
+%\hskip1em{\HeadfontE{No.\number\c@number}}%
+  \ifDS@JIP
+  \else
+     \hskip12\Q{\HeadfontE{\pageref{ipsj@firstpage}--\pageref{ipsj@lastpage}}}\ %
+     \HeadfontE{(\@monthyear)}%
+  \fi
+\else\relax\fi
+%
+%
+%%%
+\egroup
+}%
+}%
+%%%%%
+\smash{\raisebox{-6mm}{\rlap{%
+{\DOIHeadfont%
+%%%%
+}%
+}}}%
+\hfil\@Rtop}%
+%%%%%
+ \let\@evenhead\@oddhead
+ \def\@oddfoot{\@Lbot%
+\rlap{%
+%\fontsize{10\Q}{0\h}\usefont{OT1}{ptm}{m}{n}%Times
+%\selectfont%
+{\bothashira%
+\copyright \ {\@footyear} Information Processing Society of Japan%
+}}%
+\hfil
+%\fontsize{13\Q}{0\h}\usefont{OT1}{ptm}{m}{n}%Times
+%\selectfont%
+{\botnomble%
+%%%%%%
+\ifDS@ACS{\ifDS@JIP\else\thepage\fi}\else\fi
+\ifDS@PRO{\ifDS@JIP\else\thepage\fi}\else\fi
+\ifDS@TOD{\ifDS@JIP\else\thepage\fi}\else\fi
+\ifDS@TOM{\ifDS@JIP\else\thepage\fi}\else\fi
+\ifDS@TBIO{\thepage}\else\fi
+\ifDS@CVA{\thepage}\else\fi
+\ifDS@SLDM{\thepage}\else\fi
+\ifDS@JIP{\thepage}\else\fi
+\ifDS@CDS{\ifDS@JIP\else\thepage\fi}\else\fi
+\ifDS@DC{\ifDS@JIP\else\thepage\fi}\else\fi
+\ifDS@DCON{\ifDS@JIP\else\thepage\fi}\else\fi
+\ifDS@TCE{\ifDS@JIP\else\thepage\fi}\else\fi
+%<<<<<<<<<<< 3.02
+%\ifDS@invitedshort{\thepage}\else\fi % v1.7
+%\ifDS@recommendedshort{\thepage}\else\fi % v1.7
+%
+%
+%
+%\ifDS@ACS{\thepage}\else\fi
+%\ifDS@PRO{\ifDS@JIP\else\thepage\fi}\else\fi
+%\ifDS@TOD{\thepage}\else\fi
+%\ifDS@TOM{\thepage}\else\fi
+%\ifDS@TBIO{\thepage}\else\fi
+%\ifDS@CVA{\thepage}\else\fi
+%\ifDS@SLDM{\thepage}\else\fi
+%\ifDS@JIP{\thepage}\else\fi
+%\ifDS@CDS{\thepage}\else\fi
+%\ifDS@DC{\thepage}\else\fi % v1.5
+%\ifDS@TCE{\thepage}\else\fi % v1.7
+%\ifDS@invitedshort{\thepage}\else\fi % v1.7
+%\ifDS@recommendedshort{\thepage}\else\fi % v1.7
+%%%%%
+\@Rbot}}%
+ \let\@evenfoot\@oddfoot
+ \let\@mkboth\@gobbletwo
+}
+%%%
+%%%%%%%%%
+\else
+%%%%%%%%%
+%%%
+\def\ps@headings{%
+ \def\@oddhead{\@Ltop%
+\rlap{\small%
+%%
+\ifx\signame\relax%
+{\HeadfontJ{\signame@DEF}}%%
+\else
+{\HeadfontJ{\signame}}%%
+\fi
+%%%%%
+{%%
+\hskip12\JQ{\HeadfontE{Vol.\number\c@volume}}%
+\hskip12\JQ{\HeadfontE{No.\number\c@number}}% jp
+\hskip12\JQ{\HeadfontE{\pageref{ipsj@firstpage}--\pageref{ipsj@lastpage}}}\ %
+\HeadfontE{(\@monthyear)}}}%
+%%%%
+\smash{\raisebox{-6mm}{\rlap{%
+{\DOIHeadfont%%
+}%
+}}}%
+\hfil\@Rtop}%
+%%
+ \let\@evenhead\@oddhead
+ \def\@oddfoot{\@Lbot%
+\rlap{%\fontsize{10\Q}{0\h}\usefont{OT1}{ptm}{m}{n}%Times
+%\selectfont%
+{\bothashira%
+{\textcopyrighttx} \ {\@footyear} Information Processing Society of Japan%
+}}%
+\hfil%
+%\fontsize{13\Q}{0H}\usefont{OT1}{ptm}{m}{n}%Times
+%\selectfont%
+{\botnomble%
+{\thepage}}%
+\@Rbot}%
+ \let\@evenfoot\@oddfoot
+ \let\@mkboth\@gobbletwo
+}
+\fi
+
+
+
+
+
+
+
+%%%<<<< 1.02
+
+\def\ipsj@year{%
+%%%
+\ifDS@JIP
+\ifnum\c@year<\z@
+\c@year1992 \advance\c@year\c@volume 
+\fi\fi
+%%%
+\ifDS@EEE
+\ifnum\c@year<\z@
+\c@year1992 \advance\c@year\c@volume 
+\fi\fi
+\ifDS@ACS 
+\ifnum\c@year<\z@
+\c@year2007 \advance\c@year\c@volume 
+\fi\fi
+\ifDS@PRO
+\ifnum\c@year<\z@
+\c@year2007 \advance\c@year\c@volume 
+\fi\fi
+\ifDS@TOD
+\ifnum\c@year<\z@
+\c@year2007 \advance\c@year\c@volume 
+\fi\fi
+\ifDS@TOM
+\ifnum\c@year<\z@
+\c@year2007 \advance\c@year\c@volume 
+\fi\fi
+\ifDS@TBIO
+\ifnum\c@year<\z@
+\c@year2007 \advance\c@year\c@volume 
+\fi\fi
+\ifDS@CVA
+\ifnum\c@year<\z@
+\c@year2008 \advance\c@year\c@volume %!!
+\fi\fi
+\ifDS@SLDM
+\ifnum\c@year<\z@
+\c@year2007 \advance\c@year\c@volume 
+\fi\fi
+\ifDS@CDS
+\ifnum\c@year<\z@
+\c@year2010 \advance\c@year\c@volume 
+\fi\fi
+\ifDS@DC % v1.5
+\ifnum\c@year<\z@
+\c@year2012 \advance\c@year\c@volume 
+\fi\fi
+\ifDS@DCON % v2.0
+\ifnum\c@year<\z@
+\c@year2012 \advance\c@year\c@volume 
+\fi\fi
+\ifDS@TCE % v1.5
+\ifnum\c@year<\z@
+\c@year2014 \advance\c@year\c@volume 
+\fi\fi
+%%
+%===
+\ifnum\c@year<\z@
+\c@year2022 \advance\c@year\c@volume 
+\fi
+\number\c@year
+%===
+}
+
+
+
+
+%%%<<<< 1.02
+%%%<<<< 1.09
+%%%<<<< 3.01
+\def\ipsj@month{{%
+	\@tempcnta\ifDS@online\ipsj@olh@month \else
+		\ifnum\c@month<\z@ \c@number \else \c@month \fi \fi \relax
+   %\ifDS@JIP
+	%\ifcase\@tempcnta???\or Jan.\or Mar.\or May\or July\or Sep.\or Nov.\else
+	%	???\fi
+   %\else   
+	\ifcase\@tempcnta???\or Jan.\or Feb.\or Mar.\or Apr.\or May\or
+		June\or July\or Aug.\or Sep.\or Oct.\or Nov.\or Dec.\else
+		???\fi
+   %\fi
+}}
+
+
+
+
+
+\def\@monthyear{\ipsj@month \hskip.5\Cwd \ipsj@year}
+
+\def\@footyear{\ipsj@year}
+
+
+\newcounter{volume} \c@volume\z@
+\newcounter{number} \c@number\z@
+\newcounter{month} \c@month\m@ne
+\newcounter{year} \c@year\m@ne
+				
+
+\expandafter\let\csname c@巻数\endcsname\c@volume
+\expandafter\let\csname c@号数\endcsname\c@number
+\expandafter\let\csname c@月数\endcsname\c@month
+\expandafter\let\csname c@幎数\endcsname\c@year
+
+
+
+\AtBeginDocument{\label{ipsj@firstpage}}
+\AtEndDocument{%
+ \clearpage
+ \addtocounter{page}{-1}%
+ \immediate\write\@auxout
+  {\string\newlabel{ipsj@lastpage}{{}{\thepage}}}%
+}
+
+
+%==========================================================================================================================
+
+
+\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\p@thanks#1{\footnotemark
+  \protected@xdef\@thanks{\@thanks
+    \protect{\noindent$\m@th^\thefootnote$~#1\protect\par}}}
+
+
+
+%=================================================================================
+% author,affiliate
+%=================================================================================
+
+\newcount\author@count
+\newcount\label@count
+\newcount\email@count
+\newcount\affiliate@count
+\newcount\offsetemail
+\newcount\paffiliate@count
+
+
+
+\ifDS@english
+\def\author#1#2{%
+\@ifnextchar[%
+{\@author{#1}{#2}}
+{\@author{#1}{#2}[]}
+}
+%====
+\else
+%====
+\def\author#1#2#3{%
+\@ifnextchar[%
+{\@author{#1}{#2}{#3}}
+{\@author{#1}{#2}{#3}[]}
+}
+\fi
+
+
+
+\ifDS@english
+\def\@author#1#2[#3]{%
+ \advance\author@count\@ne
+\expandafter\def\csname authorname\the\author@count\endcsname{#1}
+%%
+\edef\@labellist{\zap@space#2 \@empty}
+\@for\@temp:=\@labellist\do{%
+ \advance\label@count\@ne
+\expandafter\edef\csname authorlabel\the\author@count @\the\label@count\endcsname{\@temp}}
+\expandafter\edef\csname authorlabel@num@\the\author@count \endcsname{\the\label@count}
+\label@count\z@
+\def\_{\leavevmode \kern.06em\vbox{\hrule\@width.3em}}%%%!!!!
+\edef\@emaillist{\zap@space#3 \@empty}
+\@for\@temp:=\@emaillist\do{%
+ \advance\email@count\@ne
+\expandafter\edef\csname authoremail\the\author@count @\the\email@count\endcsname{\@temp}%
+}%
+\expandafter\edef\csname authoremail@num@\the\author@count \endcsname{\the\email@count}%
+\email@count\z@
+}%
+%===
+\else
+%===
+\def\@author#1#2#3[#4]{%
+ \advance\author@count\@ne
+\expandafter\def\csname authorname\the\author@count\endcsname{#1}
+%%
+\expandafter\def\csname eauthorname\the\author@count\endcsname{#2}
+%%
+\edef\@labellist{\zap@space#3 \@empty}
+\@for\@temp:=\@labellist\do{%
+ \advance\label@count\@ne
+\expandafter\edef\csname authorlabel\the\author@count @\the\label@count\endcsname{\@temp}}
+\expandafter\edef\csname authorlabel@num@\the\author@count \endcsname{\the\label@count}
+\label@count\z@
+%%
+\def\_{\leavevmode \kern.06em\vbox{\hrule\@width.3em}}%%%!!!!
+\edef\@emaillist{\zap@space#4 \@empty}
+\@for\@temp:=\@emaillist\do{%
+ \advance\email@count\@ne
+\expandafter\edef\csname authoremail\the\author@count @\the\email@count\endcsname{\@temp}}
+\expandafter\edef\csname authoremail@num@\the\author@count \endcsname{\the\email@count}
+\email@count\z@
+}
+\fi
+
+
+
+
+
+
+
+
+
+\def\affiliate#1#2{%
+%\expandafter\def\csname affiliate@#1\endcsname{#2}
+\advance\affiliate@count\@ne
+\expandafter\edef\csname affiliate@num@#1\endcsname{\the\affiliate@count}%
+%\typeout{>>>>>>\csname affiliate@1\endcsname}
+\expandafter\def\csname affiliate@\the\affiliate@count\endcsname{#2}%
+}
+
+
+\def\paffiliate#1#2{%
+%\advance\affiliate@count\@ne
+\advance\paffiliate@count\@ne
+\expandafter\edef\csname paffiliate@num@#1\endcsname{$\dagger$\the\paffiliate@count}%
+\expandafter\def\csname paffiliate@\the\paffiliate@count\endcsname{#2}%
+}
+
+
+
+\def\authoroutput#1{%
+%\begin{center}
+\bgroup
+\offsetemail\z@
+\count@\@ne
+\advance\author@count\@ne
+%%%
+%%%
+%%%
+\@whilenum{\count@<\author@count}\do{%
+\mbox{% start
+%
+%% \csname #1authorfont\endcsname%% !! font
+%
+\ifDS@english
+   \csname authorname\the\count@\endcsname %\csname affiliate@num@\endcsname
+\else
+   \csname #1authorname\the\count@\endcsname %\csname affiliate@num@\endcsname
+\fi
+%%%%%label
+\null{}%
+\expandafter\@tempcnta\csname authorlabel@num@\the\count@\endcsname
+   \advance\@tempcnta\@ne
+   \@tempcntb\@ne
+{%
+   \@whilenum{\@tempcntb<\@tempcnta}\do{%
+      \edef\temp{\csname authorlabel\the\count@ @\the\@tempcntb\endcsname}%
+      \textsuperscript{\csname #1labelfont\endcsname%% !! font
+%%%change from here
+%%%add paffiliate
+%         \expandafter\if\csname affiliate@num@\temp\endcsname\relax %% v1.06
+         \expandafter\ifx\csname affiliate@num@\temp\endcsname\relax
+            \csname paffiliate@num@\temp\endcsname%%affiliate
+         \else
+            \csname affiliate@num@\temp\endcsname
+         \fi
+%%%end
+         \comma@or@relax@affilabel}%
+      \advance\@tempcntb\@ne
+}%
+}%
+%%%%%%email
+\expandafter\@tempcnta\csname authoremail@num@\the\count@\endcsname\relax
+   \ifnum\@tempcnta=\z@\relax\else\textsuperscript{,}\fi
+   \advance\@tempcnta\@ne
+   \@tempcntb\@ne
+   \@whilenum{\@tempcntb<\@tempcnta}\do{%
+         %\textsuperscript{\space}%
+      \bgroup
+         \advance\@tempcntb\offsetemail
+         \textsuperscript{\csname #1labelfont\endcsname%% !! font
+            \@alph{\@tempcntb}\rparen\comma@or@relax@email}%
+      \egroup
+      \advance\@tempcntb\@ne
+   }%
+\advance\@tempcntb-1\relax
+\global\advance\offsetemail\@tempcntb
+%
+}%% end
+%%
+\csname #1break@or@oneskip\endcsname
+%%
+\advance\count@\@ne
+%%%
+}%
+%%%%%%
+%\end{center}%
+\egroup
+}
+
+
+
+
+
+
+
+\def\breakauthorline#1{%
+   \edef\temp@break{\zap@space#1 \@empty}
+   \@for\@temp:=\temp@break\do{%
+      \expandafter\def\csname break@\@temp\endcsname{\\}%
+   }%
+}
+
+\def\breakeauthorline#1{%
+   \edef\temp@break{\zap@space#1 \@empty}
+   \@for\@temp:=\temp@break\do{%
+      \expandafter\def\csname ebreak@\@temp\endcsname{\\}%
+   }%
+}
+
+\def\break@or@oneskip{%
+   \expandafter\ifx\csname break@\the\count@\endcsname\relax
+\ifDS@english
+\hskip1em \else \hskip1zw \fi
+   \else 
+      \csname break@\the\count@\endcsname
+   \fi
+}
+
+\def\ebreak@or@oneskip{%
+   \expandafter\ifx\csname ebreak@\the\count@\endcsname\relax
+\ifDS@english
+\hskip1em \else \hskip1zw \fi
+   \else 
+      \csname ebreak@\the\count@\endcsname
+   \fi
+}
+
+
+
+\ifDS@english
+\let\breakauthorline\breakeauthorline
+\else\fi
+
+
+
+%%(
+\def\rparen{)}%%
+
+
+
+\def\comma@or@relax@affilabel{%
+   \bgroup
+   \count@\@tempcnta
+   \advance\count@\m@ne
+   \ifnum\count@=\@tempcntb
+      \relax
+   \else
+      ,%\space
+   \fi
+   \egroup
+}
+
+\def\comma@or@relax@email{%
+   \bgroup
+   \count@\@tempcnta
+   \advance\count@\m@ne
+   \advance\@tempcntb-\offsetemail
+   \ifnum\count@=\@tempcntb
+      \relax
+   \else
+      ,%\space
+   \fi
+   \egroup
+}
+
+
+
+
+
+
+
+
+%=================================================================================
+% maketitle
+%=================================================================================
+
+
+
+\def\maketitle{\par
+  \begingroup
+    \renewcommand{\thefootnote}{\fnsymbol{footnote}}%
+    \def\@makefnmark{\hbox{\ifydir $\m@th^{\@thefnmark}$
+      \else\hbox{\yoko$\m@th^{\@thefnmark}$}\fi}}%
+     \long\def\@makefntext##1{\parindent 1em\noindent
+       \hbox to1.8em{\hss$\m@th^{\@thefnmark}$}##1}%
+    \if@twocolumn
+      \ifnum \col@number=\@ne \@maketitle
+      \else \twocolumn[\@maketitle]%
+      \fi
+    \else
+      \newpage
+      \global\@topnum\z@   % Prevents figures from going at top of page.
+      \@maketitle
+    \fi
+     \thispagestyle{IPSJTITLEheadings}
+\@thanks
+  \endgroup
+  \setcounter{footnote}{0}%
+  \global\let\thanks\relax
+  \global\let\maketitle\relax
+  \global\let\p@thanks\relax
+  \global\let\@thanks\@empty
+  \global\let\@author\@empty
+  \global\let\@eauthor\@empty
+  \global\let\@date\@empty
+  \global\let\@title\@empty
+  \global\let\title\relax
+  \global\let\@etitle\@empty
+  \global\let\etitle\relax
+%%%
+  \global\let\author\relax
+  \global\let\eauthor\relax
+  \global\let\date\relax
+  \global\let\and\relax
+%%%
+% affiliate
+%%%
+\bgroup
+\setcounter{footnote}{0}
+\def\thefootnote{\@arabic{\c@footnote}\protect\hphantom{\rparen}}
+\advance\affiliate@count\@ne
+\count@\@ne
+\@whilenum{\count@<\affiliate@count}\do{%
+   \refstepcounter{footnote}
+   \footnotetext{\csname affiliate@\the\count@\endcsname}%
+   \advance\count@\@ne
+}%
+\egroup
+%%%
+% paffiliate
+%%%
+\bgroup
+\setcounter{footnote}{0}
+\def\thefootnote{$\dagger$\@arabic{\c@footnote}\protect\hphantom{\rparen}}
+\advance\paffiliate@count\@ne
+\count@\@ne
+\@whilenum{\count@<\paffiliate@count}\do{%
+   \refstepcounter{footnote}
+%%%%
+ \ifDS@english
+   \footnotetext{%
+Presently with\ %
+\csname paffiliate@\the\count@\endcsname}%
+ \else
+  \footnotetext{%
+\def\\{\newline Presently with \ignorespaces}%
+珟圚\csname paffiliate@\the\count@\endcsname}%
+  \fi%
+   \advance\count@\@ne
+}%
+\egroup
+%%%
+%=====
+% email
+%=====
+\bgroup
+\setcounter{footnote}{0}
+\def\thefootnote{\@alph{\c@footnote}\rparen}
+\count@\@ne
+\advance\author@count\@ne
+   \@whilenum{\count@<\author@count}\do{%
+      \expandafter\@tempcntb\csname authoremail@num@\the\count@ \endcsname      
+      \advance\@tempcntb\@ne
+      \@tempcnta\@ne
+      \@whilenum{\@tempcnta<\@tempcntb}\do{%
+      \refstepcounter{footnote}
+      \footnotetext{\csname authoremail\the\count@ @\the\@tempcnta\endcsname}%
+      \advance\@tempcnta\@ne
+      }%
+   \advance\count@\@ne
+   }%
+\egroup
+%=================
+\setcounter{footnote}{0}
+  }
+%%%
+
+
+
+
+
+
+%=================================================================================
+% @maketitle
+%=================================================================================
+
+%%
+\newskip\shubetutitlesep 
+\newskip\JEhonbunsep
+
+\shubetutitlesep=6.2mm% default 10mm
+\JEhonbunsep=13.7mm % default 15mm
+
+\newskip\Etitleauthorsep 
+\newskip\Eauthorreceivesep
+\newskip\Ereceiveabstsep
+\newskip\Eabstkeywordsep
+
+\Etitleauthorsep=10mm% default 12.5mm
+\Eauthorreceivesep=5.5mm% default 7mm
+\Ereceiveabstsep=2.5mm% default 6mm
+\Eabstkeywordsep=4mm % default 5mm
+
+%
+\newskip\Jtitlejauthorsep 
+\newskip\Jauthorjreceivesep
+\newskip\Jreceivejabstsep
+\newskip\Jabstsepjkeyword
+\newskip\Jkeywordetitle
+\newskip\Jetitleeauthor
+\newskip\Jeauthorereceivesep
+\newskip\Jereceiveeabstsep
+\newskip\Jeabstekeywordsep
+
+\Jtitlejauthorsep=9mm% default 10mm
+\Jauthorjreceivesep=6.5mm% default 7mm
+\Jreceivejabstsep=2.5mm% default 5mm
+\Jabstsepjkeyword=5.5mm % default 5mm
+\Jkeywordetitle=14.2mm % default 16mm
+\Jetitleeauthor=5.5mm% default 7mm
+\Jeauthorereceivesep=5.5mm% default 6.5mm
+\Jereceiveeabstsep=1.5mm% default 4.5mm
+\Jeabstekeywordsep=5mm % default 5mm
+
+%======================================================
+
+
+
+\def\@maketitle{%
+\newpage\null
+%%%%%%%%%%
+\ifDS@english
+%%
+\vskip-1.3mm%
+\ifx\SHUBETUname\relax%
+{\SHUBETUfontE{\SHUBETUname@DEF}}%%
+\else
+{\SHUBETUfontE{\SHUBETUname}}%%
+\fi
+%%
+\else
+\ifx\SHUBETUname\relax%
+{\SHUBETUfontJ{\SHUBETUname@DEF}}%%
+\else
+{\SHUBETUfontJ{\SHUBETUname}}%%
+\fi\fi
+%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%
+\vskip\shubetutitlesep% 
+%%%%%%%%%%%%%%%%%%%%%%%%
+%%
+%\vskip 10mm%
+\begin{center}
+\authortitle %%<---
+\end{center}
+%%%%%%%%%%%%%%%%%%%
+%
+}
+
+
+
+\ifDS@english
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\def\authortitle{%
+{\Engtitlefont%
+{\@title}\par}
+%%%%%%%%%%%%%%%%%%%%%%%
+\vskip\Etitleauthorsep% 
+%%%%%%%%%%%%%%%%%%%%%%%
+%% author %%%
+{\Engeauthorfont%
+\authoroutput{e}\par}%
+%%%%%%%%%%%%%%%%%%%%%%%%%
+\vskip\Eauthorreceivesep% 
+%%%%%%%%%%%%%%%%%%%%%%%%%
+{\Enguketukefont%
+{\@uketsuke}\par}%
+%%%%%%%%%%%%%%%%%%%%%%%
+\vskip\Ereceiveabstsep% 
+%%%%%%%%%%%%%%%%%%%%%%%
+\mbox{\box\@abstractbox}\par%
+%%%%%%%%%%%%%%%%%%%%%%%
+\vskip\Eabstkeywordsep% 
+%%%%%%%%%%%%%%%%%%%%%%%
+\let\@keywordbox\@ekeywordbox
+\mbox{\box\@ekeywordbox}\par%
+%%%%%%%%%%%%%%%%%%%
+\vskip\JEhonbunsep%
+%%%%%%%%%%%%%%%%%%%
+}
+%===========
+\else
+%==========
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\def\authortitle{%
+{\jtitlefont%
+{\@title}\par}%
+%%%%%%%%%%%%%%%%%%%%%%%%
+\vskip\Jtitlejauthorsep%
+%%%%%%%%%%%%%%%%%%%%%%%%
+%% author
+%======
+{\authorfont%
+\authoroutput{}\par}%
+%%%%%%%%%%%%%%%%%%%%%%%%%%
+\vskip\Jauthorjreceivesep%
+%%%%%%%%%%%%%%%%%%%%%%%%%%
+%======
+{\juketukefont%
+{\@uketsuke}\par}%
+%%%%%%%%%%%%%%%%%%%%%%%%
+\vskip\Jreceivejabstsep%
+%%%%%%%%%%%%%%%%%%%%%%%%
+\mbox{\box\@abstractbox}\par%
+%%%%%%%%%%%%%%%%%%%%%%%%
+\vskip\Jabstsepjkeyword%
+%%%%%%%%%%%%%%%%%%%%%%%%
+\mbox{\box\@jkeywordbox}\par%
+%%%%%%%%%%%%%%%%%%%%%%
+\vskip\Jkeywordetitle%
+%%%%%%%%%%%%%%%%%%%%%%
+{\etitlefont%
+{\bfseries{\@etitle}}}\par%
+%%%%%%%%%%%%%%%%%%%%%%
+\vskip\Jetitleeauthor%
+%%%%%%%%%%%%%%%%%%%%%%
+{\eauthorfont%
+\authoroutput{e}\par}%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\vskip\Jeauthorereceivesep%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+{\euketukefont%
+{\@euketsuke}\par}%
+%%%%%%%%%%%%%%%%%%%%%%%%%
+\vskip\Jereceiveeabstsep%
+%%%%%%%%%%%%%%%%%%%%%%%%%
+\mbox{\box\@eabstractbox}\par%
+%%%%%%%%%%%%%%%%%%%%%%%%%
+\vskip\Jeabstekeywordsep%
+%%%%%%%%%%%%%%%%%%%%%%%%%
+\mbox{\box\@ekeywordbox}\par%
+%%%%%%%%%%%%%%%%%%%
+\vskip\JEhonbunsep%
+%%%%%%%%%%%%%%%%%%%
+}
+\fi
+
+
+
+
+%<<<< 4.0
+%%%%%%%%%%%%%%%%%%%%%%%%%%
+% abstract
+%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\ifDS@abstract
+\ifDS@english
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\def\authortitle{%
+{\Engtitlefont%
+{\@title}\par}
+%%%%%%%%%%%%%%%%%%%%%%%
+\vskip\Etitleauthorsep%
+%%%%%%%%%%%%%%%%%%%%%%%
+{\Engeauthorfont%
+\authoroutput{e}\par}%
+%%%%%%%%%%%%%%%%%%%%%%%%%
+\vskip\Eauthorreceivesep%
+%%%%%%%%%%%%%%%%%%%%%%%%%
+   {\Enguketukefont%
+   {\@huketsuke}\par}%
+%%%%%%%%%%%%%%%%%%%%%%%
+\vskip\Ereceiveabstsep%
+%%%%%%%%%%%%%%%%%%%%%%%
+\mbox{\box\@abstractbox}\par%
+%%%%%%%%%%%%%%%%%%%
+\vskip\JEhonbunsep%
+%%%%%%%%%%%%%%%%%%%
+}
+%===========
+\else
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\def\authortitle{%
+{\jtitlefont%
+{\@title}\par}%
+%%%%%%%%%%%%%%%%%%%%%%%%
+\vskip\Jtitlejauthorsep%
+%%%%%%%%%%%%%%%%%%%%%%%%
+{\authorfont%
+\authoroutput{}\par}%
+%%%%%%%%%%%%%%%%%%%%%%%%%%
+\vskip\Jauthorjreceivesep%
+%%%%%%%%%%%%%%%%%%%%%%%%%%
+   {\juketukefont%
+   {\@huketsuke}\par}%
+%%%%%%%%%%%%%%%%%%%%%%%%
+\vskip\Jreceivejabstsep%
+%%%%%%%%%%%%%%%%%%%%%%%%
+\mbox{\box\@abstractbox}\par%
+%%%%%%%%%%%%%%%%%%%%%%%%
+\vskip\Jkeywordetitle%
+%%%%%%%%%%%%%%%%%%%%%%
+\rlap{\SHUBETUfontE{\SHUBETUname@Eabstract}}%%
+\vskip\shubetutitlesep%
+%%%%%%%%%%%%%%%%%%%%%%
+{\etitlefont%
+{\bfseries{\@etitle}}}\par%
+%%%%%%%%%%%%%%%%%%%%%%
+\vskip\Jetitleeauthor%
+%%%%%%%%%%%%%%%%%%%%%%
+{\eauthorfont%
+\authoroutput{e}\par}%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\vskip\Jeauthorereceivesep%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+   {\euketukefont%
+   {\@heuketsuke}\par}%
+%%%%%%%%%%%%%%%%%%%%%%%%%
+\vskip\Jereceiveeabstsep%
+%%%%%%%%%%%%%%%%%%%%%%%%%
+\mbox{\box\@eabstractbox}\par%
+%%%%%%%%%%%%%%%%%%%%%%%%%
+\vskip\JEhonbunsep%
+%%%%%%%%%%%%%%%%%%%
+}
+\fi\fi
+
+
+
+
+
+%=================================================================================
+% maketitle Font
+%=================================================================================
+
+
+%% Times -> CM
+\def\titleddash{{\usefont{OT1}{cmr}{bx}{n}\selectfont%
+\leavevmode \raise.1zh\hbox to 2zw{---\hss ---}}}
+
+
+%% 
+\def\jtitlefont{%
+\if@submit
+   \fontsize{26\JQ}{34\h}
+   \usefont{JY1}{gt}{m}{n}%
+%   \usefont{OT1}{ptm}{b}{n}%Times-Bold*
+   \bfseries%
+   \mathversion{bold}\selectfont%
+\else
+   \fontsize{26\JQ}{34\h}
+   \usefont{JY1}{fmb}{m}{n}% FutoMin
+   \usefont{OT1}{ptm}{b}{n}%Times-Bold*
+   \mathversion{bold}\selectfont%
+\let\ddash\titleddash%
+\fi
+}
+
+
+%% J-Uketuke
+\def\juketukefont{%
+\if@submit
+   \fontsize{10\JQ}{12\h}\normalfont\selectfont
+\else
+   \fontsize{10\JQ}{12\h}\usekanji{JY1}{gt}{m}{n}%
+   \useroman{OT1}{phv}{m}{n}\selectfont
+\fi}
+
+
+%% v1.02c
+%% E-title
+\def\etitlefont{\fontsize{20\Q}{22\h}\mathversion{bold}\selectfont}
+
+%% E-Uketuke
+\def\euketukefont{%
+\if@submit
+   \fontsize{10\JQ}{12\h}\normalfont\selectfont
+\else
+   \fontsize{10\JQ}{12\h}\useroman{OT1}{phv}{m}{n}\selectfont
+\fi}
+
+
+%% author-migikata
+\def\labelfont{\useroman{OT1}{cmr}{m}{n}\selectfont}
+
+%% J-name
+\def\authorfont{\fontsize{16\JQ}{22\h}\selectfont}
+
+%% J-(e)-name
+\def\eauthorfont{\fontsize{14\JQ}{18\h}\scshape\selectfont}%14Qx18
+
+
+%% E-name
+\def\Engeauthorfont{\fontsize{17\JQ}{22\h}\scshape\selectfont}%17Qx22
+
+%% eauthor-migikata
+\ifDS@english
+  \def\elabelfont{\normalfont}%\useroman{OT1}{ptm}{m}{n}\selectfont
+\else
+  \def\elabelfont{\normalfont}%\useroman{OT1}{cmr}{m}{n}\selectfont
+\fi
+%%%
+
+
+
+
+%% E-only-title
+\def\Engtitlefont{\fontsize{28\Q}{34\h}\bfseries%
+\mathversion{bold}\selectfont}
+
+
+
+%%E Uketuke
+\def\Enguketukefont{\fontsize{10\JQ}{12\h}\sffamily\selectfont}
+
+
+
+
+%=============================================================================
+% uketsuke, euketsuke
+%=============================================================================
+
+
+\def\@uketsuke{%
+\@received
+\@ifundefined{@rereceived}{, }{%
+   \@rereceived
+   \@ifundefined{@rerereceived}{, }{\@rerereceived}%
+   \par
+}%
+{\@accepted}%
+\@ifundefined{@released}{}{, \@released}%
+}
+
+
+\def\@euketsuke{%
+\@ereceived
+\@ifundefined{@erereceived}{, }{%
+   \@erereceived
+   \@ifundefined{@ererereceived}{, }{\@ererereceived}%
+   \par
+}%
+\@eaccepted
+}
+
+
+\def\@huketsuke{%
+\@Presented}
+
+
+\def\@heuketsuke{%
+\@ePresented}
+
+
+
+
+
+
+
+\def\TUKI#1{\ifcase#1 xx\or January\or February\or March\or April\or May\or June\or  July\or August\or September\or October\or November\or December\fi}
+
+
+
+
+\ifDS@english
+\def\received#1#2#3{%
+ \gdef\@received{Received: \TUKI{#2} #3, #1}%
+}
+
+\def\accepted#1#2#3{%
+  \gdef\@accepted{Accepted: \TUKI{#2} #3, #1}%
+}
+\def\@accepted{}
+
+\def\rereceived#1#2#3{%
+ \gdef\@rereceived{, Revised: \TUKI{#2} #3, #1}%
+}
+
+\def\rerereceived#1#2#3{%
+ \gdef\@rerereceived{/\TUKI{#2} #3, #1,}%
+}
+%%% 
+\def\released#1#2#3{%
+ \gdef\@released{Released: \TUKI{#2} #3, #1}%
+}
+%%
+\else
+%%
+\def\received#1#2#3{%
+ \gdef\@received{受付日{#1}\kern0pt{幎}\kern0pt{#2}\kern0pt{月}\kern0pt{#3}\kern0pt{日}}%
+ \gdef\@ereceived{Received: \TUKI{#2} #3, #1}%
+}
+
+\def\accepted#1#2#3{%
+  \gdef\@accepted{採録日{#1}\kern0pt{幎}\kern0pt{#2}\kern0pt{月}\kern0pt{#3}\kern0pt{日}}%
+  \gdef\@eaccepted{Accepted: \TUKI{#2} #3, #1}%
+}
+
+\def\rereceived#1#2#3{%
+ \gdef\@rereceived{再受付日{#1}\kern0pt{幎}\kern0pt{#2}\kern0pt{月}\kern0pt{#3}\kern0pt{日}}%
+ \gdef\@erereceived{, Revised: \TUKI{#2} #3, #1}%
+}
+
+\def\rerereceived#1#2#3{%
+ \gdef\@rerereceived{\,/\,{#1}\kern0pt{幎}\kern0pt{#2}\kern0pt{月}\kern0pt{#3}\kern0pt{日}}%
+ \gdef\@ererereceived{/\TUKI{#2} #3, #1,}%
+}
+\fi
+
+
+
+
+% abstract
+\ifDS@english
+\def\Presented#1#2#3{%
+ \gdef\@Presented{Presented: \TUKI{#2} #3, #1}%
+}
+\else
+\def\Presented#1#2#3{%
+ \gdef\@Presented{{#1}\kern0pt{幎}\kern0pt{#2}\kern0pt{月}\kern0pt{#3}\kern0pt{日発衚}}%
+ \gdef\@ePresented{Presented: \TUKI{#2} #3, #1}%
+}
+\fi
+
+
+
+
+
+
+%%%%%%%%%%%%%%%%%
+\received{xxxx}{0}{xx}
+\accepted{xxxx}{0}{xx}
+\Presented{xxxx}{0}{xx}
+%\rereceived{xxxx}{0}{xx}
+%\rerereceived{xxxx}{0}{xx}
+%%%%%%%%%%%%%%
+
+
+
+\ifDS@english\else
+\let\受付\received
+\let\採録\accepted
+\let\再受付\rereceived
+\let\再再受付\rerereceived
+\let\発衚\Presented
+\fi
+
+
+
+%==========================================================================================================================
+
+
+
+
+
+\def\EGAIYOU{%
+\ifDS@english
+   \ifDS@abstract
+   {\hskip1em}
+   \else
+   \sffamily\itshape%
+Abstract:\hskip.5em%
+   \fi
+\else
+   \if@submit
+   \itshape\bfseries%
+   \else
+   \useroman{OT1}{phv}{b}{it}\selectfont%
+   \fi
+\ifDS@abstract
+   {\hskip1zw}\else
+   Abstract:\hskip.5em% 
+   \fi
+\fi
+}
+
+
+
+
+%%%<<<< 1.02
+\ifDS@english
+\def\GAIYOU{%
+   \ifDS@abstract
+   {\hskip1em}%
+   \else
+   \itshape\bfseries\sffamily%
+   Abstract:\hskip.5em%
+   \fi
+}
+\else
+\def\GAIYOU{%
+   \ifDS@abstract
+   {\hskip1zw}%
+   \else
+{\textbf{抂芁}}
+   \fi
+}
+\fi
+
+
+
+
+
+\newbox\@abstractbox
+\newbox\@eabstractbox
+
+
+
+\ifDS@english
+\def\abstract{%
+ \global\setbox\@abstractbox\hbox\bgroup%
+  \begin{minipage}[t]{.8\textwidth}% 12Q 14H
+\fontsize{12\Q}{14\h}\selectfont%
+\noindent{\GAIYOU}%
+\ignorespaces}
+\else
+\def\abstract{%
+ \global\setbox\@abstractbox\hbox\bgroup%
+  \begin{minipage}[t]{.8\textwidth}% 12Q 18H
+\fontsize{12\JQ}{18\h}\selectfont%
+\noindent{\GAIYOU}%
+\ignorespaces}
+\fi
+
+
+
+
+
+\def\endabstract{%
+\par%
+\end{minipage}%
+\egroup\ignorespaces}
+
+
+\def\eabstract{%
+ \global\setbox\@eabstractbox\hbox\bgroup%
+  \begin{minipage}[t]{.8\textwidth}% 12Q 16H
+\fontsize{12\Q}{15\h}\selectfont%
+\noindent{\EGAIYOU}%
+\ignorespaces}
+
+\def\endeabstract{%
+\par%
+\end{minipage}%
+\egroup\ignorespaces}
+
+
+
+%==========================================================================================================================
+
+
+\def\EKEYWORD{%
+\ifDS@english
+\itshape\bfseries\sffamily%
+Keywords:\hskip.5em% 
+\else
+   \if@submit
+   \itshape\bfseries%
+   \else
+   \useroman{OT1}{phv}{b}{it}\selectfont%
+   \fi
+Keywords:\hskip.5em% 
+\fi
+}
+
+
+
+\ifDS@english
+\def\JKEYWORD{%
+\itshape\bfseries\sffamily%
+Keywords:\hskip.5em%
+}
+\else
+\def\JKEYWORD{\textbf{キヌワヌド}}%
+\fi
+
+
+\newbox\@jkeywordbox
+\newbox\@ekeywordbox
+\newbox\@keywordbox
+
+
+\def\jkeyword{\@par%
+\global\setbox\@jkeywordbox\hbox\bgroup
+  \begin{minipage}[t]{.8\textwidth}%
+\fontsize{12\JQ}{15\h}\selectfont%
+{\noindent{\JKEYWORD}}%
+\ignorespaces}
+\def\endjkeyword{%
+\par\end{minipage}%
+\egroup\ignorespaces}
+
+\def\ekeyword{\@par%
+ \global\setbox\@ekeywordbox\hbox\bgroup
+  \begin{minipage}[t]{.8\textwidth}%
+\fontsize{12\Q}{15\h}\selectfont%
+{\noindent{\EKEYWORD}}%
+\ignorespaces}
+\def\endekeyword{%
+\par\end{minipage}%
+\egroup\ignorespaces}
+
+
+\def\keyword{\@par%
+ \global\setbox\@ekeywordbox\hbox\bgroup
+  \begin{minipage}[t]{.8\textwidth}%
+\fontsize{12\Q}{15\h}\selectfont%
+{\noindent{\EKEYWORD}}%
+\ignorespaces}
+\def\endkeyword{%
+\par\end{minipage}%
+\egroup\ignorespaces}
+
+
+
+%==========================================================================================================================
+
+
+
+\setcounter{secnumdepth}{3}
+\newcounter{part}
+\newcounter{section}
+\newcounter{subsection}[section]
+\newcounter{subsubsection}[subsection]
+\newcounter{paragraph}[subsubsection]
+\newcounter{subparagraph}[paragraph]
+\renewcommand\thepart{\@Roman\c@part}
+\renewcommand\thesection{\@arabic\c@section}
+\renewcommand\thesubsection   {\thesection.\@arabic\c@subsection}
+\renewcommand\thesubsubsection{\thesubsection .\@arabic\c@subsubsection}
+\renewcommand\theparagraph    {\thesubsubsection.\@arabic\c@paragraph}
+\renewcommand\thesubparagraph {\theparagraph.\@arabic\c@subparagraph}
+\newcommand\part{%
+   \if@noskipsec \leavevmode \fi
+   \par
+   \addvspace{4ex}%
+   \@afterindentfalse
+   \secdef\@part\@spart}
+
+
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Midasi
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\newbox\@tempboxb
+%\newdimen\SECTwd
+\newbox\SECTwd
+
+\newlength{\section@height}%
+\section@height=\lineskip%
+\advance \section@height-\topskip
+\advance \section@height \baselineskip
+
+
+
+
+
+\def\@startsectionA#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\addvspace\@tempskipa
+  \fi
+  \@ifstar
+    {\@ssectA{#3}{#4}{#5}{#6}}%
+    {\@dblarg{\@sectA{#1}{#2}{#3}{#4}{#5}{#6}}}}
+
+
+
+
+\ifDS@english%%!!!!!!!
+\def\@sectA#1#2#3#4#5#6[#7]#8{%
+  \ifnum #2>\c@secnumdepth
+    \let\@svsec\@empty
+  \else
+    \refstepcounter{#1}%
+    \protected@edef\@svsec{%\protect\rule{0mm}{21.75mm}
+\@seccntformatA{#1}\relax}%
+  \fi
+  \@tempskipa #5\relax
+  \ifdim \@tempskipa>\z@%\@tempskipa>\z@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\setbox\SECTwd=\hbox{%
+\begingroup
+\noindent
+#6{\@hangfrom{\hskip #3\relax\@svsec}}%
+\interlinepenalty \@M {{#8}}%
+\endgroup}%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\setbox\@tempboxb\hbox{#6{%
+{\hskip #3\relax{\csname #2@font\endcsname \@svsec}}}}%
+%%%%%%%%%%%\the\wd\SECTwd
+\ifdim \wd\SECTwd > \columnwidth
+\@tempdima\columnwidth
+\advance\@tempdima-\wd\@tempboxb
+%%%%%%%%%%%%
+\begingroup
+\mbox{}\par%
+\vspace{-\baselineskip}%%
+\addvspace{\section@height}%
+\addvspace{-.9mm}%
+  \noindent%
+   #6{\@hangfrom{\hskip #3\relax\@svsec}%
+         \interlinepenalty \@M 
+   %\noindent
+   \hangindent\wd\@tempboxb\hangafter=1
+   #8\@@par}\nobreak%
+%   \addvspace{.74\Cvs}%
+\vspace{-.7mm}%
+\addvspace{\section@height}%
+\endgroup
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\else
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\begingroup
+\mbox{}\par%
+\vspace{-\baselineskip}%%
+\noindent
+{\vbox to 8.65mm
+  {\vfill%
+   \addvspace{.54\Cvs}
+   #6{\@hangfrom{\hskip #3\relax\@svsec}%
+         \interlinepenalty \@M {#8}\@@par%
+   }\nobreak%
+   \vfill
+  }%
+ }
+\endgroup
+\fi
+\par
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+    \csname #1mark\endcsname{#7}%
+    \addcontentsline{toc}{#1}{%
+      \ifnum #2>\c@secnumdepth \else%
+        \protect\numberline{\csname the#1\endcsname}\hskip1em%
+      \fi%
+      {#7}%\vfill
+}%
+  \else
+    \def\@svsechd{%
+      #6{\hskip #3\relax
+      \@svsec #8}%
+      \csname #1mark\endcsname{#7}%
+      \addcontentsline{toc}{#1}{%
+        \ifnum #2>\c@secnumdepth \else%
+         \protect\numberline{\csname the#1\endcsname}%
+        \fi%
+        #7}}%
+  \fi%
+  \@xsect{#5}}
+\def\@xsect#1{%
+  \@tempskipa #1\relax
+  \ifdim \@tempskipa>\z@
+    \par \nobreak
+    \vskip \@tempskipa
+    \@afterheading
+  \else
+    \@nobreakfalse
+    \global\@noskipsectrue
+    \everypar{%
+      \if@noskipsec
+        \global\@noskipsecfalse
+       {\setbox\z@\lastbox}%
+        \clubpenalty\z@
+        \begingroup \@svsechd \endgroup
+        \unskip
+        \@tempskipa #1\relax
+        \hskip -\@tempskipa
+      \else
+        \clubpenalty \@clubpenalty
+        \everypar{}%
+      \fi}%
+  \fi
+  \ignorespaces}
+%%%%%%%%
+\else%-------------------------------------------------------------
+%%%%%%%%
+\def\@sectA#1#2#3#4#5#6[#7]#8{%
+  \ifnum #2>\c@secnumdepth
+    \let\@svsec\@empty
+  \else
+    \refstepcounter{#1}%
+    \protected@edef\@svsec{%\protect\rule{0mm}{21.75mm}
+\@seccntformatA{#1}\relax}%
+  \fi
+  \@tempskipa #5\relax
+  \ifdim \@tempskipa>\z@%\@tempskipa>\z@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\setbox\SECTwd=\hbox{%
+\begingroup
+\noindent
+#6{\@hangfrom{\hskip #3\relax\@svsec}}%
+\interlinepenalty \@M {{#8}}%
+\endgroup}%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\setbox\@tempboxb\hbox{#6{%
+{\hskip #3\relax{\csname #2@font\endcsname \@svsec}}}}%
+%%%%%%%%%%%\the\wd\SECTwd
+\ifdim \wd\SECTwd > \columnwidth
+%%%%%%%%%%%%
+\@tempdima\columnwidth
+\advance\@tempdima-\wd\@tempboxb
+%%%%%%%%%%%%
+\begingroup
+   \mbox{}\par%
+   \vspace{-\baselineskip}%%
+   \addvspace{.65\Cvs}%
+   \noindent%
+   #6{\@hangfrom{\hskip #3\relax\@svsec}%
+          \interlinepenalty \@M 
+   %\noindent
+   \hangindent\wd\@tempboxb\hangafter=1
+   #8\@@par}\nobreak{\par}%
+   \addvspace{.74\Cvs}%
+\endgroup
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\else
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\begingroup
+   \mbox{}\par%
+   \vspace{-\baselineskip}%%
+   \noindent
+   {\vbox to 2.43\Cvs{\vfill%
+   #6{\@hangfrom{\hskip #3\relax\@svsec}%
+          \interlinepenalty \@M {#8}\@@par}%
+   \vfill}%
+   }\@@par%
+\endgroup
+\fi
+\par\prevdepth=-1000pt%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+    \csname #1mark\endcsname{#7}%
+    \addcontentsline{toc}{#1}{%
+      \ifnum #2>\c@secnumdepth \else%
+        \protect\numberline{\csname the#1\endcsname}\hskip1zw%
+      \fi%
+      {#7}%\vfill
+}%
+  \else
+    \def\@svsechd{%
+      #6{\hskip #3\relax
+      \@svsec #8}%
+      \csname #1mark\endcsname{#7}%
+      \addcontentsline{toc}{#1}{%
+        \ifnum #2>\c@secnumdepth \else%
+         \protect\numberline{\csname the#1\endcsname}%
+        \fi%
+        #7}}%
+  \fi%
+  \@xsect{#5}}
+\def\@xsect#1{%
+  \@tempskipa #1\relax
+  \ifdim \@tempskipa>\z@
+    \par \nobreak
+    \vskip \@tempskipa
+    \@afterheading
+  \else
+    \@nobreakfalse
+    \global\@noskipsectrue
+    \everypar{%
+      \if@noskipsec
+        \global\@noskipsecfalse
+       {\setbox\z@\lastbox}%
+        \clubpenalty\z@
+        \begingroup \@svsechd \endgroup
+        \unskip
+        \@tempskipa #1\relax
+        \hskip -\@tempskipa
+      \else
+        \clubpenalty \@clubpenalty
+        \everypar{}%
+      \fi}%
+  \fi
+  \ignorespaces}
+\fi
+
+
+
+\ifDS@english
+\def\@seccntformatA#1{\csname the#1\endcsname.\hskip1em}
+\else
+\def\@seccntformatA#1{\csname the#1\endcsname.\hskip1zw}
+\fi
+
+
+
+%%%<<<< 1.02
+\def\@ssectA#1#2#3#4#5{%
+  \@tempskipa #3\relax
+  \ifdim \@tempskipa>\z@
+%%%
+\begingroup
+   \mbox{}\par%
+   \vspace{-\baselineskip}%%
+   \addvspace{.5\Cvs}%
+   \noindent%
+%%%
+      #4{%
+        \@hangfrom{\hskip #1}%
+          \interlinepenalty \@M #5\@@par}%
+   \addvspace{.5\Cvs}%
+    \endgroup
+  \else
+    \def\@svsechd{#4{\hskip #1\relax #5}}%
+  \fi
+  \@xsect{#3}}
+\newif\if@afterindent \@afterindenttrue
+\def\@afterheading{%
+  \@nobreaktrue
+  \everypar{%
+    \if@nobreak
+      \@nobreakfalse
+      \clubpenalty \z@
+      \if@afterindent \else
+        {\setbox\z@\lastbox}%
+      \fi
+    \else
+      \clubpenalty \@clubpenalty
+      \everypar{}%
+    \fi}}
+
+%----------------------------------------------------------------------------
+%----------------------------------------------------------------------------
+
+%%%%%%%%%%%%%%% C
+\def\@startsectionC#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
+\ifnum #2=\@ne
+       \vskip-\prevdepth \prevdepth\z@ \vskip\Cvs
+       \advance\@tempskipa-\Cvs \vspace*{\@tempskipa}%
+     \else
+\addvspace\@tempskipa
+\fi
+  \fi
+  \@ifstar
+    {\@ssectC{#3}{#4}{#5}{#6}}%
+    {\@dblarg{\@sectC{#1}{#2}{#3}{#4}{#5}{#6}}}}
+
+\def\@sectC#1#2#3#4#5#6[#7]#8{%
+  \ifnum #2>\c@secnumdepth
+    \let\@svsec\@empty
+  \else
+    \refstepcounter{#1}%
+    \protected@edef\@svsec{%\protect\rule{0mm}{21.75mm}
+\@seccntformatC{#1}\relax}%
+  \fi
+  \@tempskipa #5\relax
+  \ifdim \@tempskipa>\z@
+    \begingroup
+      #6{%
+%        \centering
+\@hangfrom{\hskip #3\relax\@svsec}%
+%          \interlinepenalty \@M \protect\SECTUP{\jidoukintou{#8}}\@@par}%
+          \interlinepenalty \@M {#8}\@@par}%
+    \endgroup
+    \csname #1mark\endcsname{#7}%
+    \addcontentsline{toc}{#1}{%
+      \ifnum #2>\c@secnumdepth \else
+        \protect\numberline{\csname the#1\endcsname}%
+      \fi
+      {#7}}%
+  \else
+    \def\@svsechd{%
+      #6{\hskip #3\relax
+      \@svsec #8}%
+      \csname #1mark\endcsname{#7}%
+      \addcontentsline{toc}{#1}{%
+        \ifnum #2>\c@secnumdepth \else
+          \protect\numberline{\csname the#1\endcsname}%
+        \fi
+        #7}}%
+  \fi
+  \@xsect{#5}}
+\def\@xsect#1{%
+  \@tempskipa #1\relax
+  \ifdim \@tempskipa>\z@
+    \par \nobreak
+    \vskip \@tempskipa
+    \@afterheading
+  \else
+    \@nobreakfalse
+    \global\@noskipsectrue
+    \everypar{%
+      \if@noskipsec
+        \global\@noskipsecfalse
+       {\setbox\z@\lastbox}%
+        \clubpenalty\z@
+        \begingroup \@svsechd \endgroup
+        \unskip
+        \@tempskipa #1\relax
+        \hskip -\@tempskipa
+      \else
+        \clubpenalty \@clubpenalty
+        \everypar{}%
+      \fi}%
+  \fi
+  \ignorespaces}
+
+\ifDS@english
+\def\@seccntformatC#1{\csname the#1\endcsname\hskip1em}
+\else
+\def\@seccntformatC#1{\csname the#1\endcsname\hskip1zw}
+\fi
+
+\def\@ssectC#1#2#3#4#5{%
+  \@tempskipa #3\relax
+  \ifdim \@tempskipa>\z@
+    \begingroup
+      #4{%
+%        \centering
+\@hangfrom{\hskip #1}%
+          \interlinepenalty \@M {#5}\@@par}%
+    \endgroup
+  \else
+    \def\@svsechd{#4{\hskip #1\relax #5}}%
+  \fi
+  \@xsect{#3}}
+\newif\if@afterindent \@afterindenttrue
+\def\@afterheading{%
+  \@nobreaktrue
+  \everypar{%
+    \if@nobreak
+      \@nobreakfalse
+      \clubpenalty \z@
+      \if@afterindent \else
+        {\setbox\z@\lastbox}%
+      \fi
+    \else
+      \clubpenalty \@clubpenalty
+      \everypar{}%
+    \fi}}
+\def\@hangfrom#1{\setbox\@tempboxa\hbox{#1}%
+      \hangindent \wd\@tempboxa\noindent\box\@tempboxa}
+
+
+
+%===========================================================
+
+
+\def\@startsectionAPP#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{}%
+\ifnum #2=1\relax \vspace*{0mm}\fi%<---------------
+  \else
+    \addpenalty\@secpenalty\addvspace\@tempskipa
+  \fi
+  \@ifstar
+    {\@ssectC{#3}{#4}{#5}{#6}}%<--------------------
+    {\@dblarg{\@sectAPP{#1}{#2}{#3}{#4}{#5}{#6}}}}
+
+
+
+
+\ifDS@english%%!!!!!!!
+\def\@sectAPP#1#2#3#4#5#6[#7]#8{%
+  \ifnum #2>\c@secnumdepth
+    \let\@svsec\@empty
+  \else
+    \refstepcounter{#1}%
+    \protected@edef\@svsec{%\protect\rule{0mm}{21.75mm}
+\@seccntformatAPP{#1}\relax}%
+  \fi
+  \@tempskipa #5\relax
+  \ifdim \@tempskipa>\z@%\@tempskipa>\z@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\setbox\SECTwd=\hbox{%
+\begingroup
+\noindent
+#6{\@hangfrom{\hskip #3\relax\@svsec}}%
+\interlinepenalty \@M {{#8}}%
+\endgroup}%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\setbox\@tempboxb\hbox{#6{%
+{\hskip #3\relax{\csname #2@font\endcsname \@svsec}}}}%
+%%%%%%%%%%%\the\wd\SECTwd
+\ifdim \wd\SECTwd > \columnwidth
+\@tempdima\columnwidth
+\advance\@tempdima-\wd\@tempboxb
+%%%%%%%%%%%%
+\begingroup
+\mbox{}\par%
+\vspace{-\baselineskip}%%
+\addvspace{\section@height}%
+\addvspace{-.9mm}%
+  \noindent%
+   #6{\@hangfrom{\hskip #3\relax\@svsec}%
+         \interlinepenalty \@M 
+   %\noindent
+   \hangindent\wd\@tempboxb\hangafter=1
+   #8\@@par}\nobreak%
+%   \addvspace{.74\Cvs}%
+\vspace{-.7mm}%
+\addvspace{\section@height}%
+\endgroup
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\else
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\begingroup
+\mbox{}\par%
+\vspace{-\baselineskip}%%
+\noindent
+{\vbox to 8.65mm
+  {\vfill%
+   \addvspace{.54\Cvs}
+   #6{\@hangfrom{\hskip #3\relax\@svsec}%
+         \interlinepenalty \@M {#8}\@@par%
+   }\nobreak%
+   \vfill
+  }%
+ }
+\endgroup
+\fi
+\par
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+    \csname #1mark\endcsname{#7}%
+    \addcontentsline{toc}{#1}{%
+      \ifnum #2>\c@secnumdepth \else%
+        \protect\numberline{\csname the#1\endcsname}\hskip1em%
+      \fi%
+      {#7}%\vfill
+}%
+  \else
+    \def\@svsechd{%
+      #6{\hskip #3\relax
+      \@svsec #8}%
+      \csname #1mark\endcsname{#7}%
+      \addcontentsline{toc}{#1}{%
+        \ifnum #2>\c@secnumdepth \else%
+         \protect\numberline{\csname the#1\endcsname}%
+        \fi%
+        #7}}%
+  \fi%
+  \@xsect{#5}}
+\def\@xsect#1{%
+  \@tempskipa #1\relax
+  \ifdim \@tempskipa>\z@
+    \par \nobreak
+    \vskip \@tempskipa
+    \@afterheading
+  \else
+    \@nobreakfalse
+    \global\@noskipsectrue
+    \everypar{%
+      \if@noskipsec
+        \global\@noskipsecfalse
+       {\setbox\z@\lastbox}%
+        \clubpenalty\z@
+        \begingroup \@svsechd \endgroup
+        \unskip
+        \@tempskipa #1\relax
+        \hskip -\@tempskipa
+      \else
+        \clubpenalty \@clubpenalty
+        \everypar{}%
+      \fi}%
+  \fi
+  \ignorespaces}
+%%%%%%%%
+\else%-------------------------------------------------------------
+%%%%%%%%
+\def\@sectAPP#1#2#3#4#5#6[#7]#8{%
+  \ifnum #2>\c@secnumdepth
+    \let\@svsec\@empty
+  \else
+    \refstepcounter{#1}%
+    \protected@edef\@svsec{%\protect\rule{0mm}{21.75mm}
+\@seccntformatAPP{#1}\relax}%
+  \fi
+  \@tempskipa #5\relax
+  \ifdim \@tempskipa>\z@%\@tempskipa>\z@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\setbox\SECTwd=\hbox{%
+\begingroup
+\noindent
+#6{\@hangfrom{\hskip #3\relax\@svsec}}%
+\interlinepenalty \@M {{#8}}%
+\endgroup}%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\setbox\@tempboxb\hbox{#6{%
+{\hskip #3\relax{\csname #2@font\endcsname \@svsec}}}}%
+%%%%%%%%%%%\the\wd\SECTwd
+\ifdim \wd\SECTwd > \columnwidth
+%%%%%%%%%%%%
+\@tempdima\columnwidth
+\advance\@tempdima-\wd\@tempboxb
+%%%%%%%%%%%%
+\begingroup
+   \mbox{}\par%
+   \vspace{-\baselineskip}%%
+   \addvspace{.65\Cvs}%
+   \noindent%
+   #6{\@hangfrom{\hskip #3\relax\@svsec}%
+          \interlinepenalty \@M 
+   %\noindent
+   \hangindent\wd\@tempboxb\hangafter=1
+   #8\@@par}\nobreak{\par}%
+   \addvspace{.74\Cvs}%
+\endgroup
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\else
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\begingroup
+   \mbox{}\par%
+   \vspace{-\baselineskip}%%
+   \noindent
+   {\vbox to 2.43\Cvs{\vfill%
+   #6{\@hangfrom{\hskip #3\relax\@svsec}%
+          \interlinepenalty \@M {#8}\@@par}%
+   \vfill}%
+   }\@@par%
+\endgroup
+\fi
+\par\prevdepth=-1000pt%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+    \csname #1mark\endcsname{#7}%
+    \addcontentsline{toc}{#1}{%
+      \ifnum #2>\c@secnumdepth \else%
+        \protect\numberline{\csname the#1\endcsname}\hskip1zw%
+      \fi%
+      {#7}%\vfill
+}%
+  \else
+    \def\@svsechd{%
+      #6{\hskip #3\relax
+      \@svsec #8}%
+      \csname #1mark\endcsname{#7}%
+      \addcontentsline{toc}{#1}{%
+        \ifnum #2>\c@secnumdepth \else%
+         \protect\numberline{\csname the#1\endcsname}%
+        \fi%
+        #7}}%
+  \fi%
+  \@xsect{#5}}
+\def\@xsect#1{%
+  \@tempskipa #1\relax
+  \ifdim \@tempskipa>\z@
+    \par \nobreak
+    \vskip \@tempskipa
+    \@afterheading
+  \else
+    \@nobreakfalse
+    \global\@noskipsectrue
+    \everypar{%
+      \if@noskipsec
+        \global\@noskipsecfalse
+       {\setbox\z@\lastbox}%
+        \clubpenalty\z@
+        \begingroup \@svsechd \endgroup
+        \unskip
+        \@tempskipa #1\relax
+        \hskip -\@tempskipa
+      \else
+        \clubpenalty \@clubpenalty
+        \everypar{}%
+      \fi}%
+  \fi
+  \ignorespaces}
+\fi
+
+
+\ifDS@english
+\def\@seccntformatAPP#1{\csname the#1\endcsname.\hskip1em}
+\else
+\def\@seccntformatAPP#1{\csname the#1\endcsname.\hskip1zw}
+\fi
+
+
+%----------------------------------------------------------------------------
+
+
+
+
+%-----------------------------------
+\newcommand{\section}{\@startsectionA{section}{1}{\z@}%
+{.00001\Cvs}% \@plus.3\Cdp \@minus.2\Cdp}% \@plus1.3\Cdp\@minus10.5\Cdp}%
+{.00001\Cvs}% \@plus.3\Cdp \@minus.2\Cdp}%
+{\reset@font
+\fontsize{16\JQ}{21\h}\selectfont%
+\bfseries\mathversion{bold}%
+}}
+%-----------
+
+
+
+%=======================
+ \newcommand{\subsection}{\@startsectionC{subsection}{2}{\z@}%
+{\Cvs}%{.3125\Cvs}%{.3125\Cvs \@plus.2\Cdp \@minus.5\Cdp}% 
+{.00001\Cvs}% \@plus.3\Cdp \@minus.2\Cdp}%   {.5\Cvs \@plus.3\Cdp}%
+   {\reset@font\normalsize\bfseries\mathversion{bold}}}
+
+
+%=======================%=======================
+
+
+\newcommand{\subsubsection}{\@startsectionC{subsubsection}{3}{\z@}%
+   {0.00001\Cvs}% \@plus.3\Cdp \@minus.2\Cdp}%{.5\Cvs \@plus.5\Cdp \@minus.2\Cdp}%
+   {0.00001\Cvs}% \@plus.3\Cdp \@minus.2\Cdp}%{.5\Cvs \@plus.3\Cdp}%
+   {\reset@font\normalsize\bfseries\mathversion{bold}}}
+
+
+%=======================%=======================
+
+
+
+\newcommand{\paragraph}{\@startsectionC{paragraph}{3}{\z@}%
+   {0.00001\Cvs}% \@plus.3\Cdp \@minus.2\Cdp}%
+   {0.00001\Cvs}% \@plus.3\Cdp \@minus.2\Cdp}%
+   {\reset@font\normalsize\bfseries}}
+
+\newcommand{\subparagraph}{\@startsectionC{subparagraph}{3}{\z@}%
+   {0.00001\Cvs}% \@plus.3\Cdp \@minus.2\Cdp}%
+   {0.00001\Cvs}% \@plus.3\Cdp \@minus.2\Cdp}%
+   {\reset@font\normalsize\bfseries}}
+
+
+%============================================================================
+
+
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% fig, tab
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\ifDS@english
+\newcommand{\figurename}{Fig.}
+\newcommand{\tablename}{Table}
+\else
+\newcommand{\figurename}{図}
+\newcommand{\tablename}{è¡š}
+\fi
+
+
+
+\def\CaptionType{\def\@captype}
+
+
+\newdimen\@abovecapskip
+\newdimen\@belowcapskip
+
+
+\newcounter{figure}
+\renewcommand{\thefigure}{\@arabic\c@figure}
+\def\fps@figure{tbp}
+\def\ftype@figure{1}
+\def\ext@figure{lof}
+%%%<<<< 3.03
+\def\fnum@figure{\mbox{\figurename~\thefigure}}
+\def\fnum@efigure{\mbox{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}
+%%%<<<< 3.03
+\def\fnum@table{\mbox{\tablename~\thetable}}
+\def\fnum@etable{\mbox{Table~\thetable}}
+\newenvironment{table}
+               {\@floatenv
+%                \if@tecrep
+\capwidth\hsize\ecapwidth\hsize
+%\else
+%\capwidth65mm\ecapwidth65mm
+%\fi
+                \abovecaptionskip\z@\belowcaptionskip1mm\@float{table}}
+               {\end@float}
+\newenvironment{table*}
+               {\@floatenv\capwidth.66\textwidth\ecapwidth.66\textwidth
+                \abovecaptionskip\z@\belowcaptionskip1mm\@dblfloat{table}}
+               {\end@dblfloat}
+
+
+
+\def \@floatboxreset{%
+\reset@font
+\footnotesize\baselineskip16\h
+%\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
+   \@makecaption{\csname fnum@#1\endcsname}{\ignorespaces #3}\par
+ \endgroup}
+
+
+
+\newlength\abovecaptionskip
+\newlength\belowcaptionskip
+
+
+
+\newbox\@tempboxb
+\newdimen\capwidth
+\newdimen\ecapwidth
+
+
+
+
+%%%<<< 1.02
+\long\def\@makecaption#1#2{\footnotesize%
+ \vskip\abovecaptionskip
+ \setbox\@tempboxa\hbox{\footnotesize{\bfseries%
+#1}\hskip1\zw\shortstack[l]{#2}}%
+ \@tempdima\ht\@tempboxa \advance \@tempdima\dp\@tempboxa%
+ \setbox\@tempboxb\hbox{\footnotesize{\bfseries%
+#1}\hskip1\zw}%% <<
+ \ifdim \@tempdima > \baselineskip
+  \ifdim \wd\@tempboxa > \capwidth
+   \hfil\parbox[t]{\capwidth}{\hangindent\wd\@tempboxb 
+{\bfseries%
+    #1}\hskip1\zw #2}\vskip4\@Q
+  \else
+   \hfil\parbox[t]{\wd\@tempboxa}{\hangindent\wd\@tempboxb 
+{\bfseries%
+   #1}\hskip1\zw #2}%\vskip4\@Q
+\par\prevdepth=0pt%
+\vskip-1.5\h%
+  \fi
+ \else %% <
+  \ifdim \wd\@tempboxa > \capwidth
+   \hfil\parbox[t]{\capwidth}{\hangindent\wd\@tempboxb
+{\bfseries%
+    #1}\hskip1\zw #2}%\vskip4\@Q
+%%%
+\ifx \@captype\TABLE
+      \ifDS@english 
+      \par\vskip.25mm%
+      \else
+      \par\prevdepth=0pt\vskip-1.5mm%
+      \fi
+\else
+      \par\prevdepth=0pt\vskip-1.5\h%
+\fi
+%%%
+  \else
+   \setbox\@tempboxb\hbox{#2}%
+%%
+%   \ifdim \wd\@tempboxb < 4.5\zw %% >
+%    \hbox to\hsize{\hfil  %
+%{\bfseries%
+%#1}\hskip1\zw%\kintou{5\zw}%%
+%{#2}\hfil}%
+%   \else
+    \hbox to\hsize{\hfil\box\@tempboxa\hfil}%
+\ifDS@english \relax\else \vspace{-\belowcaptionskip}\fi
+%   \fi
+  \fi
+ \fi
+ \vspace{\belowcaptionskip}\par
+}
+
+
+
+
+
+
+
+\long\def\ecaption#1{{\footnotesize%
+ \setbox\@tempboxa\hbox{\footnotesize{\bfseries%
+\csname fnum@e\@captype\endcsname}%
+\hskip1\zw\shortstack[l]{#1}}%
+ \@tempdima\ht\@tempboxa \advance \@tempdima\dp\@tempboxa
+ \setbox\@tempboxb\hbox{\footnotesize{\bfseries%
+\csname fnum@e\@captype\endcsname}\hskip1\zw}%% <<
+%%%%%%%%%%%%
+ \ifdim \@tempdima > \baselineskip
+  \ifdim \wd\@tempboxa > \ecapwidth
+   \hfil\parbox[t]{\ecapwidth}{\hangindent\wd\@tempboxb 
+{\bfseries%
+    \csname fnum@e\@captype\endcsname}\hskip1\zw #1}\par
+  \else
+   \hfil\parbox[t]{\wd\@tempboxa}{\hangindent\wd\@tempboxb 
+{\bfseries%
+    \csname fnum@e\@captype\endcsname}\hskip1\zw #1}\par
+  \fi
+%%%
+ \else %% <
+  \ifdim \wd\@tempboxa > \ecapwidth
+   \hfil\parbox[t]{\ecapwidth}{\hangindent\wd\@tempboxb
+{\bfseries%
+    \csname fnum@e\@captype\endcsname}\hskip1\zw #1}\par
+  \else
+   \hbox to\hsize{\hfil\box\@tempboxa\hfil}%
+  \fi
+ \fi
+}%!!<---
+ \vspace{2\belowcaptionskip}\par
+}
+
+
+
+
+
+
+
+
+
+
+
+%==================================================================================================
+
+
+%%## % ipsjpapers.sty ##%%
+%% from "ipsjpapers.sty", a little customized
+\leftmargini\Cwd
+\leftmarginii.5\Cwd
+\leftmarginiii2\Cwd
+\leftmarginiv2\Cwd
+\leftmarginv2\Cwd
+\leftmarginvi2\Cwd
+
+\def\lst@listi{\labelsep\Cwd \labelwidth.25\Cwd
+	\rightmargin\z@ \listparindent\z@ \itemindent\z@
+	\partopsep\z@ \parsep\z@ \topsep\z@ \itemsep\z@}
+
+
+\def\@listi{\leftmargin\leftmargini \lst@listi}
+\def\@listii{\leftmargin\leftmarginii \lst@listi}
+\def\@listiii{\leftmargin\leftmarginiii \lst@listi}
+\def\@listiv{\leftmargin\leftmarginiv \lst@listi}
+\def\@listv{\leftmargin\leftmarginv \lst@listi}
+\def\@listvi{\leftmargin\leftmarginvi \lst@listi}
+
+
+
+\@listi
+
+\def\labelenumi{(\,\theenumi\,)} 
+\def\theenumi{\arabic{enumi}} 
+
+\def\labelenumii{(\,\theenumii\,)}
+\def\theenumii{\alph{enumii}}
+
+\def\p@enumii{\theenumi}
+\def\labelenumiii{(\,\theenumiii\,)}
+\def\theenumiii{\roman{enumiii}}
+
+\def\p@enumiii{\theenumi(\theenumii)}
+\def\labelenumiv{(\,\theenumiv\,)}
+
+\def\theenumiv{\Alph{enumiv}}
+\def\p@enumiv{\p@enumiii\theenumiii}
+
+\def\enumerate{\ifnum \@enumdepth >3 \@toodeep\else
+	\advance\@enumdepth \@ne 
+	\edef\@enumctr{enum\romannumeral\the\@enumdepth}
+	\list{\csname label\@enumctr\endcsname}{\usecounter
+		{\@enumctr}\def\makelabel##1{##1\hss}%
+		\leftmargin2\Cwd \labelwidth2\Cwd \labelsep\z@
+\itemsep\z@\topsep\z@\parsep\z@%%!!!
+}\fi}
+
+
+\let\endenumerate\endlist
+
+\def\labelitemi{$\bullet$}
+\def\labelitemii{\bf --}
+\def\labelitemiii{$\ast$}
+\def\labelitemiv{$\cdot$}
+
+
+\def\itemize{\ifnum \@itemdepth >3 \@toodeep\else \advance\@itemdepth \@ne
+	\edef\@itemitem{labelitem\romannumeral\the\@itemdepth}%
+	\list{\csname\@itemitem\endcsname}{\def\makelabel##1{\hss##1\hss}%
+		\labelwidth2\Cwd \labelsep\z@
+\itemsep\z@\topsep\z@\parsep\z@%%!!!
+}\fi}
+\let\enditemize\endlist
+
+
+
+\def\description{\list{}{\labelwidth\z@ \labelsep\Cwd
+\itemsep\z@\topsep\z@\parsep\z@%%!!!
+	\itemindent\labelsep \advance\itemindent-\leftmargin
+	\def\makelabel##1{\bf ##1}}}
+\let\enddescription\endlist
+
+
+\let\latex@trivlist\@trivlist
+\def\lst@trivlist#1#2{%
+\itemsep\z@\topsep\z@\parsep\z@%%!!!
+\leftmargin#1\relax
+	\itemindent\labelwidth \advance\itemindent\labelsep
+	\advance\itemindent#2\relax
+	\let\@trivlist\latex@trivlist \@trivlist}
+
+\def\lst@Trivlist{\def\@trivlist{\lst@trivlist\z@\z@}}
+\def\Enumerate{\lst@Trivlist \enumerate}
+\let\endEnumerate\endlist
+\def\Itemize{\lst@Trivlist \itemize}
+\let\endItemize\endlist
+\def\Description{\lst@Trivlist \description}
+\let\endDescription\endlist
+
+\def\lst@TRIVLIST{\def\@trivlist{\lst@trivlist\z@\Cwd}}
+\def\ENUMERATE{\lst@TRIVLIST \enumerate}
+\let\endENUMERATE\endlist
+\def\ITEMIZE{\lst@TRIVLIST \itemize}
+\let\endITEMIZE\endlist
+\def\DESCRIPTION{\lst@TRIVLIST \description}
+\let\endDESCRIPTION\endlist
+
+\def\lst@strivlist{\def\@trivlist{\lst@trivlist\Cwd{-\Cwd}}}
+\@namedef{enumerate*}{\lst@strivlist \enumerate}
+\@namedef{endenumerate*}{\endlist}
+\@namedef{itemize*}{\lst@strivlist \itemize}
+\@namedef{enditemize*}{\endlist}
+\@namedef{description*}{\lst@strivlist \description}
+\@namedef{enddescription*}{\endlist}
+
+
+
+
+\def\verse{\let\\=\@centercr 
+	\list{}{%
+\itemsep\z@\topsep\z@\parsep\z@%%!!!
+\itemindent-\Cwd \listparindent\itemindent 
+	\rightmargin\leftmargin \advance\leftmargin\Cwd}\item[]}
+\let\endverse\endlist
+
+\def\quotation{\list{}{%
+\itemsep\z@\topsep\z@\parsep\z@%%!!!
+\listparindent\Cwd	\itemindent\listparindent
+	\rightmargin\leftmargin}\item[]}
+\let\endquotation\endlist
+
+\def\quote{\list{}{\itemsep\z@\topsep\z@\parsep\z@%%!!!
+\rightmargin\leftmargin}\item[]}
+\let\endquote\endlist
+
+
+
+
+
+
+
+
+
+
+
+\def\newtheorem{\@ifstar
+	{\theo@newtheorem{\theo@it}{\ }}{\theo@newtheorem{}{\theo@sp}}}
+\def\theo@newtheorem#1#2#3{\@namedef{theo@it@#3}{#1}\@namedef{theo@sp@#3}{#2}%
+	\@ifnextchar[%]
+		     {\@othm{#3}}{\@nthm{#3}}}
+\def\@begintheorem#1#2{\DESCRIPTION \csname theo@it@\@currenvir\endcsname
+	\item[#1\csname theo@sp@\@currenvir\endcsname #2]}
+\def\@opargbegintheorem#1#2#3{\DESCRIPTION
+	\csname theo@style@\@currenvir\endcsname
+	\item[#1\csname theo@sp@\@currenvir\endcsname #2\ (#3)]}
+\let\@endtheorem\endlist
+\ifDS@english
+\let\theo@it\it \let\theo@sp\ %
+\else
+\let\theo@it\relax \let\theo@sp\relax
+\fi
+
+%==================================================================================================
+
+
+\ifDS@english
+\newcommand{\refname}{References}
+\else
+\newcommand{\refname}{参考文献}
+\fi
+
+
+\newdimen\bibindent
+\setlength\bibindent{1.5em}
+\def\@biblabel#1{[#1]}
+
+
+
+
+
+\newenvironment{thebibliography}[1]
+ {%
+\ifDS@english
+%\fontsize{11\Q}{12\h}\selectfont%
+\footnotesize\baselineskip12\h % 11Qx12H
+\else
+\small\baselineskip15\h % 12Qx15H
+\fi
+ \subsection*{{\normalsize%\footnotesize%
+\refname}}%
+\vspace*{2mm}%%
+%\noindent{\bfseries{\refname}}%
+%%%%%%%%%%%%
+\def\@mklab##1{##1\hfil } % 
+%\def\@mklab##1{\hfil ##1}
+%
+   \list{\@biblabel{\@arabic\c@enumiv}}%
+        {\settowidth\labelwidth{\@biblabel{#1}}%
+         \leftmargin\labelwidth
+         \advance\leftmargin\labelsep
+%
+%         
+         \@openbib@code
+         \usecounter{enumiv}%
+         \let\p@enumiv\@empty
+         \renewcommand\theenumiv{\@arabic\c@enumiv}}%
+         \parskip\z@
+	 \topsep\z@\partopsep\z@
+         \itemsep1\h
+         \parsep\z@
+%         \baselineskip3.5mm
+%
+   \sloppy
+   \clubpenalty\z@
+   \@clubpenalty\clubpenalty
+   \widowpenalty\z@
+   \sfcode`\.\@m
+}
+  {\def\@noitemerr
+    {\@latex@warning{Empty `thebibliography' environment}}%
+   \endlist\unskip}
+%%%%
+\let\@openbib@code\@empty
+
+
+
+
+%==================================================================================================
+
+
+%%%%%%%%%%%%%%%%% These are borrowed style files %%%%%%%%%%%
+%%% from  LaTeX
+\def\pushtowall{\relax\leavevmode
+\ifmmode\def\next{\mathpalette\mathpushw@ll}
+\else\let\next\makepushw@ll \fi \next}
+\def\finpushw@ll{\wd0=0pt \box0}
+\def\makepushw@ll#1{\setbox0=\hbox{#1}\finpushw@ll}
+\def\mathpushw@ll#1#2{\setbox0=\hbox{$\m@th#1{#2}$}\finpushw@ll}
+%%%% 
+
+\ifDS@english
+\newcommand{\profname}{\relax}
+\else
+\newcommand{\profname}{著者玹介}
+\fi
+
+
+
+\newenvironment{biography}{%
+\vspace{2\baselineskip}%
+% \subsection*{\profname}%
+%\noindent{\bfseries{\profname}}\par
+\nobreak%
+ \footnotesize\normalfont
+ \parindent\z@
+ \vskip\baselineskip
+ \penalty\@medpenalty
+ \penalty\@M
+  \let\@profile\@eprofile
+  \let\n@profile\n@eprofile
+%%%
+\ifDS@english
+\vskip.5\Cvs%
+\else
+\vskip-.5\Cvs%
+\fi
+%%%
+}{\par}
+
+
+%%
+\newcounter{profile}
+%%
+
+
+\def\profile{\@ifstar{\n@eprofile}{\@eprofile}}
+
+
+\def\@eprofile{%
+\@ifnextchar[%% ]
+{\ip@eprofile}
+{\no@eprofile}
+}
+
+
+
+
+\ifDS@english
+%%%%%%%%%%%%%%%%%%%%%
+\gdef\ip@eprofile[#1]#2#3{%
+ \stepcounter{profile}%
+ \vbox{%
+  \fmt@pro@pic{#2}{#3}{#1}%
+ }%
+ \vskip2\Cvs%
+}
+%%%%%%%%%%%%%%%%%%%%%
+\gdef\n@eprofile#1#2{%
+ \stepcounter{profile}%
+ \vbox{%
+  \fmt@pro@nopicnoframe{#1}{#2}%
+ }%
+ \vskip2\Cvs%
+}
+%%%%%%%%%%%%%%%%%%%%%
+\gdef\no@eprofile#1#2{%
+ \stepcounter{profile}%
+ \vbox{%
+  \fmt@pro@nopic{#1}{#2}%
+ }%
+ \vskip2\Cvs%
+}
+%%%%%%%%%%%%%%%%%%%%%
+%=====================
+\else
+%=====================
+%%%%%%%%%%%%%%%%%%%%%
+\gdef\ip@eprofile[#1]#2#3#4{%
+ \stepcounter{profile}%
+ \vbox{%
+  \fmt@pro@pic{#2}{#3}{#4}{#1}%
+ }%
+ \vskip2\Cvs%
+}
+%%%%%%%%%%%%%%%%%%%%%
+\gdef\n@eprofile#1#2#3{%
+ \stepcounter{profile}%
+ \vbox{%
+  \fmt@pro@nopicnoframe{#1}{#2}{#3}%
+ }%
+ \vskip2\Cvs%
+}
+%%%%%%%%%%%%%%%%%%%%%
+\gdef\no@eprofile#1#2#3{%
+ \stepcounter{profile}%
+ \vbox{%
+  \fmt@pro@nopic{#1}{#2}%
+ }%
+ \vskip2\Cvs%
+}
+%%%%%%%%%%%%%%%%%%%%%
+\fi
+
+
+\def\BreakMember{\def\@BreakMember{\\}}
+\let\@BreakMember\relax
+
+
+
+\ifDS@english
+%%%%%%%%%%%%%%%%%%%%%
+\gdef\ip@eprofile[#1]#2#3{%
+ \stepcounter{profile}%
+ \vbox{%
+%  \fmt@pro@noEname%
+  \fmt@pro@pic{#2}{#3}{#1}%
+ }%
+ \vskip2\Cvs%
+}
+%%%%%%%%%%%%%%%%%%%%%
+\gdef\n@eprofile#1#2{%
+ \stepcounter{profile}%
+ \vbox{%
+%  \fmt@pro@noEname{#1}%
+  \fmt@pro@nopicnoframe{#1}{#2}%
+ }%
+ \vskip2\Cvs%
+}
+%%%%%%%%%%%%%%%%%%%%%
+\gdef\no@eprofile#1#2{%
+ \stepcounter{profile}%
+ \vbox{%
+%  \fmt@pro@noEname{#1}%
+  \fmt@pro@nopic{#1}{#2}%
+ }%
+ \vskip2\Cvs%
+}
+%%%%%%%%%%%%%%%%%%%%%
+%=====================
+\else
+%=====================
+%%%%%%%%%%%%%%%%%%%%%
+\gdef\ip@eprofile[#1]#2#3#4{%
+ \stepcounter{profile}%
+ \vbox{%
+%  \fmt@pro@noEname%
+  \fmt@pro@pic{#2}{#3}{#4}{#1}%
+ }%
+ \vskip2\Cvs%
+}
+%%%%%%%%%%%%%%%%%%%%%
+\gdef\n@eprofile#1#2#3{%
+ \stepcounter{profile}%
+ \vbox{%
+%  \fmt@pro@noEname{#1}%
+  \fmt@pro@nopicnoframe{#1}{#2}{#3}%
+ }%
+ \vskip2\Cvs%
+}
+%%%%%%%%%%%%%%%%%%%%%
+\gdef\no@eprofile#1#2#3{%
+ \stepcounter{profile}%
+ \vbox{%
+%  \fmt@pro@noEname{#1}%
+  \fmt@pro@nopic{#1}{#2}{#3}%
+ }%
+ \vskip2\Cvs%
+}
+%%%%%%%%%%%%%%%%%%%%%
+\fi
+
+
+
+
+
+
+
+
+
+%%% 
+\ifDS@english
+\def\fmt@pro@pic#1#2#3{%
+\noindent
+\begin{minipage}[t]{\columnwidth}%
+\leavevmode%
+\noindent\IfFileExists{#3.eps}{%
+\noindent
+{\raisebox{-28.19mm}{\pushtowall{%{-19.3mm}
+\smash{%
+\resizebox{25mm}{31mm}{\includegraphics{#3.eps}}}}}%<-- kao
+}%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+}%{%
+%\noindent{\smash{\raisebox{8mm}{\pushtowall{%
+%\begin{minipage}[t]{25mm}
+%     \hrule \@height .1mm
+%     \hbox to 25mm{\vrule \@width .1mm \@height 31mm\hss
+%                   \vrule \@width .1mm \@height 31mm}%
+%     \hrule \@height .1mm
+%\end{minipage}
+%}}}}
+%}%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\pushtowall{\raisebox{.5mm}{%%
+\begin{minipage}[t]{\columnwidth}%
+%\raggedright%
+%\penalty=-200%
+\hangindent30mm\hangafter-8\relax
+\mbox{\fontsize{13\Q}{18\h}\selectfont\bfseries #1}\hskip.5em%
+%%
+%
+%\@BreakMember%%
+%%%%%%%%%%%%%%
+%\if #1m\relax
+%   \hangindent31mm{\normalsize (Member)}\else%
+%\if #1s\relax
+%   \hangindent31mm{\normalsize (Student Member)}\else%
+%\if #1f\relax
+%   \hangindent31mm{\normalsize (Member, Fellow)}\else%
+%\if #1h\relax
+%   \hangindent31mm{\normalsize (Honorary Member, Fellow)}\else%
+%\if #1n\relax
+%    \relax
+%  \else
+% \relax
+%\fi\fi\fi\fi\fi
+%%%%%%%%%%
+%\\[.5\Cvs]
+%==============
+\baselineskip=18\h%
+{\fontsize{13\Q}{18\h}\selectfont%
+#2}
+%==============
+\end{minipage}}}%
+\end{minipage}%
+%\global\let\@BreakMember\relax
+}
+%===============================================================
+\else
+%===============================================================
+\def\fmt@pro@pic#1#2#3#4{%
+\noindent
+%%% kao
+\begin{minipage}[t]{\columnwidth}%
+\leavevmode%
+\noindent\IfFileExists{#4.eps}{%
+\noindent
+{\raisebox{-27.8mm}{\pushtowall{%{-19.3mm}
+\smash{%
+\resizebox{25mm}{31mm}{\includegraphics{#4.eps}}}}}%<-- kao
+}%
+%%%%%%
+}%{%
+%\noindent{\smash{\raisebox{8mm}{\pushtowall{%
+%\begin{minipage}[t]{25mm}
+%     \hrule \@height .1mm
+%     \hbox to 25mm{\vrule \@width .1mm \@height 31mm\hss
+%                   \vrule \@width .1mm \@height 31mm}%
+%     \hrule \@height .1mm
+%\end{minipage}
+%}}}}}%
+%%%%%%%%%%%%
+\pushtowall{\begin{minipage}[t]{\columnwidth}%
+\hangindent30mm\hangafter-7\relax
+\mbox{\fontsize{15\JQ}{0\h}\selectfont\bfseries #2}%%
+%%
+\hskip1.6zw%%%
+\@BreakMember%%
+%%%%%%%%%%%%%% <<<<<<<<<<<<<<<<< v2.0
+\@for\@temp:=#1\do{%   koko
+   \@ifundefined{\@temp @member}{\relax}%
+                {\edef\@@member{\csname \@temp @member\endcsname}%
+                }%
+   \@ifundefined{\@temp @title@member}{\relax}%
+                {\edef\@title@member{\csname \@temp @title@member\endcsname}%
+                }%
+}%
+\hangindent30mm{\normalsize \inhibitglue\csname @@member\endcsname}%
+%
+%\if #1m\relax
+%   \hangindent30mm{\normalsize \inhibitglue正䌚員}\else%
+%\if #1s\relax
+%   \hangindent30mm{\normalsize \inhibitglue孊生䌚員}\else%
+%\if #1j\relax
+%   \hangindent30mm{\normalsize \inhibitglueゞュニア䌚員}\else%
+%\if #1F\relax
+%   \hangindent30mm{\normalsize \inhibitglue正䌚員フェロヌ}\else%
+%\if #1h\relax
+%   \hangindent30mm{\normalsize \inhibitglue名誉䌚員フェロヌ}\else%
+%\if #1n\relax
+%   \relax
+%  \else
+% \relax
+%\fi\fi\fi\fi\fi\fi
+%%%%%%%%%%
+\\[.5\Cvs]
+%============== <<<<<<<<<<<<<<<<< v2.0
+\baselineskip=21\h{\fontsize{13\JQ}{21\h}\selectfont #3%
+\csname @title@member\endcsname}%
+%==============
+\end{minipage}}%
+\end{minipage}%
+\global\let\@BreakMember\relax
+}
+\fi
+
+
+\def\h@member{名誉䌚員}
+\def\m@member{正䌚員}
+\def\s@member{孊生䌚員}
+\def\j@member{ゞュニア䌚員}
+
+\def\F@title@member{本䌚フェロヌ}
+\def\E@title@member{本䌚シニア䌚員}
+\def\L@title@member{本䌚終身䌚員}
+
+
+%
+%\ifDS@english
+%\newcommand{\FELLOW}{FELLOW.}
+%\newcommand{\SENIOR}{SENIOR Member.}
+%\else
+%\newcommand{\FELLOW}{本䌚フェロヌ}
+%\newcommand{\SENIOR}{本䌚シニア䌚員}
+%\newcommand{\SHUUSIN}{本䌚終身䌚員}
+%\fi
+
+
+%==================================================================
+%==================================================================
+
+
+%%% E:  profile{name}{xxx}
+%%% J:  profile{m}{name}{xxx}
+\ifDS@english
+\def\fmt@pro@nopic#1#2{%
+\noindent
+%%% kao
+\begin{minipage}[t]{\columnwidth}%
+\leavevmode%
+\noindent\IfFileExists{\the\c@profile.eps}{%
+\noindent
+{\raisebox{-28mm}{\pushtowall{%{-19.3mm}
+\smash{%
+%\resizebox{25mm}{31mm}{\includegraphics{#4.eps}}
+}}}%<-- kao
+}%
+%%%%%%%
+}{%
+\noindent{%\smash
+{\raisebox{2.2mm}{\pushtowall{%
+\begin{minipage}[t]{25mm}
+     \hrule \@height .1mm
+     \hbox to 25mm{\vrule \@width .1mm \@height 31mm\hss
+                   \vrule \@width .1mm \@height 31mm}%
+     \hrule \@height .1mm
+\end{minipage}
+}}}}}%
+%%%%%%%
+\pushtowall{\begin{minipage}[t]{\columnwidth}%
+\hangindent30mm\hangafter-8\relax
+\mbox{\fontsize{13\Q}{18\h}\selectfont\bfseries #1}\hskip.5em%%
+%%
+%\quad%%%
+%\@BreakMember%%
+%%%%%%%%%%%%%%
+%\if #1m\relax
+%   \hangindent31mm{\normalsize (Member)}\else%
+%\if #1s\relax
+%   \hangindent31mm{\normalsize (Student Member)}\else%
+%\if #1j\relax
+%   \hangindent31mm{\normalsize (Member, Fellow)}\else%
+%\if #1h\relax
+%   \hangindent31mm{\normalsize (Honorary Member, Fellow)}\else%
+%\if #1n\relax
+%   \relax
+%  \else
+% \relax
+%\fi\fi\fi\fi\fi
+%%%%%%%%%%
+%\\[.5\Cvs]
+%==============
+\baselineskip=18\h%
+{\fontsize{13\Q}{18\h}\selectfont%
+#2}
+%==============
+\end{minipage}}%
+\end{minipage}%
+%\global\let\@BreakMember\relax
+}
+%===============================================================
+\else
+%===============================================================
+\def\fmt@pro@nopic#1#2#3{%
+\noindent
+\begin{minipage}[t]{\columnwidth}%
+\leavevmode%
+\noindent\IfFileExists{\the\c@profile.eps}{%
+\noindent
+{\raisebox{-28mm}{\pushtowall{%{-19.3mm}
+\smash{%
+%\resizebox{25mm}{31mm}{\includegraphics{#4.eps}}%%
+}}}%<-- kao
+}%
+%%%%%%%
+}{%
+\noindent{%\smash
+{\raisebox{3mm}{\pushtowall{%
+\begin{minipage}[t]{25mm}
+     \hrule \@height .1mm
+     \hbox to 25mm{\vrule \@width .1mm \@height 31mm\hss
+                   \vrule \@width .1mm \@height 31mm}%
+     \hrule \@height .1mm
+\end{minipage}
+}}}}}%
+%%%%%%%%
+\pushtowall{\begin{minipage}[t]{\columnwidth}%
+\hangindent30mm\hangafter-7\relax
+\mbox{\fontsize{15\JQ}{0\h}\selectfont\bfseries #2}%%
+%%
+\hskip1.6zw%%%
+\@BreakMember%%
+%%%%%%%%%%%%%% <<<<<<<<<<<<<<<<< v2.0
+\@for\@temp:=#1\do{%   koko
+   \@ifundefined{\@temp @member}{\relax}%
+                {\edef\@@member{\csname \@temp @member\endcsname}%
+                }%
+   \@ifundefined{\@temp @title@member}{\relax}%
+                {\edef\@title@member{\csname \@temp @title@member\endcsname}%
+                }%
+}%
+\hangindent30mm{\normalsize \inhibitglue\csname @@member\endcsname}%
+%
+%\if #1m\relax
+%   \hangindent30mm{\normalsize \inhibitglue正䌚員}\else%
+%\if #1s\relax
+%   \hangindent30mm{\normalsize \inhibitglue孊生䌚員}\else%
+%\if #1j\relax
+%   \hangindent30mm{\normalsize \inhibitglueゞュニア䌚員}\else%
+%\if #1F\relax
+%   \hangindent30mm{\normalsize \inhibitglue正䌚員フェロヌ}\else%
+%\if #1h\relax
+%   \hangindent30mm{\normalsize \inhibitglue名誉䌚員フェロヌ}\else%
+%\if #1n\relax
+%   \relax
+%  \else
+% \relax
+%\fi\fi\fi\fi\fi\fi
+%%%%%%%%%%
+\\[.5\Cvs]
+%============== <<<<<<<<<<<<<<<<< v2.0
+\baselineskip=21\h{\fontsize{13\JQ}{21\h}\selectfont #3%
+\csname @title@member\endcsname}%
+%==============
+\end{minipage}}%
+\end{minipage}%
+\global\let\@BreakMember\relax
+}
+\fi
+
+
+
+
+
+%==================================================================
+%==================================================================
+
+
+
+%%% profile*{m}{name}{xxx}
+\ifDS@english
+\def\fmt@pro@nopicnoframe#1#2{%
+\noindent
+\begin{minipage}[t]{\columnwidth}%
+\pushtowall{\begin{minipage}[t]{\columnwidth}%
+%\hangindent30mm\hangafter-7\relax
+\mbox{\fontsize{13\JQ}{18\h}\selectfont\bfseries #1}\hskip.5em%%
+%%
+%\quad%%%
+%\@BreakMember%%
+%%%%%%%%%%%%%%
+%\if #1m\relax
+%{\normalsize (Member)}\else%
+%\if #1s\relax
+%{\normalsize (Student Member)}\else%
+%\if #1j\relax
+%{\normalsize (Member, Fellow)}\else%
+%\if #1h\relax
+%{\normalsize (Honorary Member, Fellow)}\else%
+%\if #1n\relax
+%   \relax
+%  \else
+% \relax
+%\fi\fi\fi\fi\fi
+%%%%%%%%%%
+%\\[.5\Cvs]
+%==============
+\baselineskip=18\h%
+{\fontsize{13\Q}{18\h}\selectfont%
+#2}
+%==============
+\end{minipage}}%
+\end{minipage}%
+\global\let\@BreakMember\relax
+}
+%===============================================================
+\else
+%===============================================================
+\def\fmt@pro@nopicnoframe#1#2#3{%
+\begin{minipage}[t]{\columnwidth}%
+\noindent
+\pushtowall{\begin{minipage}[t]{\columnwidth}%
+%%\hangindent30mm\hangafter-7\relax
+\mbox{\fontsize{15\JQ}{0\h}\selectfont\bfseries #2}%%
+%%
+\hskip1.6zw%%%
+\@BreakMember%%
+%%%%%%%%%%%%%% <<<<<<<<<<<<<<<<< v2.0
+\@for\@temp:=#1\do{%   koko
+   \@ifundefined{\@temp @member}{\relax}%
+                {\edef\@@member{\csname \@temp @member\endcsname}%
+                }%
+   \@ifundefined{\@temp @title@member}{\relax}%
+                {\edef\@title@member{\csname \@temp @title@member\endcsname}%
+                }%
+}%
+%\hangindent30mm
+{\normalsize \inhibitglue\csname @@member\endcsname}%
+%
+%\if #1m\relax
+%   \hangindent30mm{\normalsize \inhibitglue正䌚員}\else%
+%\if #1s\relax
+%   \hangindent30mm{\normalsize \inhibitglue孊生䌚員}\else%
+%\if #1j\relax
+%   \hangindent30mm{\normalsize \inhibitglueゞュニア䌚員}\else%
+%\if #1F\relax
+%   \hangindent30mm{\normalsize \inhibitglue正䌚員フェロヌ}\else%
+%\if #1h\relax
+%   \hangindent30mm{\normalsize \inhibitglue名誉䌚員フェロヌ}\else%
+%\if #1n\relax
+%   \relax
+%  \else
+% \relax
+%\fi\fi\fi\fi\fi\fi
+%%%%%%%%%%
+\\[.5\Cvs]
+%============== <<<<<<<<<<<<<<<<< v2.0
+\baselineskip=21\h{\fontsize{13\JQ}{21\h}\selectfont #3%
+\csname @title@member\endcsname}%
+%==============
+\end{minipage}}%
+\end{minipage}%
+\global\let\@BreakMember\relax
+}
+\fi
+
+
+
+
+%==================================================================================================
+
+%\setlength\footnotesep{6.65\p@}
+\setlength{\skip\footins}{9\p@ \@plus 4\p@ \@minus 2\p@}
+
+
+
+
+%\renewcommand{\footnoterule}{%
+%  \kern-3\p@
+%  \hrule width \columnwidth
+%  \kern 2.6\p@}
+
+\ifDS@english
+\setlength\footnotesep{6.65\p@}%%!!
+%
+\renewcommand{\footnoterule}{%
+  \kern-3\p@
+  \hrule width \columnwidth
+  \kern 2.6\p@}
+\else
+\setlength\footnotesep{10\h}%!!
+%
+\renewcommand{\footnoterule}{%
+  \kern-4\p@
+  \hrule width \columnwidth
+  \kern 1.6\p@}
+\fi
+
+
+
+\let\footnotes@ve=\footnote
+\ifDS@english
+\def\footnote{\footnotes@ve}
+\else
+\def\footnote{\inhibitglue\footnotes@ve}
+\fi
+
+\let\footnotemarks@ve=\footnotemark
+\ifDS@english
+\def\footnotemark{\footnotemarks@ve}
+\else
+\def\footnotemark{\inhibitglue\footnotemarks@ve}
+\fi
+
+
+\def\thefootnote{\ifnum\c@footnote>\z@\leavevmode\lower.5ex\hbox{*}\@arabic\c@footnote\fi}
+
+
+
+
+
+
+\long\def\@footnotetext#1{\insert\footins{%
+    \reset@font\footnotesize
+    \interlinepenalty\interfootnotelinepenalty
+    \splittopskip\footnotesep
+    \splitmaxdepth \dp\strutbox \floatingpenalty \@MM
+    \hsize\columnwidth \@parboxrestore
+    \protected@edef\@currentlabel{%
+       \csname p@footnote\endcsname\@thefnmark
+    }%
+    \color@begingroup
+      \@makefntext{%
+        \rule\z@\footnotesep\ignorespaces#1\@finalstrut\strutbox}%
+    \color@endgroup}}%
+
+
+
+
+\def\footfont{%
+\ifDS@english
+ \fontsize{11\Q}{13\h}\normalfont\selectfont%
+\else
+ \fontsize{11\JQ}{14\h}\normalfont\selectfont%
+\fi
+}
+
+
+%%%<<<< 1.02
+\long\def\@makefntext#1{\footfont%
+\ifDS@english
+\setbox\z@=\hbox{\makebox[1.61\Cwd][l]{\@makefnmark}}%
+\else
+\setbox\z@=\hbox{\makebox[1.58\Cwd][l]{\@makefnmark}}%
+\fi
+\def\par{{\@@par}}
+\@tempdima\columnwidth
+\advance\@tempdima-\wd\z@
+\parshape 1 \wd\z@ \@tempdima
+\parindent=1\zw
+\noindent
+\llap{\unhbox\z@}#1}
+
+
+
+
+%==================================================================================================
+
+%==================================================================================================
+
+
+
+
+%% from fleqn.clo
+%%\ProvidesFile{fleqn.clo}
+%%       [1998/08/17 v1.1c Standard LaTeX option
+%%                                   (flush left equations)]
+\newdimen\mathindent
+\AtEndOfClass{\mathindent1\zw}% \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}
+\renewenvironment{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 \hskip.8\arraycolsep \hfil${##}$\hfil&%
+      \global\@eqcnt\tw@ \hskip.8\arraycolsep
+        $\displaystyle{##}$\hfil \tabskip\@centering&%
+      \global\@eqcnt\thr@@
+        \hb@xt@\z@\bgroup\hss##\egroup\tabskip\z@skip\cr}%
+      {\@@eqncr
+    \egroup
+    \global\advance\c@equation\m@ne$$% $$
+    \@ignoretrue
+    }
+%%\endinput
+%%
+%% End of file `fleqn.clo'.
+
+\def\@eqnnum{{\normalfont \normalcolor (\theequation)\hspace*{3mm}}}
+
+
+%=============================================================================
+
+
+%% Editor
+
+\def\Ediname{\csname Ediname@\@type\endcsname}
+
+
+\def\Ediname@DAM{\ifDS@english%
+{Editor in Charge:}
+\else {担圓線集委員}
+\fi}%%
+
+\def\Ediname@TBIO{Communicated by}
+\def\Ediname@CVA{Communicated by}
+
+
+\def\Ediname@SLDM{\ifDS@invited
+{Invited by Editor-in-Chief:}%
+\else%
+{Recommended by Associate Editor:}%
+\fi}
+
+
+\let\Ediname@TOD\Ediname@DAM
+\let\Ediname@Data\Ediname@TBIO
+\let\Ediname@Survey\Ediname@TBIO
+\let\Ediname@Research\Ediname@CVA
+\let\Ediname@Short\Ediname@SLDM
+
+
+
+\def\Edifont{\normalfont\normalsize}
+
+
+
+%%%% <<<<<<<<<<  4.0
+\def\Editor#1{%
+\vspace{-.5\baselineskip}%
+\ifDS@english
+%%% v4.0
+\ifDS@JIP\else
+%%%
+  \ifx\Ediname\relax%
+  \noindent
+  \hfill ({\Edifont{\Ediname@DEF}}%%)
+  \else
+  \noindent
+  \hfill ({\Edifont{\Ediname}}%%)
+  \fi
+\fi
+%%
+\else
+\noindent
+\hfill \<{\Edifont{\Ediname}}%%
+\fi
+%%
+\ifDS@english
+%%% v1.8
+  \ifDS@JIP\else
+%%%
+     \hskip.5em%
+     \textit{#1})%
+  \fi
+\else
+  \hskip1\zw%
+  #1
+\fi
+}
+
+
+
+
+
+
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+
+
+%=============================================================================
+
+
+
+\newcommand\appendixname{%
+\ifDS@english Appendix\else \protect\kintou{5zw}{付録}\fi}
+
+
+
+
+\newcommand\appendix{\par
+%\def\@seccntformat##1{a\thesection.\the\c@subsection\ }%  ver2.3
+\ifDS@english
+\def\@seccntformatAPP##1{\csname the##1\endcsname\hskip1em}
+\else
+\def\@seccntformatAPP##1{\csname the##1\endcsname\hskip1zw}
+\fi
+\vspace*{\Cvs}%
+\renewcommand{\section}{\@startsectionAPP{section}{1}{\z@}%
+{.00001\Cvs}% \@plus.3\Cdp \@minus.2\Cdp}% \@plus1.3\Cdp\@minus10.5\Cdp}%
+{.00001\Cvs}% \@plus.3\Cdp \@minus.2\Cdp}%
+{\reset@font
+\fontsize{16\JQ}{21\h}\selectfont%
+\bfseries\mathversion{bold}%
+}}%
+%-----------
+\section*{\appendixname}
+  \setcounter{section}{0}%
+  \setcounter{subsection}{0}%
+  \setcounter{equation}{0}%
+  \setcounter{figure}{0}%
+  \setcounter{table}{0}%
+%\renewcommand\thesection{\@Alph\c@section}
+%\renewcommand\thesubsection   {\thesection.\@arabic\c@subsection}
+%
+\renewcommand\thesection{A.\@arabic\c@section}
+\renewcommand\thesubsection{\thesection.\@arabic\c@subsection}
+%
+%\renewcommand\theequation {A.\@arabic\c@equation}
+\renewcommand\theequation {A.\@arabic\c@equation}
+%
+\renewcommand \thefigure {{A$\cdot$\@arabic\c@figure}}
+\renewcommand\thetable{{A$\cdot$\@arabic\c@table}}
+\def\fps@figure{tbp}
+\def\ftype@figure{1}
+\def\ext@figure{lof}
+%%%<<<< 3.03
+\def\fnum@figure{\mbox{\figurename~\thefigure}}
+\def\fnum@table{\mbox{\tablename~\thetable}}
+%\@addtoreset{equation}{section}
+%\@addtoreset{figure}{section}
+%\@addtoreset{table}{section}
+}
+
+
+
+
+%=============================================================================
+
+
+\ifDS@english
+\edef\zw{em}\else
+\edef\zw{zw}\fi
+
+\let\Cite\cite
+
+
+
+\if@twocolumn
+  \setlength\leftmargini {2\Cwd}%
+\else
+  \setlength\leftmargini {2\Cwd}%
+\fi
+
+
+\if@twocolumn
+  \setlength\marginparsep{5mm}
+\else
+  \setlength\marginparsep{5mm}
+\fi
+
+
+\if@twocolumn
+  \twocolumn
+  \sloppy
+\else
+  \onecolumn
+\fi
+
+\if@twoside
+  \@mparswitchtrue
+\else
+  \@mparswitchfalse
+\fi
+
+%\sloppy
+\flushbottom
+%\raggedbottom
+\sloppy
+
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\setlength{\paperheight}{297mm}
+\setlength{\paperwidth}{210mm}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+ \ifDS@english
+%%\AtBeginDocument{\RequirePackage{txfonts}}
+\textwidth 177mm
+ \@settopoint\textwidth
+ \textheight 55\Cvs
+% \textheight 250.75mm
+% \textheight 55\baselineskip
+ \advance \textheight \topskip
+ \advance \textheight .4mm %% limit .31mm
+ \@settopoint\textheight
+ \setlength\marginparsep{5mm}
+\else
+\textwidth 177mm
+ \@settopoint\textwidth
+ \textheight 47\Cvs
+ \advance \textheight \topskip
+ \advance \textheight .4mm %% limit .31mm
+ \@settopoint\textheight
+ \setlength\marginparsep{5mm}
+\fi
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%%
+\@tempdima\paperwidth
+\advance\@tempdima-\textwidth
+\@tempdima.5\@tempdima
+\advance\@tempdima-1in
+\oddsidemargin\@tempdima
+\evensidemargin\@tempdima
+\setlength{\topmargin}{-17mm}%
+
+
+
+%
+\columnsep 8mm
+
+%% \doublerulesep is 1pt (H.N.)
+\arraycolsep5pt 
+\tabcolsep6pt
+\arrayrulewidth.4pt
+\doublerulesep1pt 
+\tabbingsep.5\Cwd
+
+\skip\@mpfootins\skip\footins
+\fboxsep3pt \fboxrule.4pt 
+
+
+%% SKIP
+\def\onelineskip{\par\vspace{1\baselineskip}\par}
+\def\halflineskip{\par\vspace{.5\baselineskip}\par}
+
+
+
+%% kintou
+\def\kintou#1#2{\ifDS@english
+\relax\else
+\@ifundefined{jintercharskip}%
+ {\leavevmode\hbox to #1{%
+   \kanjiskip\z@ \@plus 1fill \@minus 1fill\xkanjiskip\kanjiskip #2}}%
+ {\leavevmode\hbox to #1{\kanjiskip\z@ \@plus 1fill \@minus 1fill
+   \jasciikanjiskip\kanjiskip #2}}%
+\fi
+}
+
+
+%% runy
+\def\ruby#1#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}}}}
+
+%% Proof end
+\def\QED{{\unskip\nobreak\hfil\penalty50
+ \hskip1\zw\hbox{}\nobreak\hfil \hbox{$\Box$\hskip1\zw}
+ \parfillskip\z@ \finalhyphendemerits\z@\par}}
+
+
+%% 
+\def\Hline{\noalign{\hrule height 0.4mm}}
+
+
+
+\def\thepage{\the\c@page}
+
+
+\hbadness4000
+\vbadness10001
+\tolerance4000\pretolerance\m@ne
+\clubpenalty\z@
+\widowpenalty\z@
+\displaywidowpenalty\z@
+\interdisplaylinepenalty\z@ %%  100
+\predisplaypenalty\z@       %% 1000
+
+
+\pagestyle{headings}
+
+
+
+
+
+%==================================================================================================
+%==================================================================================================
+
+
+\def\long@fig{\ifDS@english {Figure~\nobreak}\else {\figurename~\nobreak}\fi}
+\def\short@fig{\ifDS@english {Fig.\,\nobreak}\else {\figurename~\nobreak}\fi}
+\def\long@figs{\ifDS@english {Figures~\nobreak}\else {\figurename~\nobreak}\fi}
+\def\short@figs{\ifDS@english {Figs.\,\nobreak}\else {\figurename~\nobreak}\fi}
+
+\def\long@tab{\ifDS@english {Table~}\else {\tablename~\nobreak}\fi}
+\def\short@tab{\ifDS@english {Table~}\else {\tablename~\nobreak}\fi}
+\def\long@tabs{\ifDS@english {Tables~}\else {\tablename~\nobreak}\fi}
+\def\short@tabs{\ifDS@english {Tables~}\else {\tablename~\nobreak}\fi}
+
+
+
+\def\Figref{\bgroup\let\prefix@figtabref\long@fig
+                   \@ifstar\figtabref@star\figtabref@}
+\def\figref{\bgroup\let\prefix@figtabref\short@fig
+                   \@ifstar\figtabref@star\figtabref@}
+\def\Figsref{\bgroup\let\prefix@figtabref\long@figs
+                   \@ifstar\figtabref@star\figtabref@}
+\def\figsref{\bgroup\let\prefix@figtabref\short@figs
+                   \@ifstar\figtabref@star\figtabref@}
+
+\def\Tabref{\bgroup\let\prefix@figtabref\long@tab
+                   \@ifstar\figtabref@star\figtabref@}
+\def\tabref{\bgroup\let\prefix@figtabref\short@tab
+                   \@ifstar\figtabref@star\figtabref@}
+\def\Tabsref{\bgroup\let\prefix@figtabref\long@tabs
+                   \@ifstar\figtabref@star\figtabref@}
+\def\tabsref{\bgroup\let\prefix@figtabref\short@tabs
+                   \@ifstar\figtabref@star\figtabref@}
+
+
+
+\def\figtabref@star#1{\prefix@figtabref\ref{#1}\egroup}
+
+\def\figtabref@#1{%
+   \let\bf@or@normal\normalfont
+   \@ifundefined{used@#1}{\expandafter\gdef\csname used@#1\endcsname{used}%
+                          \let\bf@or@normal\bfseries}{\relax}%
+   \bf@or@normal\prefix@figtabref\ref{#1}\egroup}
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+
+\def\urlj{%
+\@ifnextchar[%% ]
+{\n@urlj}
+{\@urlj}
+}
+
+\def\n@urlj[#1]#2{%
+\normalfont 
+\if #11\relax
+入手先\\ \else%
+\fi
+\normalfont $\langle$\nobreak{#2}\nobreak$\rangle$}
+
+\def\@urlj#1{%
+\normalfont 入手先$\langle$\nobreak{#1}\nobreak$\rangle$}
+
+
+\def\urle{%
+\@ifnextchar[%% ]
+{\n@urle}
+{\@urle}
+}
+
+
+\def\n@urle[#1]#2{%
+\normalfont 
+\if #11\relax
+available \\ from \else%
+\if #12\relax
+available from \\ \else
+\fi\fi
+$\langle$\nobreak{#2}\nobreak$\rangle$}
+
+
+\def\@urle#1{%
+\normalfont available from $\langle$\nobreak{#1}\nobreak$\rangle$}
+
+
+
+
+\def\refdatej#1{\normalfont 参照{#1}\<}
+\def\refdatee#1{\normalfont (accessed {#1})}
+
+\def\doi#1{\normalfont DOI: #1}
+
+
+
+
+
+\newenvironment{recommendation}{%
+\normalsize%
+\par\vskip\baselineskip%
+\ifDS@english
+   \noindent{\bfseries{Editor's Recommendation}}\par
+\else
+   \noindent{\bfseries{掚薊文}}\par%
+\fi
+}{\par}%\vskip\baselineskip
+
+
+
+
+
+\def\acknowledgment{\par
+\ifDS@english
+   {\bfseries{Acknowledgments}}%
+\hskip1em\ignorespaces%
+\else
+   {\bfseries{謝蟞}}%
+\hskip1\zw\ignorespaces%
+\fi}
+
+
+
+%====================================
+% Dannuki-sita
+%====================================
+
+\newbox\@dummyfigbox
+
+\def\twocolcaption{\refstepcounter\@captype \@dblarg{\@twocolcaption\@captype}}
+
+
+
+\long\def\@twocolcaption#1[#2]#3{\par
+ \begingroup
+  \@parboxrestore
+  \if@minipage
+   \@setminipage
+  \fi
+\footnotesize%%
+   \@maketwocolcaption{%
+{\bfseries{\csname fnum@#1\endcsname}}}{\ignorespaces #3}\par
+ \endgroup}
+
+
+\newdimen\twocolcapwidth
+\twocolcapwidth=.66\textwidth%130mm
+\newdimen\twocolecapwidth
+\twocolecapwidth=.66\textwidth%130mm
+
+
+
+
+
+
+
+
+\ifDS@english
+\long\def\@maketwocolcaption#1#2{%
+ \vskip\abovecaptionskip
+ \setbox\@tempboxa\hbox{#1\hskip1\zw\shortstack[l]{#2}}%
+ \@tempdima\ht\@tempboxa \advance \@tempdima \dp\@tempboxa
+ \setbox\@tempboxb\hbox{#1\hskip1\zw}%% <<
+ \ifdim \@tempdima > \baselineskip
+  \ifdim \wd\@tempboxa > \twocolcapwidth
+  \hbox to\textwidth{\hfil\parbox[t]{\twocolcapwidth}{\hangindent\wd\@tempboxb 
+    #1\hskip1\zw #2}\hfil}%
+\par\prevdepth=0pt%
+\vskip4\@Q
+  \else
+\hbox to\textwidth{\hss\parbox[t]{\wd\@tempboxa}{\hangindent\wd\@tempboxb 
+    #1\hskip1\zw #2}\hss}%
+\par\prevdepth=0pt%
+\vskip4\@Q
+  \fi
+ \else %% <
+  \ifdim \wd\@tempboxa > \twocolcapwidth
+   \hbox to\textwidth{\hfil\begin{tabular}{p{\twocolcapwidth}}\hangindent\wd\@tempboxb 
+    #1\hskip1\zw #2\end{tabular}\hfil}%
+\par\prevdepth=0pt%
+\vskip2.5\@Q
+%\vskip12\@Q
+  \else
+   \setbox\@tempboxb\hbox{#2}%
+   \hbox to\textwidth{\hfil\hbox to\twocolcapwidth
+{\hss\box\@tempboxa\hss}\hfil}%
+\vskip\belowcaptionskip
+  \fi
+ \fi
+}
+%%%%%
+\else
+%%%%%
+\long\def\@maketwocolcaption#1#2{%
+ \vskip\abovecaptionskip
+ \setbox\@tempboxa\hbox{#1\hskip1\zw\shortstack[l]{#2}}%
+ \@tempdima\ht\@tempboxa \advance \@tempdima \dp\@tempboxa
+ \setbox\@tempboxb\hbox{#1\hskip1\zw}%% <<
+ \ifdim \@tempdima > \baselineskip
+  \ifdim \wd\@tempboxa > \twocolcapwidth
+   \hbox to\textwidth{\hfil\parbox[t]{\twocolcapwidth}{\hangindent\wd\@tempboxb 
+    #1\hskip1\zw #2}\hfil}\vskip2\@Q
+  \else
+\hbox to\textwidth{\hss\parbox[t]{\wd\@tempboxa}{\hangindent\wd\@tempboxb 
+    #1\hskip1\zw #2}\hss}
+\vskip2\@Q
+  \fi
+ \else %% <
+  \ifdim \wd\@tempboxa > \twocolcapwidth
+   \hbox to\textwidth{\hfil\begin{tabular}{p{\twocolcapwidth}}\hangindent\wd\@tempboxb 
+    #1\hskip1\zw #2\end{tabular}\hfil}\vskip2\@Q
+  \else
+   \setbox\@tempboxb\hbox{#2}%
+%   \ifdim \wd\@tempboxb < 4.5\Cwd %% >
+%    \hbox to\textwidth{\hss #1\hskip1\zw\kintou{5\Cwd}{#2}\hss}%
+%   \else
+   \hbox to\textwidth{\hfil\hbox to\twocolcapwidth
+{\hss\box\@tempboxa\hss}\hfil}%
+%   \fi
+  \fi
+ \fi
+}
+\fi
+
+
+\def\TABLE{table}%%!!
+
+
+
+
+\long\def\twocolecaption#1{\footnotesize%
+ \setbox\@tempboxa%
+\hbox{{\bfseries%
+\csname fnum@e\@captype\endcsname}\hskip1\zw
+  \shortstack[l]{#1}}%
+ \@tempdima\ht\@tempboxa \advance \@tempdima \dp\@tempboxa
+ \setbox\@tempboxb\hbox{{\bfseries%
+\csname fnum@e\@captype\endcsname}\hskip1\zw}%% <<
+ \ifdim \@tempdima > \baselineskip
+  \ifdim \wd\@tempboxa > \twocolecapwidth
+\hbox to\textwidth{\hss\parbox[t]{\twocolecapwidth}{\hangindent\wd\@tempboxb 
+    {\bfseries%
+\csname fnum@e\@captype\endcsname}\hskip1\zw #1}\hss}\par\prevdepth=0pt%
+  \else
+ \hbox to\textwidth{\hss\parbox[t]{\wd\@tempboxa}{\hangindent\wd\@tempboxb 
+    {\bfseries%
+\csname fnum@e\@captype\endcsname}\hskip1\zw #1}\hss}\par\prevdepth=0pt%%
+\vskip5.9\h%
+  \fi
+ \else %% <
+  \ifdim \wd\@tempboxa > \twocolecapwidth
+\hbox to\textwidth{\hfil\begin{tabular}{p{\twocolecapwidth}}\hangindent\wd\@tempboxb 
+    {\bfseries%
+\csname fnum@e\@captype\endcsname}\hskip1\zw #1\end{tabular}\hfil}
+\par\prevdepth=0pt%
+\vskip3\h%
+  \else
+   \hbox to\textwidth{\hfil\hbox to\twocolcapwidth%
+{\hss\box\@tempboxa\hss}\hfil}%
+\vspace{\belowcaptionskip}\par
+  \fi
+ \fi
+\ifx \@captype\TABLE
+\vspace{1mm}%
+\else
+\fi
+}
+
+
+
+
+
+
+
+
+\def\twocolfig#1{%
+\hbox to \columnwidth{%
+\hbox to \textwidth{\hss
+#1
+\hss}\hss}}
+
+
+
+\def\dummyfigure#1{%
+ \begin{figure}[b]
+ \vspace{#1}
+ \vskip\abovecaptionskip
+ \phantom{\box\@dummyfigbox}\par
+ \end{figure}
+}
+
+\def\dummyfiguret#1{%
+ \begin{figure}[t]
+ \vspace{#1}
+ \vskip\abovecaptionskip
+ \phantom{\box\@dummyfigbox}\par
+ \end{figure}
+}
+
+%====================================
+
+
+
+
+
+%
+\long\def\contact#1{}
+
+%
+\def\MARU#1{\raisebox{0.1zh}{{\rm
+\ooalign{\hfil
+\lower.168ex\hbox{\ifnum#1<10\relax {#1}\else \scalebox{.5}[1]{#1}\fi}%
+\hfil\crcr
+\mathhexbox20D}}}}
+
+%
+\ifDS@english
+\def\ddash{\leavevmode \raise.1mm\hbox to 1.95em{\hfil ---\hss ---\hfil}}
+\else
+\def\ddash{\leavevmode \raise.1zh\hbox to 2zw{---\hss ---}}
+\fi
+
+\let\doubledash\ddash
+
+
+%% for ams
+\AtBeginDocument{%
+\newcommand{\ipeqref}[1]{\textup{\iptagform@{\ref{#1}}}}%% v1.5
+\mathindent1em%
+\def\tagform@#1{\maketag@@@{(\ignorespaces#1\unskip\@@italiccorr)\hskip1\zw}}%
+\def\iptagform@#1{\maketag@@@{(\ignorespaces#1\unskip\@@italiccorr)}}%% v1.5
+\let\eqref\ipeqref%% v1.5
+}
+
+
+
+%% sort cite
+\def\@cite@itemsep{,\penalty\@m\ }
+\def\@cite@firstdelim{}
+\def\@cite@lastdelim{}
+
+\def\@cite#1#2{%
+   \ifvmode\leavevmode\fi\nobreak
+   \if@tempswa\@cite@without@comment{#1}{#2}%
+   \else      \@cite@with@comment{#1}%
+   \fi}
+
+\def\@cite@without@comment#1#2{%
+   \@cite@firstdelim{#1, #2}\@cite@lastdelim}%
+
+\def\@cite@with@comment#1{%
+   \@cite@firstdelim{#1}\@cite@lastdelim
+}
+
+\def\@citex[#1]#2{%
+   \let\@cite@reference@list\@empty
+   \let\@cite@undefined@reference\@empty
+   \@for\@tempa:=#2\do{%
+      \edef\@tempa{\expandafter\@firstofone\@tempa\@empty}%
+      \if@filesw
+         \immediate\write\@auxout{\string\citation{\@tempa}}%
+      \fi 
+      \@ifundefined{b@\@tempa}%
+      {\G@refundefinedtrue
+          \@latex@warning{Citation `\@tempa' on page
+          \thepage \space undefined}%
+       \def\@cite@undefined@reference{%
+           \@cite@put@itemsep
+            \mbox{\reset@font\bfseries ?}}}%
+       {\edef\@tempb{{\@nameuse{b@\@tempa}}}%     
+        \expandafter\@append@list\expandafter         
+           \@cite@reference@list\@tempb}}%
+       \@simplify@list\@cite@reference@list
+       \@ascending@sort@list\@cite@reference@list\@compare@num 
+       \@cite{{\let\@elt\@cite@output@elt
+               \def\@cite@put@itemsep{%
+                  \def\@cite@put@itemsep{\@cite@itemsep}}%
+                \@cite@reference@list
+                \@cite@undefined@reference}}%
+        {#1}}%
+
+
+\def\@cite@output@elt#1{%
+    \@cite@put@itemsep
+    \bgroup[#1]\egroup
+}
+
+%%%%%%%%%%%%%%%
+\def\@append@list#1#2{%
+   \@addto@macro#1{\@elt{#2}}}%
+
+\def\@addto@macro#1#2{%
+   \expandafter\def\expandafter#1\expandafter{#1#2}}
+       
+\def\@simplify@list#1{%
+   \begingroup
+      \let\@templist\@empty
+      \loop\ifx#1\@empty\else
+         \@pop@list\@firstterm#1%
+         \expandafter\@append@list\expandafter\@templist
+             \expandafter{\@firstterm}%
+         \expandafter\@remove@from@list\expandafter#1%
+             \expandafter{\@firstterm}%
+      \repeat
+      \expandafter\endgroup\expandafter
+         \def\expandafter#1\expandafter{\@templist}}
+
+\def\@remove@from@list#1#2{%
+    \begingroup
+    \let\@templist\@empty
+    \def\@to@be@removed{#2}%
+    \let\@elt\@remove@from@list@elt
+     #1%
+    \expandafter\endgroup\expandafter
+      \def\expandafter#1\expandafter{\@templist}}
+
+\def\@remove@from@list@elt#1{%
+   \def\@tempa{#1}%
+   \ifx\@tempa\@to@be@removed\else
+      \@append@list\@templist{#1}%
+   \fi}%
+
+\def\@pop@list#1#2{%
+   \ifx#2\@empty\let#1\@empty
+   \else        \expandafter\@pop@list@#2\@nil#1#2%
+   \fi
+}
+
+\def\@pop@list@\@elt#1#2\@nil#3#4{%
+    \def#3{#1}\def#4{#2}}
+
+
+\newcount\@compare@result
+
+\def\@compare@num#1#2{%
+    \@compare@result#1\relax
+    \advance\@compare@result-#2\relax
+}
+
+\def\@ascending@sort@list{\@sort@list<}
+\def\@descending@sort@list{\@sort@list>}
+
+\def\@sort@list#1#2#3{%
+   \begingroup
+   \let\@sort@templista\@empty
+   \def\@elt##1{%
+      \@addto@sorted@list#1\@sort@templista{#3}{##1}}%
+   #2%
+   \expandafter\endgroup\expandafter
+      \def\expandafter#2\expandafter{\@sort@templista}}
+
+
+\newif\if@ignore@same@item
+
+\def\@addto@sorted@list#1#2#3#4{%
+    \begingroup
+    \let\@sort@templistb\@empty
+    \def\@tempz{\@elt{#4}}%
+    \def\@elt##1{%
+        #3{##1}{#4}%
+        \def\@tempa{\@elt{##1}}%
+        \let\@tempb\@empty
+        \ifnum\z@#1\@compare@result
+           \@csc@t\@tempa\@tempz\@tempa
+           \def\@tempb{\@addto@sorted@list@skip}%
+        \else
+            \ifnum\z@=\@compare@result
+                \if@ignore@same@item
+                     \def\@tempb{\@addto@sorted@list@skip}%
+                \fi
+            \fi
+        \fi
+        \@csc@t\@sort@templistb\@sort@templistb\@tempa
+        \@tempb}%
+     #2\@addto@sorted@list@{\@elt{#4}}%
+     \expandafter\endgroup\expandafter
+         \def\expandafter#2\expandafter{\@sort@templistb}}% 
+
+\def\@addto@sorted@list@skip#1\@addto@sorted@list@#2{%
+    \@addto@sorted@list@{#1}}
+
+\def\@addto@sorted@list@#1{%
+    \@addto@macro\@sort@templistb{#1}}
+
+\def\@csc@t#1#2#3{%
+   \expandafter\expandafter\expandafter\def
+   \expandafter\expandafter\expandafter#1%
+   \expandafter\expandafter\expandafter{%
+   \expandafter#2#3}}
+
+
+
+
+%%% kinsoku %%%
+
+\ifDS@english
+\else
+\postbreakpenalty`\`=\@M
+\prebreakpenalty`'=\@M
+\prebreakpenalty`)=\@M
+\postbreakpenalty`(=\@M
+\prebreakpenalty`]=\@M
+\postbreakpenalty`[=\@M
+\prebreakpenalty`\}=\@M
+\postbreakpenalty`\{=\@M
+
+\prebreakpenalty`・=\@M
+\prebreakpenalty`=\@M
+\prebreakpenalty`=\@M
+\prebreakpenalty`=\@M
+\prebreakpenalty`=\@M
+
+\prebreakpenalty\jis"212D=\@M		% ÂŽ
+\postbreakpenalty\jis"212E=\@M		% 
+\postbreakpenalty\jis"2146=\@M		% ‘
+\prebreakpenalty\jis"2147=\@M		% ’
+\postbreakpenalty\jis"2148=\@M		% “
+\prebreakpenalty\jis"2149=\@M		% ”
+
+\prebreakpenalty`=\@M
+\postbreakpenalty`=\@M
+\prebreakpenalty`=\@M
+\postbreakpenalty`=\@M
+\prebreakpenalty`=\@M
+\postbreakpenalty`=\@M
+\postbreakpenalty`‘=\@M
+\prebreakpenalty`’=\@M
+
+\postbreakpenalty\jis"214C=\@M		%〔
+\prebreakpenalty\jis"214D=\@M		% 〕
+\postbreakpenalty\jis"2152=\@M		% 〈
+\prebreakpenalty\jis"2153=\@M		% 〉
+\postbreakpenalty\jis"2154=\@M		% 《
+\prebreakpenalty\jis"2155=\@M		% 》
+\postbreakpenalty\jis"2156=\@M		% 「
+\prebreakpenalty\jis"2157=\@M		% 」
+\postbreakpenalty\jis"2158=\@M		% 『
+\prebreakpenalty\jis"2159=\@M		% 』
+\postbreakpenalty\jis"215A=\@M		% 【
+\prebreakpenalty\jis"215B=\@M		% 】
+
+\prebreakpenalty`ヌ=\@M						% 2.12(6)
+\prebreakpenalty`〜=\@M						% 2.12(6)
+
+\prebreakpenalty`ぁ=\@M
+\prebreakpenalty`ぃ=\@M
+\prebreakpenalty`ぅ=\@M
+\prebreakpenalty`ぇ=\@M
+\prebreakpenalty`ぉ=\@M
+\prebreakpenalty`っ=\@M
+\prebreakpenalty`ゃ=\@M
+\prebreakpenalty`ゅ=\@M
+\prebreakpenalty`ょ=\@M
+\prebreakpenalty\jis"246E=\@M		% ゎ
+\prebreakpenalty`ァ=\@M
+\prebreakpenalty`ィ=\@M
+\prebreakpenalty`ゥ=\@M
+\prebreakpenalty`ェ=\@M
+\prebreakpenalty`ォ=\@M
+\prebreakpenalty`ッ=\@M
+\prebreakpenalty`ャ=\@M
+\prebreakpenalty`ュ=\@M
+\prebreakpenalty`ョ=\@M
+\prebreakpenalty\jis"256E=\@M		% ヮ
+\prebreakpenalty\jis"2575=\@M		% ヵ
+\prebreakpenalty\jis"2576=\@M		% ヶ
+\fi
+
+
+%% v1.5
+%\def\{\makebox[1zw][l]{}}
+\ifDS@english
+\else
+\prebreakpenalty34=1000%%% '' penalty
+\postbreakpenalty92=1000%%% `` penalty
+\def\{\nobreak\protect\makebox[1\zw][l]{}\ignorespaces}
+\fi
+
+
+%\ifDS@draft\def\next{\input{ipsjdraft.sty}\endinput}\else\let\next\relax\fi
+%\next
+
+\ifDS@preface\def\next{\input{ipsjpref.sty}\endinput}\else\let\next\relax\fi
+\next
+
+
+\ifDS@OT\def\next{\input{ipsjot.sty}\endinput}\else\let\next\relax\fi
+\next
+
+%% v1.02c
+\ifDS@techrep\def\next{\input{ipsjtech.sty}\endinput}\else\let\next\relax\fi
+\next
+
+
+%% not use submit 
+\def\zdash{{\usefont{OT1}{cmr}{bx}{n}\selectfont\leavevmode \raise.1zh\hbox {---}}}
+
+\def\ndash{{\usefont{OT1}{cmr}{bx}{n}\selectfont\leavevmode \raise.1zh\hbox {--}}}
+ 
+
+
+
+%% pdflatex papersize v1.6
+\@ifundefined{pdfpagewidth}
+{\relax}%{\special{papersize=\paperwidth,\paperheight}}
+{\pdfpagewidth=\paperwidth
+\pdfpageheight=\paperheight
+}
+
+
+
+\endinput
+
+
+
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Paper/ipsjpref.sty	Sun Apr 24 23:13:44 2022 +0900
@@ -0,0 +1,374 @@
+
+% ipsjpref.sty  (C) 2012 Information Processing Society of Japan
+% Copyright (C) 1995-2010 by Hiroshi Nakashima, Yasuki Saito and
+%                            The Editorial Board of the IPSJ Journal
+
+
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{ipsj}
+%\ProvidesClass{ipsj}
+% [2011/12/10-2012/03/09 v1.00-2.00 IPSJPREF.STY]
+% [2012/06/01 v2.01 IPSJPREF.STY]
+ [2017/02/16 v3.00 IPSJ class]
+
+
+
+
+\newif\ifDS@alone \DS@alonefalse
+\DeclareOption{alone}{\DS@alonetrue}
+\ProcessOptions
+
+
+\def\SHUBETUname@DAM{\ifDS@english%
+\leavevmode %%<---
+\else \leavevmode \fi}%%
+
+
+\JEhonbunsep=5mm % default 15mm
+
+
+\def\@maketitle{%
+\newpage\null
+%%%%%%%%%%
+\ifDS@english
+%%
+\vskip-1.3mm%
+\ifx\SHUBETUname\relax%
+{\SHUBETUfontE{\SHUBETUname@DEF}}%%
+\else
+{\SHUBETUfontE{\SHUBETUname}}%%
+\fi
+%%
+\else
+\ifx\SHUBETUname\relax%
+{\SHUBETUfontJ{\SHUBETUname@DEF}}%%
+\else
+{\SHUBETUfontJ{\SHUBETUname}}%%
+\fi\fi
+%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%
+\vskip\shubetutitlesep% 
+%%%%%%%%%%%%%%%%%%%%%%%%
+%%
+%\vskip 10mm%
+\begin{center}
+\authortitle %%<---
+\end{center}
+%%%%%%%%%%%%%%%%%%%
+%
+}
+
+
+
+\ifDS@english
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\def\authortitle{%
+{\Engtitlefont%
+{\@title}\par}
+%%%%%%%%%%%%%%%%%%%%%%%
+\vskip\Etitleauthorsep%
+%%%%%%%%%%%%%%%%%%%%%%%
+%% author %%%
+{\Engeauthorfont%
+\authoroutput{e}\par}%
+%%%%%%%%%%%%%%%%%%%%%%%%%
+\vskip\Eauthorreceivesep%
+%%%%%%%%%%%%%%%%%%%%%%%%%
+\vskip\JEhonbunsep%
+%%%%%%%%%%%%%%%%%%%
+%%
+}
+%===========
+\else
+%==========
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\def\authortitle{%
+{\jtitlefont%
+{\@title}\par}%
+%%%%%%%%%%%%%%%%%%%%%%%%
+\vskip\Jtitlejauthorsep%
+%%%%%%%%%%%%%%%%%%%%%%%%
+%======
+{\authorfont%
+\authoroutput{}\par}%
+%%%%%%%%%%%%%%%%%%%%%%%%%%
+\vskip\Jauthorjreceivesep%
+%%%%%%%%%%%%%%%%%%%%%%%%%%
+\vskip\JEhonbunsep%
+%%%%%%%%%%%%%%%%%%%
+}
+\fi
+
+
+
+
+
+
+
+\ifDS@english
+\def\ps@IPSJTITLEheadings{%
+ \def\@oddhead{\@Ltop%
+\rlap{\small{%%
+%%
+\ifx\signame\relax%
+{\HeadfontE{\signame@DEF}}%%
+\else
+{\HeadfontE{\signame}}%%
+\fi
+%%%%%
+%vol
+%%%%%
+%===============
+\hskip12\Q{\HeadfontE{Vol.\number\c@volume}}%
+%===============
+  \ifDS@CVA\relax\else
+  \ifDS@TBIO\relax\else
+  \ifDS@SLDM\relax\else
+%  \ifDS@JIP\relax\else
+%%%%%%
+%no
+%%%%%%
+%\hskip1em{\HeadfontE{No.\number\c@number}}%
+\fi\fi\fi%\fi
+%%%%%%
+%page
+%%%%%%
+\bgroup
+%%%
+%
+\ifDS@ACS
+  \ifDS@alone
+   \hskip12\Q{\HeadfontE{\pageref{ipsj@firstpage}}}\ %
+   \HeadfontE{(\@monthyear)}%
+  \else
+   \hskip12\Q{\HeadfontE{\pageref{ipsj@firstpage}--\pageref{ipsj@lastpage}}}\ %
+   \HeadfontE{(\@monthyear)}%
+  \fi
+\else\relax\fi
+%
+\ifDS@PRO
+  \ifDS@alone
+   \hskip12\Q{\HeadfontE{\pageref{ipsj@firstpage}}}\ %
+   \HeadfontE{(\@monthyear)}%
+  \else
+   \hskip12\Q{\HeadfontE{\pageref{ipsj@firstpage}--\pageref{ipsj@lastpage}}}\ %
+   \HeadfontE{(\@monthyear)}%
+  \fi
+\else\relax\fi
+%
+\ifDS@TOD
+  \ifDS@alone
+   \hskip12\Q{\HeadfontE{\pageref{ipsj@firstpage}}}\ %
+   \HeadfontE{(\@monthyear)}%
+  \else
+   \hskip12\Q{\HeadfontE{\pageref{ipsj@firstpage}--\pageref{ipsj@lastpage}}}\ %
+   \HeadfontE{(\@monthyear)}%
+  \fi
+\else\relax\fi
+%
+\ifDS@TOM
+  \ifDS@alone
+   \hskip12\Q{\HeadfontE{\pageref{ipsj@firstpage}}}\ %
+   \HeadfontE{(\@monthyear)}%
+  \else
+   \hskip12\Q{\HeadfontE{\pageref{ipsj@firstpage}--\pageref{ipsj@lastpage}}}\ %
+   \HeadfontE{(\@monthyear)}%
+  \fi
+\else\relax\fi
+%
+\ifDS@TBIO
+  \ifDS@alone
+   \hskip12\Q{\HeadfontE{\pageref{ipsj@firstpage}}}\ %
+   \HeadfontE{(\@monthyear)}%
+  \else
+   \hskip12\Q{\HeadfontE{\pageref{ipsj@firstpage}--\pageref{ipsj@lastpage}}}\ %
+   \HeadfontE{(\@monthyear)}%
+  \fi
+\else\relax\fi
+%
+\ifDS@CVA
+  \ifDS@alone
+   \hskip12\Q{\HeadfontE{\pageref{ipsj@firstpage}}}\ %
+   \HeadfontE{(\@monthyear)}%
+  \else
+   \hskip12\Q{\HeadfontE{\pageref{ipsj@firstpage}--\pageref{ipsj@lastpage}}}\ %
+   \HeadfontE{(\@monthyear)}%
+  \fi
+\else\relax\fi
+%
+\ifDS@SLDM
+  \ifDS@alone
+   \hskip12\Q{\HeadfontE{\pageref{ipsj@firstpage}}}\ %
+   \HeadfontE{(\@monthyear)}%
+  \else
+   \hskip12\Q{\HeadfontE{\pageref{ipsj@firstpage}--\pageref{ipsj@lastpage}}}\ %
+   \HeadfontE{(\@monthyear)}%
+  \fi
+\else\relax\fi
+%
+%\ifDS@JIP
+%   \hskip12\Q{\HeadfontE{\pageref{ipsj@firstpage}--\pageref{ipsj@lastpage}}}\ %
+%   \HeadfontE{(\@monthyear)}%
+%\else\relax\fi
+\ifDS@JIP
+  \ifDS@alone
+   \hskip12\Q{\HeadfontE{\pageref{ipsj@firstpage}}}\ %
+   \HeadfontE{(\@monthyear)}%
+  \else
+   \hskip12\Q{\HeadfontE{\pageref{ipsj@firstpage}--\pageref{ipsj@lastpage}}}\ %
+   \HeadfontE{(\@monthyear)}%
+  \fi
+\else\relax\fi
+%
+\ifDS@CDS
+  \ifDS@alone
+   \hskip12\Q{\HeadfontE{\pageref{ipsj@firstpage}}}\ %
+   \HeadfontE{(\@monthyear)}%
+  \else
+   \hskip12\Q{\HeadfontE{\pageref{ipsj@firstpage}--\pageref{ipsj@lastpage}}}\ %
+   \HeadfontE{(\@monthyear)}%
+  \fi
+\else\relax\fi
+%
+%\ifDS@EEE
+%   \hskip12\Q{\HeadfontE{\pageref{ipsj@firstpage}}}\ %
+%   \HeadfontE{(\@monthyear)}%
+%\else\relax\fi
+%
+%
+%
+%%%
+\egroup
+}%
+}%
+%%%%%
+\smash{\raisebox{-6mm}{\rlap{%
+{\DOIHeadfont%
+%%%%
+\bgroup
+\ifDS@TBIO
+   [DOI: 10.2197/ipsjtbio.\number\c@volume.\pageref{ipsj@firstpage}]
+\else\fi
+%
+\ifDS@CVA
+   [DOI: 10.2197/ipsjtcva.\number\c@volume.\pageref{ipsj@firstpage}]
+\else\fi
+%
+\ifDS@SLDM
+   [DOI: 10.2197/ipsjtsldm.\number\c@volume.\pageref{ipsj@firstpage}]
+\else\fi
+%
+\ifDS@JIP
+   [DOI: 10.2197/ipsjjip.\number\c@volume.\pageref{ipsj@firstpage}]
+\else\fi
+%
+%%
+%%
+%%%%%
+\egroup
+}%
+}}}%
+\hfil\@Rtop}%
+%%%%%
+ \let\@evenhead\@oddhead
+ \def\@oddfoot{\@Lbot%
+\rlap{%\fontsize{10\Q}{0\h}%
+%\usefont{OT1}{ptm}{m}{n}%Times
+%\selectfont%
+%\normalfont%
+{\bothashira%
+\copyright \ {\@footyear} Information Processing Society of Japan%
+}}%
+\hfil
+%\fontsize{13\Q}{0\h}%
+%\usefont{OT1}{ptm}{m}{n}%Times
+%\selectfont%
+%\normalsize
+{\botnomble
+%%%%%%
+\ifDS@ACS{\thepage}\else\fi
+\ifDS@PRO{\thepage}\else\fi
+\ifDS@TOD{\thepage}\else\fi
+\ifDS@TOM{\thepage}\else\fi
+\ifDS@TBIO{\thepage}\else\fi
+\ifDS@CVA{\thepage}\else\fi
+\ifDS@SLDM{\thepage}\else\fi
+\ifDS@JIP{\thepage}\else\fi
+\ifDS@CDS{\thepage}\else\fi
+%\ifDS@EEE{\thepage}\else\fi
+%%%%%
+\@Rbot}%
+ \let\@evenfoot\@oddfoot
+ \let\@mkboth\@gobbletwo
+}}
+%%%
+%%%%%%%%%
+\else
+%%%%%%%%%
+%%%
+\def\ps@IPSJTITLEheadings{%
+ \def\@oddhead{\@Ltop%
+\rlap{\small%
+%%
+\ifx\signame\relax%
+{\HeadfontJ{\signame@DEF}}%%
+\else
+{\HeadfontJ{\signame}}%%
+\fi
+%%%%%
+{%%
+\hskip12\JQ{\HeadfontE{Vol.\number\c@volume}}%
+%\hskip12\JQ{\HeadfontE{No.\number\c@number}}%
+%
+\ifDS@alone
+\hskip12\JQ{\HeadfontE{\pageref{ipsj@firstpage}}}\ %
+\HeadfontE{(\@monthyear)}%
+\else
+%
+\hskip12\JQ{\HeadfontE{\pageref{ipsj@firstpage}--\pageref{ipsj@lastpage}}}\ %
+\HeadfontE{(\@monthyear)}
+\fi
+}}%
+%%%%
+\smash{\raisebox{-6mm}{\rlap{%
+{\DOIHeadfont%%
+}%
+}}}%
+\hfil\@Rtop}%
+%%
+ \let\@evenhead\@oddhead
+ \def\@oddfoot{\@Lbot%
+\rlap{%
+%\fontsize{10\Q}{0\h}\usefont{OT1}{ptm}{m}{n}%Times
+%\selectfont%
+{\bothashira%
+{\textcopyrighttx} \ {\@footyear} Information Processing Society of Japan%
+}}%
+\hfil%
+%\fontsize{13\Q}{0\h}%
+%\usefont{OT1}{ptm}{m}{n}%Times
+%\selectfont%
+{\botnomble%
+{\thepage}}%
+\@Rbot}%
+ \let\@evenfoot\@oddfoot
+ \let\@mkboth\@gobbletwo
+}
+\fi
+
+
+
+
+%% <<<< v1.02
+\def\SHUBETUname@Data{\leavevmode\phantom{Database/Software Paper}}
+\def\SHUBETUname@Survey{\leavevmode\phantom{Survey Paper}}
+\def\SHUBETUname@TBIOM{\leavevmode\phantom{Original Paper}}
+\def\SHUBETUname@Short{\leavevmode\phantom{Short Paper}}
+
+
+
+
+
+\endinput
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Paper/ipsjsort-e.bst	Sun Apr 24 23:13:44 2022 +0900
@@ -0,0 +1,1248 @@
+% ipsjsort-e.bst 28-Oct-10 by Hiroshi Nakashima (ver 3.00)
+% ipsjsort-e.bst 15-Jun-07 by Hiroshi Nakashima (ver 2.12)
+% ipsjsort.bst 30-Jan-02 by Hiroshi Nakashima (ver 2.00)
+% ipsjsort.bst 28-Dec-93 by Hiroshi Nakashima (ver 1.00)
+% jssst.bst tomura@etl.go.jp (Satoru Tomura)
+% BibTeX standard bibliography style `jplain'
+	% version 0.10 for JBibTeX versions 0.10 or later, JLaTeX version 2.09.
+	% by Shouichi Matsui, matsui@denken.junet
+
+ENTRY
+  { address
+    author
+    booktitle
+    chapter
+    doi							% 3.00(1)
+    edition
+    editor
+    howpublished
+    institution
+    journal
+    key
+    month
+    note
+    number
+    organization
+    pages
+    publisher
+    refdate						% 3.00(1)
+    school
+    series
+    title
+    type
+    url							% 3.00(1)
+    volume
+    year
+  }
+  {}
+  { label }
+
+INTEGERS { output.state before.all mid.sentence after.sentence after.block }
+
+INTEGERS { before.year }
+
+FUNCTION {init.state.consts}
+{ #0 'before.all :=
+  #1 'mid.sentence :=
+  #2 'after.sentence :=
+  #3 'after.block :=
+  #4 'before.year :=					% 1.00(1)
+}
+
+STRINGS { s t }
+
+FUNCTION {output.nonnull}
+{ 's :=
+  output.state mid.sentence =
+    { ", " * write$ }
+    { output.state after.block =
+	{ add.period$ write$
+	  newline$
+	  "\newblock " write$
+	}
+	{ output.state before.all =
+	    'write$
+	    { output.state before.year =		% 1.00(1)
+		{ " " * write$ }
+		{ add.period$ " " * write$ }
+	      if$
+	    }
+	  if$
+	}
+      if$
+      mid.sentence 'output.state :=
+    }
+  if$
+  s
+}
+
+FUNCTION {output}
+{ duplicate$ empty$
+    'pop$
+    'output.nonnull
+  if$
+}
+
+FUNCTION {required.argument}
+{ 't :=
+  empty$
+    {"Missing required argument " t * " in " * cite$ * warning$}
+    'skip$
+  if$
+}
+
+FUNCTION {required.exclusive.or.argument}
+{ 't :=
+  empty$
+    { 's := 
+      empty$
+        { t " or " * s * " is missing in " * cite$ * warning$}
+        'skip$
+      if$
+    }
+    { 's :=
+      empty$
+        'skip$
+        { "You can use only one of " t * " and " * s * " in " * cite$ * warning$}
+      if$
+    }
+  if$
+}
+
+FUNCTION {required.and.or.argument}
+{ 't := empty$
+     { 's := empty$
+         { "there's no " t * " and/or " * s * cite$ * warning$ }
+         'skip$
+       if$
+     }
+     { pop$ pop$ }
+  if$
+}
+
+FUNCTION {optional.series.volume.number.argument}
+{ series empty$
+    { volume empty$
+        { number empty$
+            'skip$
+            { "there's a number but no series in " cite$ * warning$ }
+          if$
+        }
+        { number empty$
+            { "there's a volume but no series in " cite$ * warning$ }
+            { "you can use only one of volume and number in " cite$ * warning$}
+          if$
+        }
+     if$
+    }
+    { volume empty$
+        { number empty$
+            { "there's a series but neither volume nor number in " cite$ * warning$ }
+            'skip$
+          if$
+        }
+        { number empty$
+            'skip$
+            { "you can use only one of volume and number in " cite$ * warning$ }
+          if$
+        }
+     if$
+   }
+   if$
+}            
+
+FUNCTION {output.bibitem}
+{ newline$
+  "\bibitem{" write$
+  cite$ write$
+  "}" write$
+  newline$
+  before.all 'output.state :=
+}
+
+FUNCTION {fin.entry}
+{ add.period$
+  write$
+  newline$
+}
+
+FUNCTION {new.block}
+{ output.state before.all =
+    'skip$
+    { after.block 'output.state := }
+  if$
+}
+
+FUNCTION {new.sentence}
+{ output.state after.block =
+    'skip$
+    { output.state before.all =
+	'skip$
+	{ after.sentence 'output.state := }
+      if$
+    }
+  if$
+}
+
+FUNCTION {not}
+{   { #0 }
+    { #1 }
+  if$
+}
+
+FUNCTION {and}
+{   'skip$
+    { pop$ #0 }
+  if$
+}
+
+FUNCTION {or}
+{   { pop$ #1 }
+    'skip$
+  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 {field.or.null}
+{ duplicate$ empty$
+    { pop$ "" }
+    'skip$
+  if$
+}
+
+FUNCTION {emphasize}
+{ duplicate$ empty$
+    { pop$ "" }
+    { "{\em " swap$ * "}" * }
+  if$
+}
+
+INTEGERS { nameptr namesleft numnames }
+
+FUNCTION {format.names}					% 1.00(4), 2.00(4)
+{ 's :=
+  #1 'nameptr :=
+  s num.names$ 'numnames :=
+  numnames 'namesleft :=
+    { namesleft #0 > }
+    { s nameptr "{vv }{ll}{, jj}{, f.}" format.name$ 't :=
+      nameptr #1 >
+	{ namesleft #1 >
+	    { ", " * t * }
+	    { t "others" =
+		{" et al." * }
+		{" and " * t * }
+	      if$
+	    }
+	  if$
+	}
+	't
+      if$
+      nameptr #1 + 'nameptr :=
+      namesleft #1 - 'namesleft :=
+    }
+  while$
+}
+
+FUNCTION {format.authors}
+{ author empty$
+    { "" }
+    { author format.names }
+  if$
+}
+
+FUNCTION {add.colon}					% 2.00(5)
+{ ": " *
+}
+
+FUNCTION {format.editors.inparen}			% 2.00(6)
+{ editor empty$
+    { "" }
+    { editor format.names
+      editor num.names$ #1 >
+	{", eds." *}
+	{", ed." *}
+      if$
+    }
+  if$
+}
+
+FUNCTION {format.editors}
+{ editor empty$
+    { "" }
+    { editor format.names
+      editor num.names$ #1 >
+	{"(eds.)" *}
+	{"(ed.)" *}
+      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 :=
+	}
+      if$
+    }
+  while$
+}
+
+FUNCTION {format.date}
+{ before.year 'output.state :=				% 1.00(1)
+  year empty$
+    { month empty$
+	{ "" }
+	{ "there's a month but no year in " cite$ * warning$
+          ""						% 1.00(5)
+	}
+      if$
+    }
+    { "(" year ")" * * }				% 1.00(5)
+  if$
+}
+
+FUNCTION {format.ref.date}				% 3.00(1)>>
+{ before.year 'output.state :=
+  "\refdatee{" refdate "}" * *
+}							% 3.00(1)<<
+
+FUNCTION {tie.or.space.connect}
+{ duplicate$ text.length$ #3 <
+    { "~" }
+    { "\ " }						% 1.00(6)
+  if$
+  swap$ * *
+}
+
+FUNCTION {output.volume}
+{ 
+  volume empty$
+    'skip$
+    { "Vol.~" volume * output}
+  if$
+
+}
+
+FUNCTION {output.number}
+{
+  number empty$
+    'skip$
+    { "No.~" number * output}
+  if$
+}
+
+FUNCTION {output.series.volume.number}
+{ series empty$
+    { output.volume
+      output.number }
+    { series output
+      output.volume
+      output.number }
+ if$
+}
+
+FUNCTION {format.edition}
+{ edition empty$
+    { "" }
+    { output.state mid.sentence =
+	{ edition "l" change.case$ " edition" * }
+	{ edition "t" change.case$ " edition" * }
+      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.online}				% 3.00(1)>>
+{ duplicate$ empty$
+    { "(online)" * }
+    { " (online)" * }
+  if$
+}							% 3.00(1)<<
+
+FUNCTION {format.url}					% 3.00(1)>>
+{ "\urle{" url "}" * *
+}							% 3.00(1)<<
+
+FUNCTION {format.pages}					% 1.00(7)
+{ pages empty$
+    { "" }
+    { pages multi.page.check
+	{ "pp." pages n.dashify tie.or.space.connect }
+	{ "p." pages tie.or.space.connect }
+      if$
+    }
+  if$
+}
+
+FUNCTION {format.doi.url}				% 3.00(1)>>
+{ doi empty$
+    { url empty$
+	'skip$
+	{ format.online output.nonnull
+	  format.url
+	}
+	if$
+    }
+    { format.online output.nonnull
+      "\doi{" doi "}" * *
+    }
+  if$							% 3.00(1)<<
+}
+
+FUNCTION {format.pages.output}				% 3.00(1)>>
+{ format.pages
+  format.doi.url output					% 3.00(1)<<
+}
+
+FUNCTION {format.vol.num.pages}				% 1.00(8)
+{ volume empty$
+  { ""}
+  { " Vol.~" volume * }
+  if$ 
+  number empty$
+    'skip$
+    { volume empty$
+	{ "there's a number but no volume in " cite$ * warning$ }
+	{ "," *}
+      if$
+      " No.~" number * *
+    }
+  if$
+  pages empty$
+    'skip$
+    { duplicate$ empty$
+	{ pop$ format.pages }
+	{ ", " * format.pages * }
+      if$
+    }
+  if$
+  format.doi.url					% 3.00(1)
+}
+
+FUNCTION {format.chapter.pages}
+{ chapter empty$
+    'format.pages
+    { type empty$
+	{ "chapter" chapter tie.or.space.connect }
+        { type "l" change.case$ chapter tie.or.space.connect }
+      if$
+      pages empty$
+	'skip$
+	{ ", " * format.pages * }
+      if$
+    }
+  if$
+  format.doi.url					% 3.00(1)
+}
+
+FUNCTION {format.in.ed.booktitle}
+{ booktitle empty$
+    { "" }
+    { booktitle emphasize
+      editor empty$
+	'skip$
+	{ " (" * format.editors.inparen * ")" *}	% 1.00(9), 2.00(6)
+      if$
+    }
+  if$
+}
+
+FUNCTION {empty.misc.check}
+{ author empty$ title empty$ howpublished empty$
+  month empty$ year empty$ note empty$
+  and and and and and
+  key empty$ not 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 * * }
+  if$
+}
+
+FUNCTION {format.article.crossref}			% 2.00(8)
+{ key empty$
+    { journal empty$
+	{ "need key or journal for " cite$ * " to crossref " * crossref *
+	  warning$
+	  ""
+	}
+	{ journal emphasize }				% 1.00(10)
+      if$
+    }
+    { "In " key * }
+  if$
+  " \cite{" * crossref * "}" *
+}
+
+FUNCTION {format.crossref.editor}			% 1.00(11)
+{ editor #1 "{vv }{ll}" format.name$
+  editor num.names$ duplicate$
+  #2 >
+    {pop$ " et al." * }
+    { #2 <
+	'skip$
+	{ editor #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
+	    {" et al." * }
+	    {" and " * editor #2 "{vv }{ll}" format.name$ * }
+	  if$
+	}
+      if$
+    }
+  if$
+}
+
+FUNCTION {format.book.crossref}				% 2.00(8)
+{ 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 emphasize }			% 1.00(10)
+	  if$
+	}
+	{ "In " key * }
+      if$
+    }
+    { format.crossref.editor }
+  if$
+  " \cite{" * crossref * "}" *
+  volume empty$
+    { "empty volume in " cite$ * "'s crossref of " * crossref * warning$ }
+    { * "Vol." * volume tie.or.space.connect }
+  if$
+}
+
+FUNCTION {format.incoll.inproc.crossref}		% 2.00(8)
+{ 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 emphasize }			% 1.00(10)
+	  if$
+	}
+	{ "In " key * }
+      if$
+    }
+    { format.crossref.editor }
+  if$
+  " \cite{" * crossref * "}" *
+}
+
+FUNCTION {article}
+{ 
+%%%%
+  author  "author"  required.argument
+  title   "title"   required.argument
+  journal "journal" required.argument
+  year    "year"    required.argument
+%%%% jssst
+  volume  "volume"  
+  number  "number"  
+     required.and.or.argument
+  pages   "pages"   required.argument
+%%%%
+  output.bibitem 
+  format.authors add.colon				% 2.00(5)
+  title output
+  crossref missing$
+    { journal emphasize output
+      format.vol.num.pages output			% 1.00(12)
+      format.date output
+    }
+    { format.article.crossref output.nonnull
+      format.pages.output				% 3.00(1)
+    }
+  if$
+  new.block
+  note output
+  fin.entry
+}
+
+FUNCTION {book}
+{ 
+%%%%
+  author  "author"
+  editor  "editor"
+    required.exclusive.or.argument
+  title   "title"  required.argument
+  publisher "publisher" required.argument
+  year    "year" required.argument
+  optional.series.volume.number.argument
+%%%%
+  output.bibitem
+  author empty$
+    { format.editors}
+    { format.authors}
+  if$
+  add.colon						% 2.00(5)
+  title emphasize output
+  crossref missing$
+    { output.series.volume.number
+      publisher output
+      address output
+    }
+    { new.block
+      format.book.crossref output.nonnull
+    }
+  if$
+  format.edition output
+  format.date output
+  new.block
+  note output
+  fin.entry
+}
+
+FUNCTION {booklet}
+{
+%%%%
+  title   "title"   required.argument
+%%%% jssst
+  author  "author"  required.argument
+%%%%
+  output.bibitem
+  format.authors add.colon				% 2.00(5)
+  title output
+  howpublished output
+  address output
+  format.date output
+  new.block
+  note output
+  fin.entry
+}
+
+FUNCTION {inbook}
+{ 
+%%%%
+  author  "author"
+  editor  "editor"
+     required.exclusive.or.argument
+  title   "title"  required.argument
+  chapter "chapter"
+  pages   "pages"
+     required.and.or.argument
+  publisher  "publisher" required.argument
+  year       "year"      required.argument
+
+  optional.series.volume.number.argument
+%%%%
+  output.bibitem 
+  author empty$
+    { format.editors}
+    { format.authors}
+  if$
+  add.colon						% 2.00(5)
+  title emphasize output
+  crossref missing$
+    { output.series.volume.number
+      format.chapter.pages output
+      publisher output
+    }
+    { format.chapter.pages output
+      new.block
+      format.book.crossref output.nonnull
+    }
+  if$
+  format.edition output
+  format.date output					% 1.00(13)
+  new.block
+  note output
+  fin.entry
+}
+
+FUNCTION {incollection}
+{
+%%%%
+  author    "author"    required.argument
+  title     "title"     required.argument
+  booktitle "booktitle" required.argument
+  publisher "publisher" required.argument
+  year      "year"      required.argument
+
+  optional.series.volume.number.argument
+%%%%
+  output.bibitem
+  format.authors add.colon				% 2.00(5)
+  title output
+  crossref missing$
+    { format.in.ed.booktitle output
+      output.series.volume.number
+      publisher output
+      address output
+      format.edition output
+      format.chapter.pages output			% 1.00(13)
+      format.date output
+    }
+    { format.incoll.inproc.crossref output.nonnull
+      format.chapter.pages output
+    }
+  if$
+  new.block
+  note output
+  fin.entry
+}
+
+FUNCTION {inproceedings}
+{
+%%%%
+  author    "author"    required.argument
+  title     "title"     required.argument
+  year      "year"      required.argument
+
+  optional.series.volume.number.argument
+%%%%
+  output.bibitem 
+  format.authors add.colon				% 2.00(5)
+  title output
+  crossref missing$
+    { format.in.ed.booktitle output
+      booktitle "booktitle" required.argument
+      output.series.volume.number
+      address output
+      organization output
+      publisher output
+      format.pages.output				% 3.00(1)
+      format.date output				% 1.00(13)
+    }
+    { format.incoll.inproc.crossref output.nonnull
+      format.pages.output				% 3.00(1)
+    }
+  if$
+  new.block
+  note output
+  fin.entry
+}
+
+FUNCTION {conference} { inproceedings }
+
+FUNCTION {manual}
+{	
+%%%%
+  title   "title"    required.argument
+%%%% jssst
+  author   "author"
+  organization "organazaion"
+     required.exclusive.or.argument
+%%%%
+  output.bibitem
+  author empty$
+    { organization}
+    { format.authors}
+  if$
+  add.colon						% 2.00(5)
+  title emphasize output
+  author empty$
+    'skip$
+    { organization output }
+  if$
+  address output
+  format.edition output
+  format.date output
+  new.block
+  note output
+  fin.entry
+}
+
+FUNCTION {mastersthesis}
+{
+%%%%
+  author   "author"  required.argument
+  title    "title"   required.argument
+  school   "school"  required.argument
+  year     "year"    required.argument
+%%%%
+  output.bibitem
+  format.authors add.colon				% 2.00(5)
+  title output
+  "Master's thesis"
+  format.thesis.type output.nonnull
+  school output
+  address output
+  format.date output
+  new.block
+  note output
+  fin.entry
+}
+
+FUNCTION {misc}
+{
+%%%%
+%%%% jssst
+  author "author" required.argument
+  title  "title"  required.argument
+%%%%
+  output.bibitem
+  format.authors add.colon				% 2.00(5)
+  title output
+  howpublished output
+  format.date output
+  new.block
+  note output
+  fin.entry
+  empty.misc.check
+}
+
+FUNCTION {phdthesis}
+{
+%%%%
+  author   "author"  required.argument
+  title    "title"   required.argument
+  school   "school"  required.argument
+  year     "year"    required.argument
+%%%%
+  output.bibitem 
+  format.authors add.colon				% 2.00(5)
+  title output						% 2.00(9)
+  "PhD Thesis"
+  format.thesis.type output.nonnull
+  school output
+  address output
+  format.date output
+  new.block
+  note output
+  fin.entry
+}
+
+FUNCTION {proceedings}
+{
+%%%%
+  title  "title"  required.argument
+  year   "year"   required.argument
+
+  optional.series.volume.number.argument
+%%%% jssst
+  editor  "editor"
+  organization "organization"
+      required.exclusive.or.argument 
+%%%%
+  output.bibitem 
+  editor empty$
+    { organization }
+    { format.editors }
+  if$
+  add.colon						% 2.00(5)
+  title emphasize output
+  output.series.volume.number
+  address output
+  editor empty$
+    'skip$
+    { organization output }
+  if$
+  publisher output
+  format.date output
+  new.block
+  note output
+  fin.entry
+}
+
+FUNCTION {techreport}
+{
+%%%%
+  author   "author"   required.argument
+  title    "title"    required.argument
+  institution "institution" required.argument
+  year     "year"     required.argument
+%%%%
+  output.bibitem
+  format.authors add.colon				% 2.00(5)
+  title output
+  format.tr.number output.nonnull
+  institution output
+  address output
+  format.date output
+  new.block
+  note output
+  fin.entry
+}
+
+FUNCTION {unpublished}
+{
+%%%%
+  author   "author"   required.argument
+  title    "title"    required.argument
+  note     "note"     required.argument
+%%%%
+  output.bibitem
+  format.authors add.colon				% 2.00(5)
+  title output
+  format.date output
+  new.block
+  note output
+  fin.entry
+}
+
+FUNCTION {webpage}					% 3.00(1)>>
+{
+%%%%
+  author       "author"       required.argument
+  title        "title"        required.argument
+  url          "url"          required.argument
+  refdate      "refdate"      required.argument
+%%%%
+  output.bibitem
+  format.authors add.colon
+  title output
+  organization format.doi.url output
+  format.ref.date output
+  new.block
+  note output
+  fin.entry
+}							% 3.00(1)<<
+
+FUNCTION {default.type} { misc }
+
+MACRO {jan} {"January"}
+
+MACRO {feb} {"February"}
+
+MACRO {mar} {"March"}
+
+MACRO {apr} {"April"}
+
+MACRO {may} {"May"}
+
+MACRO {jun} {"June"}
+
+MACRO {jul} {"July"}
+
+MACRO {aug} {"August"}
+
+MACRO {sep} {"September"}
+
+MACRO {oct} {"October"}
+
+MACRO {nov} {"November"}
+
+MACRO {dec} {"December"}
+
+MACRO {acmcs} {"ACM Computing Surveys"}
+
+MACRO {acta} {"Acta Informatica"}
+
+MACRO {cacm} {"Communications of the ACM"}
+
+MACRO {ibmjrd} {"IBM Journal of Research and Development"}
+
+MACRO {ibmsj} {"IBM Systems Journal"}
+
+MACRO {ieeese} {"IEEE Transactions on Software Engineering"}
+
+MACRO {ieeetc} {"IEEE Transactions on Computers"}
+
+MACRO {ieeetcad}
+ {"IEEE Transactions on Computer-Aided Design of Integrated Circuits"}
+
+MACRO {ipl} {"Information Processing Letters"}
+
+MACRO {jacm} {"Journal of the ACM"}
+
+MACRO {jcss} {"Journal of Computer and System Sciences"}
+
+MACRO {scp} {"Science of Computer Programming"}
+
+MACRO {sicomp} {"SIAM Journal on Computing"}
+
+MACRO {tocs} {"ACM Transactions on Computer Systems"}
+
+MACRO {tods} {"ACM Transactions on Database Systems"}
+
+MACRO {tog} {"ACM Transactions on Graphics"}
+
+MACRO {toms} {"ACM Transactions on Mathematical Software"}
+
+MACRO {toois} {"ACM Transactions on Office Information Systems"}
+
+MACRO {toplas} {"ACM Transactions on Programming Languages and Systems"}
+
+MACRO {tcs} {"Theoretical Computer Science"}
+
+READ
+
+FUNCTION {sortify}
+{ purify$
+  "l" change.case$
+}
+
+INTEGERS { len }
+
+FUNCTION {chop.word}
+{ 's :=
+  'len :=
+  s #1 len substring$ =
+    { s len #1 + global.max$ substring$ }
+    's
+  if$
+}
+
+FUNCTION {sort.format.names}
+{ 's :=
+  #1 'nameptr :=
+  ""
+  s num.names$ 'numnames :=
+  numnames 'namesleft :=
+    { namesleft #0 > }
+    { nameptr #1 >
+	{ "   " * }
+	'skip$
+      if$
+      s nameptr "{vv{ } }{ll{ }}{  ff{ }}{  jj{ }}" format.name$ 't :=
+      nameptr numnames = t "others" = and
+	{ "et al" * }
+	{ t sortify * }
+      if$
+      nameptr #1 + 'nameptr :=
+      namesleft #1 - 'namesleft :=
+    }
+  while$
+}
+
+FUNCTION {sort.format.title}
+{ 't :=
+  "A " #2
+    "An " #3
+      "The " #4 t chop.word
+    chop.word
+  chop.word
+  sortify
+  #1 global.max$ substring$
+}
+
+FUNCTION {author.sort}
+{ author empty$
+    { key empty$
+	{ "to sort, need author or key in " cite$ * warning$
+	  ""
+	}
+	{ key sortify }
+      if$
+    }
+    { author sort.format.names }
+  if$
+}
+
+FUNCTION {author.editor.sort}
+{ author empty$
+    { editor empty$
+	{ key empty$
+	    { "to sort, need author, editor, or key in " cite$ * warning$
+	      ""
+	    }
+	    { key sortify }
+	  if$
+	}
+	{ editor sort.format.names }
+      if$
+    }
+    { author sort.format.names }
+  if$
+}
+
+FUNCTION {author.organization.sort}
+{ author empty$
+    { organization empty$
+	{ key empty$
+	    { "to sort, need author, organization, or key in " cite$ * warning$
+	      ""
+	    }
+	    { key sortify }
+	  if$
+	}
+	{ "The " #4 organization chop.word sortify }
+      if$
+    }
+    { author sort.format.names }
+  if$
+}
+
+FUNCTION {editor.organization.sort}
+{ editor empty$
+    { organization empty$
+	{ key empty$
+	    { "to sort, need editor, organization, or key in " cite$ * warning$
+	      ""
+	    }
+	    { key sortify }
+	  if$
+	}
+	{ "The " #4 organization chop.word sortify }
+      if$
+    }
+    { editor sort.format.names }
+  if$
+}
+
+FUNCTION {presort}
+{ type$ "book" =
+  type$ "inbook" =
+  or
+    'author.editor.sort
+    { type$ "proceedings" =
+	'editor.organization.sort
+	{ type$ "manual" =
+	    'author.organization.sort
+	    'author.sort
+	  if$
+	}
+      if$
+    }
+  if$
+  "    "
+  *
+  year field.or.null sortify
+  *
+  "    "
+  *
+  title field.or.null
+  sort.format.title
+  *
+  #1 entry.max$ substring$
+  'sort.key$ :=
+}
+
+ITERATE {presort}
+
+SORT
+
+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/Paper/ipsjsort.bst	Sun Apr 24 23:13:44 2022 +0900
@@ -0,0 +1,1358 @@
+% ipsjsort.bst 28-Oct-10 by Hiroshi Nakashima (ver 3.00)
+% ipsjsort.bst 15-Jun-07 by Hiroshi Nakashima (ver 2.12)
+% ipsjsort.bst 30-Jan-02 by Hiroshi Nakashima (ver 2.00)
+% ipsjsort.bst 28-Dec-93 by Hiroshi Nakashima (ver 1.00)
+% jssst.bst tomura@etl.go.jp (Satoru Tomura)
+% BibTeX standard bibliography style `jplain'
+	% version 0.10 for JBibTeX versions 0.10 or later, JLaTeX version 2.09.
+	% by Shouichi Matsui, matsui@denken.junet
+
+ENTRY
+  { address
+    author
+    booktitle
+    chapter
+    doi							% 3.00(1)
+    edition
+    editor
+    howpublished
+    institution
+    journal
+    key
+    month
+    note
+    number
+    organization
+    pages
+    publisher
+    refdate						% 3.00(1)
+    school
+    series
+    title
+    type
+    url							% 3.00(1)
+    volume
+    year
+    yomi
+  }
+  {}
+  { label }
+
+INTEGERS { output.state before.all mid.sentence after.sentence after.block }
+
+INTEGERS { before.year }
+
+FUNCTION {init.state.consts}
+{ #0 'before.all :=
+  #1 'mid.sentence :=
+  #2 'after.sentence :=
+  #3 'after.block :=
+  #4 'before.year :=					% 1.00(1)
+}
+
+STRINGS { s t }
+
+FUNCTION {is.kanji}
+{ is.kanji.str$ }					% 1.00(2), 2.00(1)
+
+FUNCTION {is.kanji.title}				% 3.00(1)
+{ title is.kanji.str$ }
+
+FUNCTION {output.nonnull}
+{ 's :=
+  output.state mid.sentence =
+    { duplicate$ is.kanji				% 2.00(2)
+	{ "" * write$ }
+	{ ", " * write$ }
+      if$
+    }
+    { output.state after.block =
+	{ add.period$ write$
+	  newline$
+	  "\newblock " write$
+	}
+	{ output.state before.all =
+	    'write$
+	    { output.state before.year =		% 1.00(1)
+		{ " " * write$ }
+		{ add.period$ " " * write$ }
+	      if$
+	    }
+	  if$
+	}
+      if$
+      mid.sentence 'output.state :=
+    }
+  if$
+  s
+}
+
+FUNCTION {output}
+{ duplicate$ empty$
+    'pop$
+    'output.nonnull
+  if$
+}
+
+FUNCTION {required.argument}
+{ 't :=
+  empty$
+    {"Missing required argument " t * " in " * cite$ * warning$}
+    'skip$
+  if$
+}
+
+FUNCTION {required.exclusive.or.argument}
+{ 't :=
+  empty$
+    { 's := 
+      empty$
+        { t " or " * s * " is missing in " * cite$ * warning$}
+        'skip$
+      if$
+    }
+    { 's :=
+      empty$
+        'skip$
+        { "You can use only one of " t * " and " * s * " in " * cite$ * warning$}
+      if$
+    }
+  if$
+}
+
+FUNCTION {required.and.or.argument}
+{ 't := empty$
+     { 's := empty$
+         { "there's no " t * " and/or " * s * cite$ * warning$ }
+         'skip$
+       if$
+     }
+     { pop$ pop$ }
+  if$
+}
+
+FUNCTION {optional.series.volume.number.argument}
+{ series empty$
+    { volume empty$
+        { number empty$
+            'skip$
+            { "there's a number but no series in " cite$ * warning$ }
+          if$
+        }
+        { number empty$
+            { "there's a volume but no series in " cite$ * warning$ }
+            { "you can use only one of volume and number in " cite$ * warning$}
+          if$
+        }
+     if$
+    }
+    { volume empty$
+        { number empty$
+            { "there's a series but neither volume nor number in " cite$ * warning$ }
+            'skip$
+          if$
+        }
+        { number empty$
+            'skip$
+            { "you can use only one of volume and number in " cite$ * warning$ }
+          if$
+        }
+     if$
+   }
+   if$
+}            
+
+FUNCTION {output.bibitem}
+{ newline$
+  "\bibitem{" write$
+  cite$ write$
+  "}" write$
+  newline$
+  before.all 'output.state :=
+}
+
+FUNCTION {fin.entry}
+{ add.period$
+  write$
+  newline$
+}
+
+FUNCTION {new.block}
+{ output.state before.all =
+    'skip$
+    { after.block 'output.state := }
+  if$
+}
+
+FUNCTION {new.sentence}
+{ output.state after.block =
+    'skip$
+    { output.state before.all =
+	'skip$
+	{ after.sentence 'output.state := }
+      if$
+    }
+  if$
+}
+
+FUNCTION {not}
+{   { #0 }
+    { #1 }
+  if$
+}
+
+FUNCTION {and}
+{   'skip$
+    { pop$ #0 }
+  if$
+}
+
+FUNCTION {or}
+{   { pop$ #1 }
+    'skip$
+  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 {field.or.null}
+{ duplicate$ empty$
+    { pop$ "" }
+    'skip$
+  if$
+}
+
+FUNCTION {emphasize}
+{ duplicate$ empty$
+    { pop$ "" }
+    { duplicate$ is.kanji
+        'skip$						% 1.00(3)
+        { "{\em " swap$ * "}" * }			% 2.00(3)
+      if$
+    }
+  if$
+}
+
+INTEGERS { nameptr namesleft numnames }
+
+FUNCTION {format.names}					% 1.00(4), 2.00(4)
+{ 's :=
+  #1 'nameptr :=
+  s num.names$ 'numnames :=
+  numnames 'namesleft :=
+    { namesleft #0 > }
+    { s nameptr "{ff}{ll}" format.name$ duplicate$ is.kanji
+	{ duplicate$ text.length$ #6 >
+	    { 't := }
+	    { pop$ s nameptr "{ff} {ll}" format.name$ 't := }
+	  if$
+	}
+        { pop$ s nameptr "{vv }{ll}{, jj}{, f.}" format.name$ 't := }
+      if$
+      nameptr #1 >
+	{ namesleft #1 >
+	    { s is.kanji
+		{ "" }
+		{ ", " }
+	      if$
+	      * t * }
+	    { t "others" =
+		{ s is.kanji
+			{"ほか" * }
+			{" et al." * }
+		      if$
+                }
+		{ s is.kanji
+			{"" * t * }	% put "," here for Kanji (H.N.)
+			{" and " * t * }
+	     	      if$
+		}
+	      if$
+	    }
+	  if$
+	}
+	't
+      if$
+      nameptr #1 + 'nameptr :=
+      namesleft #1 - 'namesleft :=
+    }
+  while$
+}
+
+FUNCTION {format.authors}
+{ author empty$
+    { "" }
+    { author format.names }
+  if$
+}
+
+FUNCTION {add.colon}					% 2.00(5)
+{ duplicate$ is.kanji
+    { "\" * }						% 2.12(1)
+    { ": " * }
+  if$
+}
+
+FUNCTION {format.editors.inparen}			% 2.00(6)
+{ editor empty$
+    { "" }
+    { editor format.names
+      editor num.names$ #1 >
+	{ editor is.kanji
+		{"線" * } {", eds." *} if$
+	}
+	{ editor is.kanji
+		{"線" *}  {", ed." *} if$
+	}
+      if$
+    }
+  if$
+}
+
+FUNCTION {format.editors}
+{ editor empty$
+    { "" }
+    { editor format.names
+      editor num.names$ #1 >
+	{ editor is.kanji
+		{"線" * } {"(eds.)" *} if$		% 2.00(7)
+	}
+	{ editor is.kanji
+		{"線" *}  {"(ed.)" *} if$		% 2.00(7)
+	}
+      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 :=
+	}
+      if$
+    }
+  while$
+}
+
+FUNCTION {format.date}
+{ before.year 'output.state :=				% 1.00(1)
+  year empty$
+    { month empty$
+	{ "" }
+	{ "there's a month but no year in " cite$ * warning$
+          ""						% 1.00(5)
+	}
+      if$
+    }
+    { "(" year ")" * * }				% 1.00(5)
+  if$
+}
+
+FUNCTION {format.ref.date}				% 3.00(1)>>
+{ before.year 'output.state :=
+  is.kanji.title
+    { "\refdatej{" refdate "}" * *}
+    { "\refdatee{" refdate "}" * *}
+  if$
+}							% 3.00(1)<<
+
+FUNCTION {tie.or.space.connect}
+{ duplicate$ text.length$ #3 <
+    { "~" }
+    { "\ " }						% 1.00(6)
+  if$
+  swap$ * *
+}
+
+FUNCTION {output.volume}
+{ 
+  volume empty$
+    'skip$
+    { "Vol.~" volume * output}
+  if$
+
+}
+
+FUNCTION {output.number}
+{
+  number empty$
+    'skip$
+    { "No.~" number * output}
+  if$
+}
+
+FUNCTION {output.series.volume.number}
+{ series empty$
+    { output.volume
+      output.number }
+    { series is.kanji
+      volume empty$
+      number empty$
+      or
+      and
+        { series " " * volume * number * output}
+        { series output
+          output.volume
+          output.number}
+      if$
+   }
+ if$
+}
+
+FUNCTION {format.edition}
+{ edition empty$
+    { "" }
+    { output.state mid.sentence =
+	{ edition "l" change.case$ " edition" * }
+	{ edition "t" change.case$ " edition" * }
+      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.online}				% 3.00(1)>>
+{ is.kanji.title
+    { "オンラむン" * }
+    { duplicate$ empty$
+        { "(online)" * }
+        { " (online)" * }
+      if$
+    }
+  if$
+}							% 3.00(1)<<
+
+FUNCTION {format.url}					% 3.00(1)>>
+{ is.kanji.title
+    { "\urlj{" url "}" * * }
+    { "\urle{" url "}" * * }
+  if$
+}							% 3.00(1)<<
+
+FUNCTION {format.pages}					% 1.00(7)
+{ pages empty$
+    { "" }
+    { pages multi.page.check
+	{ "pp." pages n.dashify tie.or.space.connect }
+	{ "p." pages tie.or.space.connect }
+      if$
+    }
+  if$
+}
+
+FUNCTION {format.doi.url}				% 3.00(1)>>
+{ doi empty$
+    { url empty$
+	'skip$
+	{ format.online output.nonnull
+	  format.url
+	}
+	if$
+    }
+    { format.online output.nonnull
+      "\doi{" doi "}" * *
+    }
+  if$							% 3.00(1)<<
+}
+
+FUNCTION {format.pages.output}				% 3.00(1)>>
+{ format.pages
+  format.doi.url output					% 3.00(1)<<
+}
+
+FUNCTION {format.vol.num.pages}				% 1.00(8)
+{ volume empty$
+  { ""}
+  { " Vol.~" volume * }
+  if$ 
+  number empty$
+    'skip$
+    { volume empty$
+	{ "there's a number but no volume in " cite$ * warning$ }
+	{ "," *}
+      if$
+      " No.~" number * *
+    }
+  if$
+  pages empty$
+    'skip$
+    { duplicate$ empty$
+	{ pop$ format.pages }
+	{ ", " * format.pages * }
+      if$
+    }
+  if$
+  format.doi.url					% 3.00(1)
+}
+
+FUNCTION {format.chapter.pages}
+{ chapter empty$
+    'format.pages
+    { type empty$
+	{ "chapter" chapter tie.or.space.connect }
+        { type is.kanji 
+             { chapter type tie.or.space.connect }
+             { type "l" change.case$ chapter tie.or.space.connect }
+          if$
+        }
+      if$
+      pages empty$
+	'skip$
+	{ ", " * format.pages * }
+      if$
+    }
+  if$
+  format.doi.url					% 3.00(1)
+}
+
+FUNCTION {format.in.ed.booktitle}
+{ booktitle empty$
+    { "" }
+    { booktitle emphasize
+      editor empty$
+	'skip$
+	{ booktitle is.kanji
+	    { "" * format.editors.inparen * "" *}	% 2.00(6,7)
+	    { " (" * format.editors.inparen * ")" *}	% 1.00(9), 2.00(6)
+	  if$
+	}
+      if$
+    }
+  if$
+}
+
+FUNCTION {empty.misc.check}
+{ author empty$ title empty$ howpublished empty$
+  month empty$ year empty$ note empty$
+  and and and and and
+  key empty$ not 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$
+    { title empty$
+        { "Technical Report" }
+        { title is.kanji
+            { "技術報告" }
+            { "Technical Report" }
+          if$
+        }
+      if$
+    }
+    {type}
+  if$
+  number empty$
+    { "t" change.case$ }
+    { " " number * * }
+  if$
+}
+
+FUNCTION {format.article.crossref}			% 2.00(8)
+{ key empty$
+    { journal empty$
+	{ "need key or journal for " cite$ * " to crossref " * crossref *
+	  warning$
+	  ""
+	}
+	{ journal emphasize }				% 1.00(10)
+      if$
+    }
+    { "In " key * }
+  if$
+  " \cite{" * crossref * "}" *
+}
+
+FUNCTION {format.crossref.editor}			% 1.00(11)
+{ editor #1
+  editor is.kanji { "{ff}" } { "{vv }{ll}" } if$
+  format.name$
+  editor num.names$ duplicate$
+  #2 >
+    { editor is.kanji
+	  {pop$ "ほか" *} {pop$ " et al." * } if$
+    }
+    { #2 <
+	'skip$
+	{ editor #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
+	    { editor is.kanji
+		{"ほか" *} {" et al." * } if$
+	    }
+	    { editor is.kanji
+		{"・" * editor #2 "{ff}" format.name$ * }
+		{" and " * editor #2 "{vv }{ll}" format.name$ * }
+	      if$
+	    }
+	  if$
+	}
+      if$
+    }
+  if$
+}
+
+FUNCTION {format.book.crossref}				% 2.00(8)
+{ 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 emphasize }			% 1.00(10)
+	  if$
+	}
+	{ "In " key * }
+      if$
+    }
+    { format.crossref.editor }
+  if$
+  " \cite{" * crossref * "}" *
+  volume empty$
+    { "empty volume in " cite$ * "'s crossref of " * crossref * warning$ }
+    { duplicate$ is.kanji { "" } { ", "} if$ *
+      "Vol." * volume tie.or.space.connect
+    }
+  if$
+}
+
+FUNCTION {format.incoll.inproc.crossref}		% 2.00(8)
+{ 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 emphasize }			% 1.00(10)
+	  if$
+	}
+	{ "In " key * }
+      if$
+    }
+    { format.crossref.editor }
+  if$
+  " \cite{" * crossref * "}" *
+}
+
+FUNCTION {article}
+{ 
+%%%%
+  author  "author"  required.argument
+  title   "title"   required.argument
+  journal "journal" required.argument
+  year    "year"    required.argument
+%%%% jssst
+  volume  "volume"  
+  number  "number"  
+     required.and.or.argument
+  pages   "pages"   required.argument
+%%%%
+  output.bibitem 
+  format.authors add.colon				% 2.00(5)
+  title output
+  crossref missing$
+    { journal emphasize output
+      format.vol.num.pages output			% 1.00(12)
+      format.date output
+    }
+    { format.article.crossref output.nonnull
+      format.pages.output				% 3.00(1)
+    }
+  if$
+  new.block
+  note output
+  fin.entry
+}
+
+FUNCTION {book}
+{ 
+%%%%
+  author  "author"
+  editor  "editor"
+    required.exclusive.or.argument
+  title   "title"  required.argument
+  publisher "publisher" required.argument
+  year    "year" required.argument
+  optional.series.volume.number.argument
+%%%%
+  output.bibitem
+  author empty$
+    { format.editors}
+    { format.authors}
+  if$
+  add.colon						% 2.00(5)
+  title emphasize output
+  crossref missing$
+    { output.series.volume.number
+      publisher output
+      address output
+    }
+    { new.block
+      format.book.crossref output.nonnull
+    }
+  if$
+  format.edition output
+  format.date output
+  new.block
+  note output
+  fin.entry
+}
+
+FUNCTION {booklet}
+{
+%%%%
+  title   "title"   required.argument
+%%%% jssst
+  author  "author"  required.argument
+%%%%
+  output.bibitem
+  format.authors add.colon				% 2.00(5)
+  title output
+  howpublished output
+  address output
+  format.date output
+  new.block
+  note output
+  fin.entry
+}
+
+FUNCTION {inbook}
+{ 
+%%%%
+  author  "author"
+  editor  "editor"
+     required.exclusive.or.argument
+  title   "title"  required.argument
+  chapter "chapter"
+  pages   "pages"
+     required.and.or.argument
+  publisher  "publisher" required.argument
+  year       "year"      required.argument
+
+  optional.series.volume.number.argument
+%%%%
+  output.bibitem 
+  author empty$
+    { format.editors}
+    { format.authors}
+  if$
+  add.colon						% 2.00(5)
+  title emphasize output
+  crossref missing$
+    { output.series.volume.number
+      format.chapter.pages output
+      publisher output
+    }
+    { format.chapter.pages output
+      new.block
+      format.book.crossref output.nonnull
+    }
+  if$
+  format.edition output
+  format.date output					% 1.00(13)
+  new.block
+  note output
+  fin.entry
+}
+
+FUNCTION {incollection}
+{
+%%%%
+  author    "author"    required.argument
+  title     "title"     required.argument
+  booktitle "booktitle" required.argument
+  publisher "publisher" required.argument
+  year      "year"      required.argument
+
+  optional.series.volume.number.argument
+%%%%
+  output.bibitem
+  format.authors add.colon				% 2.00(5)
+  title output
+  crossref missing$
+    { format.in.ed.booktitle output
+      output.series.volume.number
+      publisher output
+      address output
+      format.edition output
+      format.chapter.pages output			% 1.00(13)
+      format.date output
+    }
+    { format.incoll.inproc.crossref output.nonnull
+      format.chapter.pages output
+    }
+  if$
+  new.block
+  note output
+  fin.entry
+}
+
+FUNCTION {inproceedings}
+{
+%%%%
+  author    "author"    required.argument
+  title     "title"     required.argument
+  year      "year"      required.argument
+
+  optional.series.volume.number.argument
+%%%%
+  output.bibitem 
+  format.authors add.colon				% 2.00(5)
+  title output
+  crossref missing$
+    { format.in.ed.booktitle output
+      booktitle "booktitle" required.argument
+      output.series.volume.number
+      address output
+      organization output
+      publisher output
+      format.pages.output				% 3.00(1)
+      format.date output				% 1.00(13)
+    }
+    { format.incoll.inproc.crossref output.nonnull
+      format.pages.output				% 3.00(1)
+    }
+  if$
+  new.block
+  note output
+  fin.entry
+}
+
+FUNCTION {conference} { inproceedings }
+
+FUNCTION {manual}
+{	
+%%%%
+  title   "title"    required.argument
+%%%% jssst
+  author   "author"
+  organization "organazaion"
+     required.exclusive.or.argument
+%%%%
+  output.bibitem
+  author empty$
+    { organization}
+    { format.authors}
+  if$
+  add.colon						% 2.00(5)
+  title emphasize output
+  author empty$
+    'skip$
+    { organization output }
+  if$
+  address output
+  format.edition output
+  format.date output
+  new.block
+  note output
+  fin.entry
+}
+
+FUNCTION {mastersthesis}
+{
+%%%%
+  author   "author"  required.argument
+  title    "title"   required.argument
+  school   "school"  required.argument
+  year     "year"    required.argument
+%%%%
+  output.bibitem
+  format.authors add.colon				% 2.00(5)
+  title output
+  author empty$
+    { "Master's thesis" }
+    { author is.kanji
+        { "修士論文" }  
+        { "Master's thesis" }
+      if$
+    }
+  if$
+  format.thesis.type output.nonnull
+  school output
+  address output
+  format.date output
+  new.block
+  note output
+  fin.entry
+}
+
+FUNCTION {misc}
+{
+%%%%
+%%%% jssst
+  author "author" required.argument
+  title  "title"  required.argument
+%%%%
+  output.bibitem
+  format.authors add.colon				% 2.00(5)
+  title output
+  howpublished output
+  format.date output
+  new.block
+  note output
+  fin.entry
+  empty.misc.check
+}
+
+FUNCTION {phdthesis}
+{
+%%%%
+  author   "author"  required.argument
+  title    "title"   required.argument
+  school   "school"  required.argument
+  year     "year"    required.argument
+%%%%
+  output.bibitem 
+  format.authors add.colon				% 2.00(5)
+  title output						% 2.00(9)
+  author empty$
+    { "PhD Thesis" }
+    { author is.kanji
+        { "博士論文" }
+        { "PhD Thesis" }
+      if$
+    }
+  if$
+  format.thesis.type output.nonnull
+  school output
+  address output
+  format.date output
+  new.block
+  note output
+  fin.entry
+}
+
+FUNCTION {proceedings}
+{
+%%%%
+  title  "title"  required.argument
+  year   "year"   required.argument
+
+  optional.series.volume.number.argument
+%%%% jssst
+  editor  "editor"
+  organization "organization"
+      required.exclusive.or.argument 
+%%%%
+  output.bibitem 
+  editor empty$
+    { organization }
+    { format.editors }
+  if$
+  add.colon						% 2.00(5)
+  title emphasize output
+  output.series.volume.number
+  address output
+  editor empty$
+    'skip$
+    { organization output }
+  if$
+  publisher output
+  format.date output
+  new.block
+  note output
+  fin.entry
+}
+
+FUNCTION {techreport}
+{
+%%%%
+  author   "author"   required.argument
+  title    "title"    required.argument
+  institution "institution" required.argument
+  year     "year"     required.argument
+%%%%
+  output.bibitem
+  format.authors add.colon				% 2.00(5)
+  title output
+  format.tr.number output.nonnull
+  institution output
+  address output
+  format.date output
+  new.block
+  note output
+  fin.entry
+}
+
+FUNCTION {unpublished}
+{
+%%%%
+  author   "author"   required.argument
+  title    "title"    required.argument
+  note     "note"     required.argument
+%%%%
+  output.bibitem
+  format.authors add.colon				% 2.00(5)
+  title output
+  format.date output
+  new.block
+  note output
+  fin.entry
+}
+
+FUNCTION {webpage}					% 3.00(1)>>
+{
+%%%%
+  author       "author"       required.argument
+  title        "title"        required.argument
+  url          "url"          required.argument
+  refdate      "refdate"      required.argument
+%%%%
+  output.bibitem
+  format.authors add.colon
+  title output
+  organization format.doi.url output
+  format.ref.date output
+  new.block
+  note output
+  fin.entry
+}							% 3.00(1)<<
+
+FUNCTION {default.type} { misc }
+
+MACRO {jan} {"January"}
+
+MACRO {feb} {"February"}
+
+MACRO {mar} {"March"}
+
+MACRO {apr} {"April"}
+
+MACRO {may} {"May"}
+
+MACRO {jun} {"June"}
+
+MACRO {jul} {"July"}
+
+MACRO {aug} {"August"}
+
+MACRO {sep} {"September"}
+
+MACRO {oct} {"October"}
+
+MACRO {nov} {"November"}
+
+MACRO {dec} {"December"}
+
+MACRO {acmcs} {"ACM Computing Surveys"}
+
+MACRO {acta} {"Acta Informatica"}
+
+MACRO {cacm} {"Communications of the ACM"}
+
+MACRO {ibmjrd} {"IBM Journal of Research and Development"}
+
+MACRO {ibmsj} {"IBM Systems Journal"}
+
+MACRO {ieeese} {"IEEE Transactions on Software Engineering"}
+
+MACRO {ieeetc} {"IEEE Transactions on Computers"}
+
+MACRO {ieeetcad}
+ {"IEEE Transactions on Computer-Aided Design of Integrated Circuits"}
+
+MACRO {ipl} {"Information Processing Letters"}
+
+MACRO {jacm} {"Journal of the ACM"}
+
+MACRO {jcss} {"Journal of Computer and System Sciences"}
+
+MACRO {scp} {"Science of Computer Programming"}
+
+MACRO {sicomp} {"SIAM Journal on Computing"}
+
+MACRO {tocs} {"ACM Transactions on Computer Systems"}
+
+MACRO {tods} {"ACM Transactions on Database Systems"}
+
+MACRO {tog} {"ACM Transactions on Graphics"}
+
+MACRO {toms} {"ACM Transactions on Mathematical Software"}
+
+MACRO {toois} {"ACM Transactions on Office Information Systems"}
+
+MACRO {toplas} {"ACM Transactions on Programming Languages and Systems"}
+
+MACRO {tcs} {"Theoretical Computer Science"}
+
+READ
+
+FUNCTION {sortify}
+{ purify$
+  "l" change.case$
+}
+
+INTEGERS { len }
+
+FUNCTION {chop.word}
+{ 's :=
+  'len :=
+  s #1 len substring$ =
+    { s len #1 + global.max$ substring$ }
+    's
+  if$
+}
+
+FUNCTION {sort.format.names}
+{ 's :=
+  yomi empty$
+     'skip$
+     { yomi 's := }
+  if$
+
+  #1 'nameptr :=
+  ""
+  s num.names$ 'numnames :=
+  numnames 'namesleft :=
+    { namesleft #0 > }
+    { nameptr #1 >
+	{ "   " * }
+	'skip$
+      if$
+      s nameptr "{vv{ } }{ll{ }}{  ff{ }}{  jj{ }}" format.name$ 't :=
+      nameptr numnames = t "others" = and
+	{ "et al" * }
+	{ t sortify * }
+      if$
+      nameptr #1 + 'nameptr :=
+      namesleft #1 - 'namesleft :=
+    }
+  while$
+}
+
+FUNCTION {sort.format.title}
+{ 't :=
+  "A " #2
+    "An " #3
+      "The " #4 t chop.word
+    chop.word
+  chop.word
+  sortify
+  #1 global.max$ substring$
+}
+
+FUNCTION {author.sort}
+{ author empty$
+    { key empty$
+	{ "to sort, need author or key in " cite$ * warning$
+	  ""
+	}
+	{ key sortify }
+      if$
+    }
+    { author sort.format.names }
+  if$
+}
+
+FUNCTION {author.editor.sort}
+{ author empty$
+    { editor empty$
+	{ key empty$
+	    { "to sort, need author, editor, or key in " cite$ * warning$
+	      ""
+	    }
+	    { key sortify }
+	  if$
+	}
+	{ editor sort.format.names }
+      if$
+    }
+    { author sort.format.names }
+  if$
+}
+
+FUNCTION {author.organization.sort}
+{ author empty$
+    { organization empty$
+	{ key empty$
+	    { "to sort, need author, organization, or key in " cite$ * warning$
+	      ""
+	    }
+	    { key sortify }
+	  if$
+	}
+	{ "The " #4 organization chop.word sortify }
+      if$
+    }
+    { author sort.format.names }
+  if$
+}
+
+FUNCTION {editor.organization.sort}
+{ editor empty$
+    { organization empty$
+	{ key empty$
+	    { "to sort, need editor, organization, or key in " cite$ * warning$
+	      ""
+	    }
+	    { key sortify }
+	  if$
+	}
+	{ "The " #4 organization chop.word sortify }
+      if$
+    }
+    { editor sort.format.names }
+  if$
+}
+
+FUNCTION {presort}
+{ type$ "book" =
+  type$ "inbook" =
+  or
+    'author.editor.sort
+    { type$ "proceedings" =
+	'editor.organization.sort
+	{ type$ "manual" =
+	    'author.organization.sort
+	    'author.sort
+	  if$
+	}
+      if$
+    }
+  if$
+  "    "
+  *
+  year field.or.null sortify
+  *
+  "    "
+  *
+  title field.or.null
+  sort.format.title
+  *
+  #1 entry.max$ substring$
+  'sort.key$ :=
+}
+
+ITERATE {presort}
+
+SORT
+
+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/Paper/ipsjtech.sty	Sun Apr 24 23:13:44 2022 +0900
@@ -0,0 +1,354 @@
+
+% ipsjtech.sty  (C) 2012 Information Processing Society of Japan
+% Copyright (C) 1995-2010 by Hiroshi Nakashima, Yasuki Saito and
+%                            The Editorial Board of the IPSJ Journal
+
+
+
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{ipsj}
+% [2012/03/26-05/02 v1.00-2.00 IPSJTECH.STY]
+ [2012/06/01 v3.00 IPSJTECH.STY]
+
+
+
+
+%%%%%%%%
+%techrep
+%%%%%%%%
+\def\biography{\ipsjnobiography}
+\def\endbiography{\ipsjendnobiography}
+
+\def\ipsjnobiography{\let\profile\@gobble
+	\ifDS@english \let\author\@gobble \fi
+	\let\adjust\@gobble \setbox0\vbox\bgroup
+	\tolerance\@M \hbadness\@M \hfuzz\maxdimen}
+\def\ipsjendnobiography{\egroup\setbox0\hbox{}}
+
+
+
+
+\def\@uketsuke{%
+\leavevmode%
+\phantom{@received}
+\@ifundefined{@rereceived}{\phantom{, }}{%
+   \phantom{\@rereceived}
+   \@ifundefined{@rerereceived}{\phantom{, }}{\phantom{\@rerereceived}}%
+   \par
+}%
+\phantom{\@accepted}%
+\@ifundefined{@released}{}{, \@released}%
+}
+
+
+\def\@euketsuke{%
+\leavevmode%
+\phantom{\@ereceived}
+\@ifundefined{@erereceived}{\phantom{, }}{%
+   \phantom{\@erereceived}
+   \@ifundefined{@ererereceived}{\phantom{, }}{\phantom{\@ererereceived}}%
+   \par
+}%
+\phantom{\@eaccepted}
+}
+
+
+
+
+
+%%
+\def\SIGHead{\ifDS@english%
+{IPSJ SIG Technical Report}%
+\else 情報凊理孊䌚研究報告\fi}%%
+%
+
+\def\signame@DAM{\ifDS@english%
+IPSJ SIG Technical Report%
+\else 情報凊理孊䌚研究報告\fi}%%
+
+
+
+\def\signame@ACS{\SIGHead}
+\def\signame@PRO{\SIGHead}
+\def\signame@TOM{\SIGHead}
+\def\signame@TOD{\SIGHead}
+\def\signame@CDS{\SIGHead}
+\def\signame@CVA{\SIGHead}
+\def\signame@TBIO{\SIGHead}
+\def\signame@SLDM{\SIGHead}
+\def\signame@JIP{\SIGHead}
+
+
+\def\HeadfontE{%
+\ifDS@english
+   \fontsize{13\Q}{0\h}\sffamily\bfseries\selectfont%
+\else
+   \fontsize{13\Q}{0\h}\bfseries\selectfont%
+\fi
+}
+
+\def\DOIHeadfont{\fontsize{11\Q}{0\h}%\usefont{OT1}{phv}{m}{n}\selectfont
+\selectfont}
+
+
+
+%%%<<<< 1.02
+\ifDS@english
+\def\ps@IPSJTITLEheadings{%
+ \def\@oddhead{\@Ltop%
+\rlap{\small{%%
+%%
+{\HeadfontE{\signame}}%%
+}}%
+%%%%%
+%}}}}%
+\hfil\@Rtop}%
+%%%%%
+ \let\@evenhead\@oddhead
+ \def\@oddfoot{\@Lbot%
+\rlap{%\fontsize{10\Q}{0\h}%
+{\bothashira%
+\copyright \ {\@footyear} Information Processing Society of Japan%
+}}%
+\hfil
+{\botnomble
+{\thepage}
+\@Rbot}%
+ \let\@evenfoot\@oddfoot
+ \let\@mkboth\@gobbletwo
+}}
+%%%
+%%%%%%%%%
+\else
+%%%%%%%%%
+%%%
+\def\ps@IPSJTITLEheadings{%
+ \def\@oddhead{\@Ltop%
+\rlap{\small%
+%%
+{\HeadfontJ{\signame}}%%
+%%%%%
+{%%
+\ifDS@abstract\else\fi
+}}%
+%%%%
+\smash{\raisebox{-4mm}{\rlap{%
+{\DOIHeadfont%%
+IPSJ SIG Technical Report%
+}%
+}}}%
+\hfil\@Rtop}%
+%%
+ \let\@evenhead\@oddhead
+ \def\@oddfoot{\@Lbot%
+\rlap{%
+{\bothashira%
+{\textcopyrighttx} \ {\@footyear} Information Processing Society of Japan%
+}}%
+\hfil%
+{\botnomble%
+{\thepage}}%
+\@Rbot}%
+ \let\@evenfoot\@oddfoot
+ \let\@mkboth\@gobbletwo
+}
+\fi
+
+
+
+
+
+%==========================================
+
+\newif\if@ET
+\def\etitle#1{\global\@ETtrue%
+\gdef\@etitle{#1}}
+
+\newif\if@JK
+
+\def\jkeyword{\@par%
+\global\@JKtrue%
+\global\setbox\@jkeywordbox\hbox\bgroup
+  \begin{minipage}[t]{.8\textwidth}%
+\fontsize{12\JQ}{15\h}\selectfont%
+{\noindent{\JKEYWORD}}%
+\ignorespaces}
+\def\endjkeyword{%
+\par\end{minipage}%
+\egroup\ignorespaces}
+
+
+
+\newif\if@EAB
+
+\def\eabstract{%
+\global\@EABtrue%
+ \global\setbox\@eabstractbox\hbox\bgroup%
+  \begin{minipage}[t]{.8\textwidth}% 12Q 16H
+\fontsize{12\Q}{15\h}\selectfont%
+\noindent{\EGAIYOU}%
+\ignorespaces}
+
+
+
+\newif\if@EK
+
+\def\ekeyword{\@par%
+\global\@EKtrue%
+ \global\setbox\@ekeywordbox\hbox\bgroup
+  \begin{minipage}[t]{.8\textwidth}%
+\fontsize{12\Q}{15\h}\selectfont%
+{\noindent{\EKEYWORD}}%
+\ignorespaces}
+\def\endekeyword{%
+\par\end{minipage}%
+\egroup\ignorespaces}
+
+
+
+\def\@maketitle{%
+\newpage\null
+%%%%%%%%%%
+\ifDS@english
+%%
+\vskip-1.3mm%<--
+\ifx\SHUBETUname\relax%
+{\SHUBETUfontE{\vphantom{\SHUBETUname@DEF}}}%%
+\else
+{\SHUBETUfontE{\vphantom{\SHUBETUname}}}%%
+\fi
+%%
+\else
+\ifx\SHUBETUname\relax%
+{\SHUBETUfontJ{\SHUBETUname@DEF}}%%
+\else
+{\SHUBETUfontJ{\SHUBETUname}}%%
+\fi\fi
+%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%
+\vskip\shubetutitlesep%
+%%%%%%%%%%%%%%%%%%%%%%%%
+%%
+%\vskip 10mm%
+\begin{center}
+\authortitle %%<---
+\end{center}
+%%%%%%%%%%%%%%%%%%%
+%
+}
+
+
+
+
+
+
+\ifDS@english
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\def\authortitle{%
+{\Engtitlefont%
+{\@title}\par}
+%%%%%%%%%%%%%%%%%%%%%%%
+\vskip\Etitleauthorsep%
+%%%%%%%%%%%%%%%%%%%%%%%
+{\Engeauthorfont%
+\authoroutput{e}\par}%
+%%%%%%%%%%%%%%%%%%%%%%%%%
+\vskip\Eauthorreceivesep%
+%%%%%%%%%%%%%%%%%%%%%%%%%
+{\Enguketukefont%
+{\@uketsuke}\par}%
+%%%%%%%%%%%%%%%%%%%%%%%
+\vskip\Ereceiveabstsep%
+%%%%%%%%%%%%%%%%%%%%%%%
+\mbox{\box\@abstractbox}\par%
+%%%%%%%%%%%%%%%%%%%%%%%
+\vskip\Eabstkeywordsep%
+%%%%%%%%%%%%%%%%%%%%%%%
+\let\@keywordbox\@ekeywordbox
+\mbox{\box\@ekeywordbox}\par%
+%%%%%%%%%%%%%%%%%%%
+\vskip\JEhonbunsep%
+%%%%%%%%%%%%%%%%%%%
+}
+%===========
+\else
+%==========
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\def\authortitle{%
+{\jtitlefont%
+{\@title}\par}%
+%%%%%%%%%%%%%%%%%%%%%%%%
+\vskip\Jtitlejauthorsep%
+%%%%%%%%%%%%%%%%%%%%%%%%
+%======
+{\authorfont%
+\authoroutput{}\par}%
+%%%%%%%%%%%%%%%%%%%%%%%%%%
+\vskip\Jauthorjreceivesep%
+%%%%%%%%%%%%%%%%%%%%%%%%%%
+%======
+{\juketukefont%
+{\@uketsuke}\par}%
+%%%%%%%%%%%%%%%%%%%%%%%%
+\vskip\Jreceivejabstsep%
+%%%%%%%%%%%%%%%%%%%%%%%%
+\mbox{\box\@abstractbox}\par%
+%%%%%%%%%%%%%%%%%%%%%%%%
+\if@JK%<-----
+\vskip\Jabstsepjkeyword%
+%
+\mbox{\box\@jkeywordbox}\par%
+\fi%<-----
+\if@ET%<-----
+%%%%%%%%%%%%%%%%%%%%%%
+\vskip\Jkeywordetitle%
+%%%%%%%%%%%%%%%%%%%%%%
+{\etitlefont%
+{\bfseries{\@etitle}}}\par%
+\fi%<-----
+%%%%%%%%%%%%%%%%%%%%%%
+\ifDS@noauthor%%%%!!!!!!!!!!!!!!
+\else%
+\vskip\Jetitleeauthor% 
+%%%%%%%%%%%%%%%%%%%%%%
+%% eauthor
+{\eauthorfont%
+\authoroutput{e}
+\par}%
+\vskip\Jeauthorereceivesep% 
+\fi%%%%%%!!!!!!!!!!!!!!!!!
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%\ifDS@noauthor%%%%!!!!!!!!!!!!!!
+%\else%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+{\euketukefont%
+{\@euketsuke}\par}%
+%\fi%%%!!!!
+%%%%%%%%%%%%%%%%%%%%%%%%%
+\if@EAB%<-----
+\vskip\Jereceiveeabstsep% 
+%%%%%%%%%%%%%%%%%%%%%%%%%
+\mbox{\box\@eabstractbox}\par%
+\fi%<-----j
+\if@EK%<-----
+%%%%%%%%%%%%%%%%%%%%%%%%%
+\vskip\Jeabstekeywordsep% 
+%%%%%%%%%%%%%%%%%%%%%%%%%
+\mbox{\box\@ekeywordbox}\par%
+\fi%<-----
+%%%%%%%%%%%%%%%%%%%
+\vskip\JEhonbunsep%
+%%%%%%%%%%%%%%%%%%%
+}
+\fi
+
+
+
+
+\pagestyle{IPSJTITLEheadings}
+
+
+
+\endinput
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Paper/ipsjunsrt-e.bst	Sun Apr 24 23:13:44 2022 +0900
@@ -0,0 +1,1103 @@
+% ipsjsort-e.bst 28-Oct-10 by Hiroshi Nakashima (ver 3.00)
+% ipsjsort-e.bst 15-Jun-07 by Hiroshi Nakashima (ver 2.12)
+% ipsjsort.bst 30-Jan-02 by Hiroshi Nakashima (ver 2.00)
+% ipsjsort.bst 28-Dec-93 by Hiroshi Nakashima (ver 1.00)
+% jssst.bst tomura@etl.go.jp (Satoru Tomura)
+% BibTeX standard bibliography style `jplain'
+	% version 0.10 for JBibTeX versions 0.10 or later, JLaTeX version 2.09.
+	% by Shouichi Matsui, matsui@denken.junet
+
+ENTRY
+  { address
+    author
+    booktitle
+    chapter
+    doi							% 3.00(1)
+    edition
+    editor
+    howpublished
+    institution
+    journal
+    key
+    month
+    note
+    number
+    organization
+    pages
+    publisher
+    refdate						% 3.00(1)
+    school
+    series
+    title
+    type
+    url							% 3.00(1)
+    volume
+    year
+  }
+  {}
+  { label }
+
+INTEGERS { output.state before.all mid.sentence after.sentence after.block }
+
+INTEGERS { before.year }
+
+FUNCTION {init.state.consts}
+{ #0 'before.all :=
+  #1 'mid.sentence :=
+  #2 'after.sentence :=
+  #3 'after.block :=
+  #4 'before.year :=					% 1.00(1)
+}
+
+STRINGS { s t }
+
+FUNCTION {output.nonnull}
+{ 's :=
+  output.state mid.sentence =
+    { ", " * write$ }
+    { output.state after.block =
+	{ add.period$ write$
+	  newline$
+	  "\newblock " write$
+	}
+	{ output.state before.all =
+	    'write$
+	    { output.state before.year =		% 1.00(1)
+		{ " " * write$ }
+		{ add.period$ " " * write$ }
+	      if$
+	    }
+	  if$
+	}
+      if$
+      mid.sentence 'output.state :=
+    }
+  if$
+  s
+}
+
+FUNCTION {output}
+{ duplicate$ empty$
+    'pop$
+    'output.nonnull
+  if$
+}
+
+FUNCTION {required.argument}
+{ 't :=
+  empty$
+    {"Missing required argument " t * " in " * cite$ * warning$}
+    'skip$
+  if$
+}
+
+FUNCTION {required.exclusive.or.argument}
+{ 't :=
+  empty$
+    { 's := 
+      empty$
+        { t " or " * s * " is missing in " * cite$ * warning$}
+        'skip$
+      if$
+    }
+    { 's :=
+      empty$
+        'skip$
+        { "You can use only one of " t * " and " * s * " in " * cite$ * warning$}
+      if$
+    }
+  if$
+}
+
+FUNCTION {required.and.or.argument}
+{ 't := empty$
+     { 's := empty$
+         { "there's no " t * " and/or " * s * cite$ * warning$ }
+         'skip$
+       if$
+     }
+     { pop$ pop$ }
+  if$
+}
+
+FUNCTION {optional.series.volume.number.argument}
+{ series empty$
+    { volume empty$
+        { number empty$
+            'skip$
+            { "there's a number but no series in " cite$ * warning$ }
+          if$
+        }
+        { number empty$
+            { "there's a volume but no series in " cite$ * warning$ }
+            { "you can use only one of volume and number in " cite$ * warning$}
+          if$
+        }
+     if$
+    }
+    { volume empty$
+        { number empty$
+            { "there's a series but neither volume nor number in " cite$ * warning$ }
+            'skip$
+          if$
+        }
+        { number empty$
+            'skip$
+            { "you can use only one of volume and number in " cite$ * warning$ }
+          if$
+        }
+     if$
+   }
+   if$
+}            
+
+FUNCTION {output.bibitem}
+{ newline$
+  "\bibitem{" write$
+  cite$ write$
+  "}" write$
+  newline$
+  before.all 'output.state :=
+}
+
+FUNCTION {fin.entry}
+{ add.period$
+  write$
+  newline$
+}
+
+FUNCTION {new.block}
+{ output.state before.all =
+    'skip$
+    { after.block 'output.state := }
+  if$
+}
+
+FUNCTION {new.sentence}
+{ output.state after.block =
+    'skip$
+    { output.state before.all =
+	'skip$
+	{ after.sentence 'output.state := }
+      if$
+    }
+  if$
+}
+
+FUNCTION {not}
+{   { #0 }
+    { #1 }
+  if$
+}
+
+FUNCTION {and}
+{   'skip$
+    { pop$ #0 }
+  if$
+}
+
+FUNCTION {or}
+{   { pop$ #1 }
+    'skip$
+  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 {field.or.null}
+{ duplicate$ empty$
+    { pop$ "" }
+    'skip$
+  if$
+}
+
+FUNCTION {emphasize}
+{ duplicate$ empty$
+    { pop$ "" }
+    { "{\em " swap$ * "}" * }
+  if$
+}
+
+INTEGERS { nameptr namesleft numnames }
+
+FUNCTION {format.names}					% 1.00(4), 2.00(4)
+{ 's :=
+  #1 'nameptr :=
+  s num.names$ 'numnames :=
+  numnames 'namesleft :=
+    { namesleft #0 > }
+    { s nameptr "{vv }{ll}{, jj}{, f.}" format.name$ 't :=
+      nameptr #1 >
+	{ namesleft #1 >
+	    { ", " * t * }
+	    { t "others" =
+		{" et al." * }
+		{" and " * t * }
+	      if$
+	    }
+	  if$
+	}
+	't
+      if$
+      nameptr #1 + 'nameptr :=
+      namesleft #1 - 'namesleft :=
+    }
+  while$
+}
+
+FUNCTION {format.authors}
+{ author empty$
+    { "" }
+    { author format.names }
+  if$
+}
+
+FUNCTION {add.colon}					% 2.00(5)
+{ ": " *
+}
+
+FUNCTION {format.editors.inparen}			% 2.00(6)
+{ editor empty$
+    { "" }
+    { editor format.names
+      editor num.names$ #1 >
+	{", eds." *}
+	{", ed." *}
+      if$
+    }
+  if$
+}
+
+FUNCTION {format.editors}
+{ editor empty$
+    { "" }
+    { editor format.names
+      editor num.names$ #1 >
+	{"(eds.)" *}
+	{"(ed.)" *}
+      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 :=
+	}
+      if$
+    }
+  while$
+}
+
+FUNCTION {format.date}
+{ before.year 'output.state :=				% 1.00(1)
+  year empty$
+    { month empty$
+	{ "" }
+	{ "there's a month but no year in " cite$ * warning$
+          ""						% 1.00(5)
+	}
+      if$
+    }
+    { "(" year ")" * * }				% 1.00(5)
+  if$
+}
+
+FUNCTION {format.ref.date}				% 3.00(1)>>
+{ before.year 'output.state :=
+  "\refdatee{" refdate "}" * *
+}							% 3.00(1)<<
+
+FUNCTION {tie.or.space.connect}
+{ duplicate$ text.length$ #3 <
+    { "~" }
+    { "\ " }						% 1.00(6)
+  if$
+  swap$ * *
+}
+
+FUNCTION {output.volume}
+{ 
+  volume empty$
+    'skip$
+    { "Vol.~" volume * output}
+  if$
+
+}
+
+FUNCTION {output.number}
+{
+  number empty$
+    'skip$
+    { "No.~" number * output}
+  if$
+}
+
+FUNCTION {output.series.volume.number}
+{ series empty$
+    { output.volume
+      output.number }
+    { series output
+      output.volume
+      output.number }
+ if$
+}
+
+FUNCTION {format.edition}
+{ edition empty$
+    { "" }
+    { output.state mid.sentence =
+	{ edition "l" change.case$ " edition" * }
+	{ edition "t" change.case$ " edition" * }
+      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.online}				% 3.00(1)>>
+{ duplicate$ empty$
+    { "(online)" * }
+    { " (online)" * }
+  if$
+}							% 3.00(1)<<
+
+FUNCTION {format.url}					% 3.00(1)>>
+{ "\urle{" url "}" * *
+}							% 3.00(1)<<
+
+FUNCTION {format.pages}					% 1.00(7)
+{ pages empty$
+    { "" }
+    { pages multi.page.check
+	{ "pp." pages n.dashify tie.or.space.connect }
+	{ "p." pages tie.or.space.connect }
+      if$
+    }
+  if$
+}
+
+FUNCTION {format.doi.url}				% 3.00(1)>>
+{ doi empty$
+    { url empty$
+	'skip$
+	{ format.online output.nonnull
+	  format.url
+	}
+	if$
+    }
+    { format.online output.nonnull
+      "\doi{" doi "}" * *
+    }
+  if$							% 3.00(1)<<
+}
+
+FUNCTION {format.pages.output}				% 3.00(1)>>
+{ format.pages
+  format.doi.url output					% 3.00(1)<<
+}
+
+FUNCTION {format.vol.num.pages}				% 1.00(8)
+{ volume empty$
+  { ""}
+  { " Vol.~" volume * }
+  if$ 
+  number empty$
+    'skip$
+    { volume empty$
+	{ "there's a number but no volume in " cite$ * warning$ }
+	{ "," *}
+      if$
+      " No.~" number * *
+    }
+  if$
+  pages empty$
+    'skip$
+    { duplicate$ empty$
+	{ pop$ format.pages }
+	{ ", " * format.pages * }
+      if$
+    }
+  if$
+  format.doi.url					% 3.00(1)
+}
+
+FUNCTION {format.chapter.pages}
+{ chapter empty$
+    'format.pages
+    { type empty$
+	{ "chapter" chapter tie.or.space.connect }
+        { type "l" change.case$ chapter tie.or.space.connect }
+      if$
+      pages empty$
+	'skip$
+	{ ", " * format.pages * }
+      if$
+    }
+  if$
+  format.doi.url					% 3.00(1)
+}
+
+FUNCTION {format.in.ed.booktitle}
+{ booktitle empty$
+    { "" }
+    { booktitle emphasize
+      editor empty$
+	'skip$
+	{ " (" * format.editors.inparen * ")" *}	% 1.00(9), 2.00(6)
+      if$
+    }
+  if$
+}
+
+FUNCTION {empty.misc.check}
+{ author empty$ title empty$ howpublished empty$
+  month empty$ year empty$ note empty$
+  and and and and and
+  key empty$ not 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 * * }
+  if$
+}
+
+FUNCTION {format.article.crossref}			% 2.00(8)
+{ key empty$
+    { journal empty$
+	{ "need key or journal for " cite$ * " to crossref " * crossref *
+	  warning$
+	  ""
+	}
+	{ journal emphasize }				% 1.00(10)
+      if$
+    }
+    { "In " key * }
+  if$
+  " \cite{" * crossref * "}" *
+}
+
+FUNCTION {format.crossref.editor}			% 1.00(11)
+{ editor #1 "{vv }{ll}" format.name$
+  editor num.names$ duplicate$
+  #2 >
+    {pop$ " et al." * }
+    { #2 <
+	'skip$
+	{ editor #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
+	    {" et al." * }
+	    {" and " * editor #2 "{vv }{ll}" format.name$ * }
+	  if$
+	}
+      if$
+    }
+  if$
+}
+
+FUNCTION {format.book.crossref}				% 2.00(8)
+{ 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 emphasize }			% 1.00(10)
+	  if$
+	}
+	{ "In " key * }
+      if$
+    }
+    { format.crossref.editor }
+  if$
+  " \cite{" * crossref * "}" *
+  volume empty$
+    { "empty volume in " cite$ * "'s crossref of " * crossref * warning$ }
+    { * "Vol." * volume tie.or.space.connect }
+  if$
+}
+
+FUNCTION {format.incoll.inproc.crossref}		% 2.00(8)
+{ 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 emphasize }			% 1.00(10)
+	  if$
+	}
+	{ "In " key * }
+      if$
+    }
+    { format.crossref.editor }
+  if$
+  " \cite{" * crossref * "}" *
+}
+
+FUNCTION {article}
+{ 
+%%%%
+  author  "author"  required.argument
+  title   "title"   required.argument
+  journal "journal" required.argument
+  year    "year"    required.argument
+%%%% jssst
+  volume  "volume"  
+  number  "number"  
+     required.and.or.argument
+  pages   "pages"   required.argument
+%%%%
+  output.bibitem 
+  format.authors add.colon				% 2.00(5)
+  title output
+  crossref missing$
+    { journal emphasize output
+      format.vol.num.pages output			% 1.00(12)
+      format.date output
+    }
+    { format.article.crossref output.nonnull
+      format.pages.output				% 3.00(1)
+    }
+  if$
+  new.block
+  note output
+  fin.entry
+}
+
+FUNCTION {book}
+{ 
+%%%%
+  author  "author"
+  editor  "editor"
+    required.exclusive.or.argument
+  title   "title"  required.argument
+  publisher "publisher" required.argument
+  year    "year" required.argument
+  optional.series.volume.number.argument
+%%%%
+  output.bibitem
+  author empty$
+    { format.editors}
+    { format.authors}
+  if$
+  add.colon						% 2.00(5)
+  title emphasize output
+  crossref missing$
+    { output.series.volume.number
+      publisher output
+      address output
+    }
+    { new.block
+      format.book.crossref output.nonnull
+    }
+  if$
+  format.edition output
+  format.date output
+  new.block
+  note output
+  fin.entry
+}
+
+FUNCTION {booklet}
+{
+%%%%
+  title   "title"   required.argument
+%%%% jssst
+  author  "author"  required.argument
+%%%%
+  output.bibitem
+  format.authors add.colon				% 2.00(5)
+  title output
+  howpublished output
+  address output
+  format.date output
+  new.block
+  note output
+  fin.entry
+}
+
+FUNCTION {inbook}
+{ 
+%%%%
+  author  "author"
+  editor  "editor"
+     required.exclusive.or.argument
+  title   "title"  required.argument
+  chapter "chapter"
+  pages   "pages"
+     required.and.or.argument
+  publisher  "publisher" required.argument
+  year       "year"      required.argument
+
+  optional.series.volume.number.argument
+%%%%
+  output.bibitem 
+  author empty$
+    { format.editors}
+    { format.authors}
+  if$
+  add.colon						% 2.00(5)
+  title emphasize output
+  crossref missing$
+    { output.series.volume.number
+      format.chapter.pages output
+      publisher output
+    }
+    { format.chapter.pages output
+      new.block
+      format.book.crossref output.nonnull
+    }
+  if$
+  format.edition output
+  format.date output					% 1.00(13)
+  new.block
+  note output
+  fin.entry
+}
+
+FUNCTION {incollection}
+{
+%%%%
+  author    "author"    required.argument
+  title     "title"     required.argument
+  booktitle "booktitle" required.argument
+  publisher "publisher" required.argument
+  year      "year"      required.argument
+
+  optional.series.volume.number.argument
+%%%%
+  output.bibitem
+  format.authors add.colon				% 2.00(5)
+  title output
+  crossref missing$
+    { format.in.ed.booktitle output
+      output.series.volume.number
+      publisher output
+      address output
+      format.edition output
+      format.chapter.pages output			% 1.00(13)
+      format.date output
+    }
+    { format.incoll.inproc.crossref output.nonnull
+      format.chapter.pages output
+    }
+  if$
+  new.block
+  note output
+  fin.entry
+}
+
+FUNCTION {inproceedings}
+{
+%%%%
+  author    "author"    required.argument
+  title     "title"     required.argument
+  year      "year"      required.argument
+
+  optional.series.volume.number.argument
+%%%%
+  output.bibitem 
+  format.authors add.colon				% 2.00(5)
+  title output
+  crossref missing$
+    { format.in.ed.booktitle output
+      booktitle "booktitle" required.argument
+      output.series.volume.number
+      address output
+      organization output
+      publisher output
+      format.pages.output				% 3.00(1)
+      format.date output				% 1.00(13)
+    }
+    { format.incoll.inproc.crossref output.nonnull
+      format.pages.output				% 3.00(1)
+    }
+  if$
+  new.block
+  note output
+  fin.entry
+}
+
+FUNCTION {conference} { inproceedings }
+
+FUNCTION {manual}
+{	
+%%%%
+  title   "title"    required.argument
+%%%% jssst
+  author   "author"
+  organization "organazaion"
+     required.exclusive.or.argument
+%%%%
+  output.bibitem
+  author empty$
+    { organization}
+    { format.authors}
+  if$
+  add.colon						% 2.00(5)
+  title emphasize output
+  author empty$
+    'skip$
+    { organization output }
+  if$
+  address output
+  format.edition output
+  format.date output
+  new.block
+  note output
+  fin.entry
+}
+
+FUNCTION {mastersthesis}
+{
+%%%%
+  author   "author"  required.argument
+  title    "title"   required.argument
+  school   "school"  required.argument
+  year     "year"    required.argument
+%%%%
+  output.bibitem
+  format.authors add.colon				% 2.00(5)
+  title output
+  "Master's thesis"
+  format.thesis.type output.nonnull
+  school output
+  address output
+  format.date output
+  new.block
+  note output
+  fin.entry
+}
+
+FUNCTION {misc}
+{
+%%%%
+%%%% jssst
+  author "author" required.argument
+  title  "title"  required.argument
+%%%%
+  output.bibitem
+  format.authors add.colon				% 2.00(5)
+  title output
+  howpublished output
+  format.date output
+  new.block
+  note output
+  fin.entry
+  empty.misc.check
+}
+
+FUNCTION {phdthesis}
+{
+%%%%
+  author   "author"  required.argument
+  title    "title"   required.argument
+  school   "school"  required.argument
+  year     "year"    required.argument
+%%%%
+  output.bibitem 
+  format.authors add.colon				% 2.00(5)
+  title output						% 2.00(9)
+  "PhD Thesis"
+  format.thesis.type output.nonnull
+  school output
+  address output
+  format.date output
+  new.block
+  note output
+  fin.entry
+}
+
+FUNCTION {proceedings}
+{
+%%%%
+  title  "title"  required.argument
+  year   "year"   required.argument
+
+  optional.series.volume.number.argument
+%%%% jssst
+  editor  "editor"
+  organization "organization"
+      required.exclusive.or.argument 
+%%%%
+  output.bibitem 
+  editor empty$
+    { organization }
+    { format.editors }
+  if$
+  add.colon						% 2.00(5)
+  title emphasize output
+  output.series.volume.number
+  address output
+  editor empty$
+    'skip$
+    { organization output }
+  if$
+  publisher output
+  format.date output
+  new.block
+  note output
+  fin.entry
+}
+
+FUNCTION {techreport}
+{
+%%%%
+  author   "author"   required.argument
+  title    "title"    required.argument
+  institution "institution" required.argument
+  year     "year"     required.argument
+%%%%
+  output.bibitem
+  format.authors add.colon				% 2.00(5)
+  title output
+  format.tr.number output.nonnull
+  institution output
+  address output
+  format.date output
+  new.block
+  note output
+  fin.entry
+}
+
+FUNCTION {unpublished}
+{
+%%%%
+  author   "author"   required.argument
+  title    "title"    required.argument
+  note     "note"     required.argument
+%%%%
+  output.bibitem
+  format.authors add.colon				% 2.00(5)
+  title output
+  format.date output
+  new.block
+  note output
+  fin.entry
+}
+
+FUNCTION {webpage}					% 3.00(1)>>
+{
+%%%%
+  author       "author"       required.argument
+  title        "title"        required.argument
+  url          "url"          required.argument
+  refdate      "refdate"      required.argument
+%%%%
+  output.bibitem
+  format.authors add.colon
+  title output
+  organization format.doi.url output
+  format.ref.date output
+  new.block
+  note output
+  fin.entry
+}							% 3.00(1)<<
+
+FUNCTION {default.type} { misc }
+
+MACRO {jan} {"January"}
+
+MACRO {feb} {"February"}
+
+MACRO {mar} {"March"}
+
+MACRO {apr} {"April"}
+
+MACRO {may} {"May"}
+
+MACRO {jun} {"June"}
+
+MACRO {jul} {"July"}
+
+MACRO {aug} {"August"}
+
+MACRO {sep} {"September"}
+
+MACRO {oct} {"October"}
+
+MACRO {nov} {"November"}
+
+MACRO {dec} {"December"}
+
+MACRO {acmcs} {"ACM Computing Surveys"}
+
+MACRO {acta} {"Acta Informatica"}
+
+MACRO {cacm} {"Communications of the ACM"}
+
+MACRO {ibmjrd} {"IBM Journal of Research and Development"}
+
+MACRO {ibmsj} {"IBM Systems Journal"}
+
+MACRO {ieeese} {"IEEE Transactions on Software Engineering"}
+
+MACRO {ieeetc} {"IEEE Transactions on Computers"}
+
+MACRO {ieeetcad}
+ {"IEEE Transactions on Computer-Aided Design of Integrated Circuits"}
+
+MACRO {ipl} {"Information Processing Letters"}
+
+MACRO {jacm} {"Journal of the ACM"}
+
+MACRO {jcss} {"Journal of Computer and System Sciences"}
+
+MACRO {scp} {"Science of Computer Programming"}
+
+MACRO {sicomp} {"SIAM Journal on Computing"}
+
+MACRO {tocs} {"ACM Transactions on Computer Systems"}
+
+MACRO {tods} {"ACM Transactions on Database Systems"}
+
+MACRO {tog} {"ACM Transactions on Graphics"}
+
+MACRO {toms} {"ACM Transactions on Mathematical Software"}
+
+MACRO {toois} {"ACM Transactions on Office Information Systems"}
+
+MACRO {toplas} {"ACM Transactions on Programming Languages and Systems"}
+
+MACRO {tcs} {"Theoretical Computer Science"}
+
+READ
+
+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/Paper/ipsjunsrt.bst	Sun Apr 24 23:13:44 2022 +0900
@@ -0,0 +1,1208 @@
+% ipsjunsrt.bst 28-Oct-10 by Hiroshi Nakashima (ver 3.00)
+% ipsjunsrt.bst 15-Jun-07 by Hiroshi Nakashima (ver 2.12)
+% ipsjunsrt.bst 30-Jan-02 by Hiroshi Nakashima (ver 2.00)
+% ipsjunsrt.bst 28-Dec-93 by Hiroshi Nakashima (ver 1.00)
+% jssst.bst tomura@etl.go.jp (Satoru Tomura)
+% BibTeX standard bibliography style `jplain'
+	% version 0.10 for JBibTeX versions 0.10 or later, JLaTeX version 2.09.
+	% by Shouichi Matsui, matsui@denken.junet
+
+ENTRY
+  { address
+    author
+    booktitle
+    chapter
+    doi							% 3.00(1)
+    edition
+    editor
+    howpublished
+    institution
+    journal
+    key
+    month
+    note
+    number
+    organization
+    pages
+    publisher
+    refdate						% 3.00(1)
+    school
+    series
+    title
+    type
+    url							% 3.00(1)
+    volume
+    year
+    yomi
+  }
+  {}
+  { label }
+
+INTEGERS { output.state before.all mid.sentence after.sentence after.block }
+
+INTEGERS { before.year }
+
+FUNCTION {init.state.consts}
+{ #0 'before.all :=
+  #1 'mid.sentence :=
+  #2 'after.sentence :=
+  #3 'after.block :=
+  #4 'before.year :=					% 1.00(1)
+}
+
+STRINGS { s t }
+
+FUNCTION {is.kanji}
+{ is.kanji.str$ }					% 1.00(2), 2.00(1)
+
+FUNCTION {is.kanji.title}				% 3.00(1)
+{ title is.kanji.str$ }
+
+FUNCTION {output.nonnull}
+{ 's :=
+  output.state mid.sentence =
+    { duplicate$ is.kanji				% 2.00(2)
+	{ "" * write$ }
+	{ ", " * write$ }
+      if$
+    }
+    { output.state after.block =
+	{ add.period$ write$
+	  newline$
+	  "\newblock " write$
+	}
+	{ output.state before.all =
+	    'write$
+	    { output.state before.year =		% 1.00(1)
+		{ " " * write$ }
+		{ add.period$ " " * write$ }
+	      if$
+	    }
+	  if$
+	}
+      if$
+      mid.sentence 'output.state :=
+    }
+  if$
+  s
+}
+
+FUNCTION {output}
+{ duplicate$ empty$
+    'pop$
+    'output.nonnull
+  if$
+}
+
+FUNCTION {required.argument}
+{ 't :=
+  empty$
+    {"Missing required argument " t * " in " * cite$ * warning$}
+    'skip$
+  if$
+}
+
+FUNCTION {required.exclusive.or.argument}
+{ 't :=
+  empty$
+    { 's := 
+      empty$
+        { t " or " * s * " is missing in " * cite$ * warning$}
+        'skip$
+      if$
+    }
+    { 's :=
+      empty$
+        'skip$
+        { "You can use only one of " t * " and " * s * " in " * cite$ * warning$}
+      if$
+    }
+  if$
+}
+
+FUNCTION {required.and.or.argument}
+{ 't := empty$
+     { 's := empty$
+         { "there's no " t * " and/or " * s * cite$ * warning$ }
+         'skip$
+       if$
+     }
+     { pop$ pop$ }
+  if$
+}
+
+FUNCTION {optional.series.volume.number.argument}
+{ series empty$
+    { volume empty$
+        { number empty$
+            'skip$
+            { "there's a number but no series in " cite$ * warning$ }
+          if$
+        }
+        { number empty$
+            { "there's a volume but no series in " cite$ * warning$ }
+            { "you can use only one of volume and number in " cite$ * warning$}
+          if$
+        }
+     if$
+    }
+    { volume empty$
+        { number empty$
+            { "there's a series but neither volume nor number in " cite$ * warning$ }
+            'skip$
+          if$
+        }
+        { number empty$
+            'skip$
+            { "you can use only one of volume and number in " cite$ * warning$ }
+          if$
+        }
+     if$
+   }
+   if$
+}            
+
+FUNCTION {output.bibitem}
+{ newline$
+  "\bibitem{" write$
+  cite$ write$
+  "}" write$
+  newline$
+  before.all 'output.state :=
+}
+
+FUNCTION {fin.entry}
+{ add.period$
+  write$
+  newline$
+}
+
+FUNCTION {new.block}
+{ output.state before.all =
+    'skip$
+    { after.block 'output.state := }
+  if$
+}
+
+FUNCTION {new.sentence}
+{ output.state after.block =
+    'skip$
+    { output.state before.all =
+	'skip$
+	{ after.sentence 'output.state := }
+      if$
+    }
+  if$
+}
+
+FUNCTION {not}
+{   { #0 }
+    { #1 }
+  if$
+}
+
+FUNCTION {and}
+{   'skip$
+    { pop$ #0 }
+  if$
+}
+
+FUNCTION {or}
+{   { pop$ #1 }
+    'skip$
+  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 {field.or.null}
+{ duplicate$ empty$
+    { pop$ "" }
+    'skip$
+  if$
+}
+
+FUNCTION {emphasize}
+{ duplicate$ empty$
+    { pop$ "" }
+    { duplicate$ is.kanji
+        'skip$						% 1.00(3)
+        { "{\em " swap$ * "}" * }			% 2.00(3)
+      if$
+    }
+  if$
+}
+
+INTEGERS { nameptr namesleft numnames }
+
+FUNCTION {format.names}					% 1.00(4), 2.00(4)
+{ 's :=
+  #1 'nameptr :=
+  s num.names$ 'numnames :=
+  numnames 'namesleft :=
+    { namesleft #0 > }
+    { s nameptr "{ff}{ll}" format.name$ duplicate$ is.kanji
+	{ duplicate$ text.length$ #6 >
+	    { 't := }
+	    { pop$ s nameptr "{ff} {ll}" format.name$ 't := }
+	  if$
+	}
+        { pop$ s nameptr "{vv }{ll}{, jj}{, f.}" format.name$ 't := }
+      if$
+      nameptr #1 >
+	{ namesleft #1 >
+	    { s is.kanji
+		{ "" }
+		{ ", " }
+	      if$
+	      * t * }
+	    { t "others" =
+		{ s is.kanji
+			{"ほか" * }
+			{" et al." * }
+		      if$
+                }
+		{ s is.kanji
+			{"" * t * }	% put "," here for Kanji (H.N.)
+			{" and " * t * }
+	     	      if$
+		}
+	      if$
+	    }
+	  if$
+	}
+	't
+      if$
+      nameptr #1 + 'nameptr :=
+      namesleft #1 - 'namesleft :=
+    }
+  while$
+}
+
+FUNCTION {format.authors}
+{ author empty$
+    { "" }
+    { author format.names }
+  if$
+}
+
+FUNCTION {add.colon}					% 2.00(5)
+{ duplicate$ is.kanji
+    { "\" * }						% 2.12(1)
+    { ": " * }
+  if$
+}
+
+FUNCTION {format.editors.inparen}			% 2.00(6)
+{ editor empty$
+    { "" }
+    { editor format.names
+      editor num.names$ #1 >
+	{ editor is.kanji
+		{"線" * } {", eds." *} if$
+	}
+	{ editor is.kanji
+		{"線" *}  {", ed." *} if$
+	}
+      if$
+    }
+  if$
+}
+
+FUNCTION {format.editors}
+{ editor empty$
+    { "" }
+    { editor format.names
+      editor num.names$ #1 >
+	{ editor is.kanji
+		{"線" * } {"(eds.)" *} if$		% 2.00(7)
+	}
+	{ editor is.kanji
+		{"線" *}  {"(ed.)" *} if$		% 2.00(7)
+	}
+      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 :=
+	}
+      if$
+    }
+  while$
+}
+
+FUNCTION {format.date}
+{ before.year 'output.state :=				% 1.00(1)
+  year empty$
+    { month empty$
+	{ "" }
+	{ "there's a month but no year in " cite$ * warning$
+          ""						% 1.00(5)
+	}
+      if$
+    }
+    { "(" year ")" * * }				% 1.00(5)
+  if$
+}
+
+FUNCTION {format.ref.date}				% 3.00(1)>>
+{ before.year 'output.state :=
+  is.kanji.title
+    { "\refdatej{" refdate "}" * *}
+    { "\refdatee{" refdate "}" * *}
+  if$
+}							% 3.00(1)<<
+
+FUNCTION {tie.or.space.connect}
+{ duplicate$ text.length$ #3 <
+    { "~" }
+    { "\ " }						% 1.00(6)
+  if$
+  swap$ * *
+}
+
+FUNCTION {output.volume}
+{ 
+  volume empty$
+    'skip$
+    { "Vol.~" volume * output}
+  if$
+
+}
+
+FUNCTION {output.number}
+{
+  number empty$
+    'skip$
+    { "No.~" number * output}
+  if$
+}
+
+FUNCTION {output.series.volume.number}
+{ series empty$
+    { output.volume
+      output.number }
+    { series is.kanji
+      volume empty$
+      number empty$
+      or
+      and
+        { series " " * volume * number * output}
+        { series output
+          output.volume
+          output.number}
+      if$
+   }
+ if$
+}
+
+FUNCTION {format.edition}
+{ edition empty$
+    { "" }
+    { output.state mid.sentence =
+	{ edition "l" change.case$ " edition" * }
+	{ edition "t" change.case$ " edition" * }
+      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.online}				% 3.00(1)>>
+{ is.kanji.title
+    { "オンラむン" * }
+    { duplicate$ empty$
+        { "(online)" * }
+        { " (online)" * }
+      if$
+    }
+  if$
+}							% 3.00(1)<<
+
+FUNCTION {format.url}					% 3.00(1)>>
+{ is.kanji.title
+    { "\urlj{" url "}" * * }
+    { "\urle{" url "}" * * }
+  if$
+}							% 3.00(1)<<
+
+FUNCTION {format.pages}					% 1.00(7)
+{ pages empty$
+    { "" }
+    { pages multi.page.check
+	{ "pp." pages n.dashify tie.or.space.connect }
+	{ "p." pages tie.or.space.connect }
+      if$
+    }
+  if$
+}
+
+FUNCTION {format.doi.url}				% 3.00(1)>>
+{ doi empty$
+    { url empty$
+	'skip$
+	{ format.online output.nonnull
+	  format.url
+	}
+	if$
+    }
+    { format.online output.nonnull
+      "\doi{" doi "}" * *
+    }
+  if$							% 3.00(1)<<
+}
+
+FUNCTION {format.pages.output}				% 3.00(1)>>
+{ format.pages
+  format.doi.url output					% 3.00(1)<<
+}
+
+FUNCTION {format.vol.num.pages}				% 1.00(8)
+{ volume empty$
+  { ""}
+  { " Vol.~" volume * }
+  if$ 
+  number empty$
+    'skip$
+    { volume empty$
+	{ "there's a number but no volume in " cite$ * warning$ }
+	{ "," *}
+      if$
+      " No.~" number * *
+    }
+  if$
+  pages empty$
+    'skip$
+    { duplicate$ empty$
+	{ pop$ format.pages }
+	{ ", " * format.pages * }
+      if$
+    }
+  if$
+  format.doi.url					% 3.00(1)
+}
+
+FUNCTION {format.chapter.pages}
+{ chapter empty$
+    'format.pages
+    { type empty$
+	{ "chapter" chapter tie.or.space.connect }
+        { type is.kanji 
+             { chapter type tie.or.space.connect }
+             { type "l" change.case$ chapter tie.or.space.connect }
+          if$
+        }
+      if$
+      pages empty$
+	'skip$
+	{ ", " * format.pages * }
+      if$
+    }
+  if$
+  format.doi.url					% 3.00(1)
+}
+
+FUNCTION {format.in.ed.booktitle}
+{ booktitle empty$
+    { "" }
+    { booktitle emphasize
+      editor empty$
+	'skip$
+	{ booktitle is.kanji
+	    { "" * format.editors.inparen * "" *}	% 2.00(6,7)
+	    { " (" * format.editors.inparen * ")" *}	% 1.00(9), 2.00(6)
+	  if$
+	}
+      if$
+    }
+  if$
+}
+
+FUNCTION {empty.misc.check}
+{ author empty$ title empty$ howpublished empty$
+  month empty$ year empty$ note empty$
+  and and and and and
+  key empty$ not 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$
+    { title empty$
+        { "Technical Report" }
+        { title is.kanji
+            { "技術報告" }
+            { "Technical Report" }
+          if$
+        }
+      if$
+    }
+    {type}
+  if$
+  number empty$
+    { "t" change.case$ }
+    { " " number * * }
+  if$
+}
+
+FUNCTION {format.article.crossref}			% 2.00(8)
+{ key empty$
+    { journal empty$
+	{ "need key or journal for " cite$ * " to crossref " * crossref *
+	  warning$
+	  ""
+	}
+	{ journal emphasize }				% 1.00(10)
+      if$
+    }
+    { "In " key * }
+  if$
+  " \cite{" * crossref * "}" *
+}
+
+FUNCTION {format.crossref.editor}			% 1.00(11)
+{ editor #1
+  editor is.kanji { "{ff}" } { "{vv }{ll}" } if$
+  format.name$
+  editor num.names$ duplicate$
+  #2 >
+    { editor is.kanji
+	  {pop$ "ほか" *} {pop$ " et al." * } if$
+    }
+    { #2 <
+	'skip$
+	{ editor #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
+	    { editor is.kanji
+		{"ほか" *} {" et al." * } if$
+	    }
+	    { editor is.kanji
+		{"・" * editor #2 "{ff}" format.name$ * }
+		{" and " * editor #2 "{vv }{ll}" format.name$ * }
+	      if$
+	    }
+	  if$
+	}
+      if$
+    }
+  if$
+}
+
+FUNCTION {format.book.crossref}				% 2.00(8)
+{ 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 emphasize }			% 1.00(10)
+	  if$
+	}
+	{ "In " key * }
+      if$
+    }
+    { format.crossref.editor }
+  if$
+  " \cite{" * crossref * "}" *
+  volume empty$
+    { "empty volume in " cite$ * "'s crossref of " * crossref * warning$ }
+    { duplicate$ is.kanji { "" } { ", "} if$ *
+      "Vol." * volume tie.or.space.connect
+    }
+  if$
+}
+
+FUNCTION {format.incoll.inproc.crossref}		% 2.00(8)
+{ 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 emphasize }			% 1.00(10)
+	  if$
+	}
+	{ "In " key * }
+      if$
+    }
+    { format.crossref.editor }
+  if$
+  " \cite{" * crossref * "}" *
+}
+
+FUNCTION {article}
+{ 
+%%%%
+  author  "author"  required.argument
+  title   "title"   required.argument
+  journal "journal" required.argument
+  year    "year"    required.argument
+%%%% jssst
+  volume  "volume"  
+  number  "number"  
+     required.and.or.argument
+  pages   "pages"   required.argument
+%%%%
+  output.bibitem 
+  format.authors add.colon				% 2.00(5)
+  title output
+  crossref missing$
+    { journal emphasize output
+      format.vol.num.pages output			% 1.00(12)
+      format.date output
+    }
+    { format.article.crossref output.nonnull
+      format.pages.output				% 3.00(1)
+    }
+  if$
+  new.block
+  note output
+  fin.entry
+}
+
+FUNCTION {book}
+{ 
+%%%%
+  author  "author"
+  editor  "editor"
+    required.exclusive.or.argument
+  title   "title"  required.argument
+  publisher "publisher" required.argument
+  year    "year" required.argument
+  optional.series.volume.number.argument
+%%%%
+  output.bibitem
+  author empty$
+    { format.editors}
+    { format.authors}
+  if$
+  add.colon						% 2.00(5)
+  title emphasize output
+  crossref missing$
+    { output.series.volume.number
+      publisher output
+      address output
+    }
+    { new.block
+      format.book.crossref output.nonnull
+    }
+  if$
+  format.edition output
+  format.date output
+  new.block
+  note output
+  fin.entry
+}
+
+FUNCTION {booklet}
+{
+%%%%
+  title   "title"   required.argument
+%%%% jssst
+  author  "author"  required.argument
+%%%%
+  output.bibitem
+  format.authors add.colon				% 2.00(5)
+  title output
+  howpublished output
+  address output
+  format.date output
+  new.block
+  note output
+  fin.entry
+}
+
+FUNCTION {inbook}
+{ 
+%%%%
+  author  "author"
+  editor  "editor"
+     required.exclusive.or.argument
+  title   "title"  required.argument
+  chapter "chapter"
+  pages   "pages"
+     required.and.or.argument
+  publisher  "publisher" required.argument
+  year       "year"      required.argument
+
+  optional.series.volume.number.argument
+%%%%
+  output.bibitem 
+  author empty$
+    { format.editors}
+    { format.authors}
+  if$
+  add.colon						% 2.00(5)
+  title emphasize output
+  crossref missing$
+    { output.series.volume.number
+      format.chapter.pages output
+      publisher output
+    }
+    { format.chapter.pages output
+      new.block
+      format.book.crossref output.nonnull
+    }
+  if$
+  format.edition output
+  format.date output					% 1.00(13)
+  new.block
+  note output
+  fin.entry
+}
+
+FUNCTION {incollection}
+{
+%%%%
+  author    "author"    required.argument
+  title     "title"     required.argument
+  booktitle "booktitle" required.argument
+  publisher "publisher" required.argument
+  year      "year"      required.argument
+
+  optional.series.volume.number.argument
+%%%%
+  output.bibitem
+  format.authors add.colon				% 2.00(5)
+  title output
+  crossref missing$
+    { format.in.ed.booktitle output
+      output.series.volume.number
+      publisher output
+      address output
+      format.edition output
+      format.chapter.pages output			% 1.00(13)
+      format.date output
+    }
+    { format.incoll.inproc.crossref output.nonnull
+      format.chapter.pages output
+    }
+  if$
+  new.block
+  note output
+  fin.entry
+}
+
+FUNCTION {inproceedings}
+{
+%%%%
+  author    "author"    required.argument
+  title     "title"     required.argument
+  year      "year"      required.argument
+
+  optional.series.volume.number.argument
+%%%%
+  output.bibitem 
+  format.authors add.colon				% 2.00(5)
+  title output
+  crossref missing$
+    { format.in.ed.booktitle output
+      booktitle "booktitle" required.argument
+      output.series.volume.number
+      address output
+      organization output
+      publisher output
+      format.pages.output				% 3.00(1)
+      format.date output				% 1.00(13)
+    }
+    { format.incoll.inproc.crossref output.nonnull
+      format.pages.output				% 3.00(1)
+    }
+  if$
+  new.block
+  note output
+  fin.entry
+}
+
+FUNCTION {conference} { inproceedings }
+
+FUNCTION {manual}
+{	
+%%%%
+  title   "title"    required.argument
+%%%% jssst
+  author   "author"
+  organization "organazaion"
+     required.exclusive.or.argument
+%%%%
+  output.bibitem
+  author empty$
+    { organization}
+    { format.authors}
+  if$
+  add.colon						% 2.00(5)
+  title emphasize output
+  author empty$
+    'skip$
+    { organization output }
+  if$
+  address output
+  format.edition output
+  format.date output
+  new.block
+  note output
+  fin.entry
+}
+
+FUNCTION {mastersthesis}
+{
+%%%%
+  author   "author"  required.argument
+  title    "title"   required.argument
+  school   "school"  required.argument
+  year     "year"    required.argument
+%%%%
+  output.bibitem
+  format.authors add.colon				% 2.00(5)
+  title output
+  author empty$
+    { "Master's thesis" }
+    { author is.kanji
+        { "修士論文" }  
+        { "Master's thesis" }
+      if$
+    }
+  if$
+  format.thesis.type output.nonnull
+  school output
+  address output
+  format.date output
+  new.block
+  note output
+  fin.entry
+}
+
+FUNCTION {misc}
+{
+%%%%
+%%%% jssst
+  author "author" required.argument
+  title  "title"  required.argument
+%%%%
+  output.bibitem
+  format.authors add.colon				% 2.00(5)
+  title output
+  howpublished output
+  format.date output
+  new.block
+  note output
+  fin.entry
+  empty.misc.check
+}
+
+FUNCTION {phdthesis}
+{
+%%%%
+  author   "author"  required.argument
+  title    "title"   required.argument
+  school   "school"  required.argument
+  year     "year"    required.argument
+%%%%
+  output.bibitem 
+  format.authors add.colon				% 2.00(5)
+  title output						% 2.00(9)
+  author empty$
+    { "PhD Thesis" }
+    { author is.kanji
+        { "博士論文" }
+        { "PhD Thesis" }
+      if$
+    }
+  if$
+  format.thesis.type output.nonnull
+  school output
+  address output
+  format.date output
+  new.block
+  note output
+  fin.entry
+}
+
+FUNCTION {proceedings}
+{
+%%%%
+  title  "title"  required.argument
+  year   "year"   required.argument
+
+  optional.series.volume.number.argument
+%%%% jssst
+  editor  "editor"
+  organization "organization"
+      required.exclusive.or.argument 
+%%%%
+  output.bibitem 
+  editor empty$
+    { organization }
+    { format.editors }
+  if$
+  add.colon						% 2.00(5)
+  title emphasize output
+  output.series.volume.number
+  address output
+  editor empty$
+    'skip$
+    { organization output }
+  if$
+  publisher output
+  format.date output
+  new.block
+  note output
+  fin.entry
+}
+
+FUNCTION {techreport}
+{
+%%%%
+  author   "author"   required.argument
+  title    "title"    required.argument
+  institution "institution" required.argument
+  year     "year"     required.argument
+%%%%
+  output.bibitem
+  format.authors add.colon				% 2.00(5)
+  title output
+  format.tr.number output.nonnull
+  institution output
+  address output
+  format.date output
+  new.block
+  note output
+  fin.entry
+}
+
+FUNCTION {unpublished}
+{
+%%%%
+  author   "author"   required.argument
+  title    "title"    required.argument
+  note     "note"     required.argument
+%%%%
+  output.bibitem
+  format.authors add.colon				% 2.00(5)
+  title output
+  format.date output
+  new.block
+  note output
+  fin.entry
+}
+
+FUNCTION {webpage}					% 3.00(1)>>
+{
+%%%%
+  author       "author"       required.argument
+  title        "title"        required.argument
+  url          "url"          required.argument
+  refdate      "refdate"      required.argument
+%%%%
+  output.bibitem
+  format.authors add.colon
+  title output
+  organization format.doi.url output
+  format.ref.date output
+  new.block
+  note output
+  fin.entry
+}							% 3.00(1)<<
+
+FUNCTION {default.type} { misc }
+
+MACRO {jan} {"January"}
+
+MACRO {feb} {"February"}
+
+MACRO {mar} {"March"}
+
+MACRO {apr} {"April"}
+
+MACRO {may} {"May"}
+
+MACRO {jun} {"June"}
+
+MACRO {jul} {"July"}
+
+MACRO {aug} {"August"}
+
+MACRO {sep} {"September"}
+
+MACRO {oct} {"October"}
+
+MACRO {nov} {"November"}
+
+MACRO {dec} {"December"}
+
+MACRO {acmcs} {"ACM Computing Surveys"}
+
+MACRO {acta} {"Acta Informatica"}
+
+MACRO {cacm} {"Communications of the ACM"}
+
+MACRO {ibmjrd} {"IBM Journal of Research and Development"}
+
+MACRO {ibmsj} {"IBM Systems Journal"}
+
+MACRO {ieeese} {"IEEE Transactions on Software Engineering"}
+
+MACRO {ieeetc} {"IEEE Transactions on Computers"}
+
+MACRO {ieeetcad}
+ {"IEEE Transactions on Computer-Aided Design of Integrated Circuits"}
+
+MACRO {ipl} {"Information Processing Letters"}
+
+MACRO {jacm} {"Journal of the ACM"}
+
+MACRO {jcss} {"Journal of Computer and System Sciences"}
+
+MACRO {scp} {"Science of Computer Programming"}
+
+MACRO {sicomp} {"SIAM Journal on Computing"}
+
+MACRO {tocs} {"ACM Transactions on Computer Systems"}
+
+MACRO {tods} {"ACM Transactions on Database Systems"}
+
+MACRO {tog} {"ACM Transactions on Graphics"}
+
+MACRO {toms} {"ACM Transactions on Mathematical Software"}
+
+MACRO {toois} {"ACM Transactions on Office Information Systems"}
+
+MACRO {toplas} {"ACM Transactions on Programming Languages and Systems"}
+
+MACRO {tcs} {"Theoretical Computer Science"}
+
+READ
+
+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/Paper/jlisting.sty	Sun Apr 24 23:13:44 2022 +0900
@@ -0,0 +1,216 @@
+\NeedsTeXFormat{LaTeX2e}
+\def\filedate{2006/02/20}
+\def\fileversion{0.2}
+\ProvidesPackage{jlisting}[\filedate\space\fileversion\space(Thor)]
+%
+\newcount\lst@nextchar
+\let\lst@@ProcessSpace\lst@ProcessSpace
+\def\lst@ProcessSpace#1{%
+   \lst@check@chartype{#1}%
+      \lst@@ProcessSpace
+      \lst@whitespacetrue}
+\let\lst@@ProcessLetter\lst@ProcessLetter
+\def\lst@ProcessLetter#1#2{%
+   \lst@check@chartype{#2}%
+      {\lst@@ProcessLetter{#1}}%
+      \relax}
+\let\lst@@ProcessDigit\lst@ProcessDigit
+\def\lst@ProcessDigit#1#2{%
+   \lst@check@chartype{#2}%
+      {\lst@@ProcessDigit{#1}}%
+      \relax}
+\let\lst@@ProcessOther\lst@ProcessOther
+\def\lst@ProcessOther#1#2{%
+   \lst@check@chartype{#2}%
+      {\lst@@ProcessOther{#1}}%
+      \relax}
+\let\lst@@ProcessTabulator\lst@ProcessTabulator
+\def\lst@ProcessTabulator#1{%
+   \lst@check@chartype{#1}%
+      \lst@@ProcessTabulator
+      \relax}
+\def\lst@check@chartype#1#2#3{%
+   \edef\@tempa{\lst@nextchar=`\string#1\relax}%
+   \afterassignment\remove@to@nnil
+   \@tempa\@nnil
+   #2%
+   \ifnum\lst@nextchar<\@cclvi
+      #3%
+   \else
+      \lst@ifletter \else \lst@OutputOther \fi
+      \lst@whitespacefalse
+      \expandafter\lst@AppendJchar
+   \fi
+   #1}
+\def\lst@AppendJchar#1#2{%
+   \lst@check@chartype{#2}%
+      {\advance\lst@length\@ne\lst@Append{#1}}%
+      \relax}
+\def\lst@check@chartype@BOL#1{%
+   \edef\@tempa{\lst@nextchar=`\string#1\relax}%
+   \afterassignment\remove@to@nnil
+   \@tempa\@nnil
+   \ifnum\lst@nextchar<\@cclvi\else
+      \lst@whitespacefalse
+      \expandafter\lst@AppendJchar
+   \fi
+   #1}
+\def\lst@InputListing#1{%
+   \begingroup
+      \lsthk@PreSet \gdef\lst@intname{#1}%
+      \expandafter\lstset\expandafter{\lst@set}%
+      \lsthk@DisplayStyle
+      \catcode\active=\active
+      \lst@Init\relax \let\lst@gobble\z@
+      \lst@SkipToFirst
+      \lst@ifprint \def\lst@next{\lst@get@filecontents{#1}}%
+      \else        \let\lst@next\@empty
+      \fi
+      \lst@next
+      \lst@DeInit
+   \endgroup}
+\newread\lst@inputfile
+\def\lst@get@filecontents#1{%
+   \let\lst@filecontents\@empty
+   \openin\lst@inputfile=#1\relax
+   \let\@lst@get@filecontents@prevline\relax
+   \lst@get@filecontents@loop
+   \closein\lst@inputfile
+   \lst@filecontents\empty}
+\def\lst@get@filecontents@loop{%
+   \read\lst@inputfile to\@lst@get@filecontents@currline
+   \ifx\@lst@get@filecontents@prevline\relax\else
+      \expandafter\expandafter\expandafter\def
+      \expandafter\expandafter\expandafter\lst@filecontents
+      \expandafter\expandafter\expandafter{%
+         \expandafter\lst@filecontents\@lst@get@filecontents@prevline}%
+   \fi
+   \let\@lst@get@filecontents@prevline\@lst@get@filecontents@currline
+   \ifeof\lst@inputfile\else
+      \expandafter\lst@get@filecontents@loop
+   \fi}
+%%% [$B$3$N=hM}$b!$AjEv6/0z$G$9!%(B]
+\def\lst@BOLGobble{%
+   \ifnum\lst@gobble>\z@
+      \@tempcnta\lst@gobble\relax
+      \expandafter\lst@BOLGobble@
+   \else
+      \expandafter\lst@check@chartype@BOL
+   \fi}
+\def\lst@BOLGobble@#1{%
+   \let\lst@next#1%
+   \ifx \lst@next\relax\else
+   \ifx \lst@next\lst@MProcessListing\else
+   \ifx \lst@next\lst@ProcessFormFeed\else
+   \ifx \lst@next\lstenv@backslash
+      \let\lst@next\lstenv@BOLGobble@@
+   \else
+      \let\lst@next\lst@BOLGobble@@
+      \ifx #1\lst@ProcessTabulator
+         \advance\@tempcnta-\lst@tabsize\relax
+         \ifnum\@tempcnta<\z@
+            \lst@length-\@tempcnta \lst@PreGotoTabStop
+         \fi
+      \else
+         \edef\@tempa{\lst@nextchar=`\string#1\relax}%
+         \@tempa
+         \ifnum\lst@nextchar<\@cclvi\else
+            \advance\@tempcnta\m@ne
+         \fi
+         \advance\@tempcnta\m@ne
+      \fi
+   \fi \fi \fi \fi
+   \lst@next}
+\def\lst@BOLGobble@@{%
+   \ifnum\@tempcnta>\z@
+      \expandafter\lst@BOLGobble@
+   \else
+      \expandafter\lst@check@chartype@BOL
+   \fi
+}
+%
+%    \begin{$B=$@5;v9`(B}{1.3}
+% $B$A$g$C$H$7$?=$@5(B
+\gdef\lst@breakProcessOther#1{\lst@ProcessOther#1}
+% $B%=!<%9%3!<%IL\<!$K$*$1$kJ8;z$HHV9f$N6u$-(B
+\let \l@lstlisting = \l@figure
+% $B%-%c%W%7%g%s$H%=!<%9%3!<%IL\<!$KBP$9$kF|K\8lBP1~(B
+\def\lstlistingname{$B%=!<%9%3!<%I(B}
+\def\lstlistlistingname{$B%=!<%9%3!<%IL\<!(B}
+%    \end{$B=$@5;v9`(B}
+\endinput
+% 
+%#!platex
+\documentclass[papersize]{jsarticle}
+% Macros
+\IfFileExists{dvipdfmx.def}{%
+  \usepackage[dvipdfmx]{color,graphicx}%
+}{%
+  \usepackage[dvipdfm]{color,graphicx}%
+}
+\usepackage{listings}[2004/09/07]
+\usepackage{jlisting}[2006/02/20]
+\usepackage{url} 
+\usepackage{verbatim}
+
+\makeatletter
+% Original Macros
+\def\email#1{\gdef\@email{\texttt{#1}}}
+\def\homepage#1{\gdef\@homepage{\texttt{#1}}}
+\def\mac#1{\textsf{#1}}
+\def\URL#1{\texttt{#1}}
+\def\src#1{\texttt{#1}}
+
+% Dvipdfmx.def 
+\def\dvipdfmxDefi{http://tex.dante.jp/ok/dvipdfmx/}
+\def\dvipdfmxDefii{http://ftp.ktug.or.kr/KTUG/dvipdfmx/contrib/latex/}
+
+\IfFileExists{dvipdfmx.def}{%
+   \let \IfDvipdfmxDef = \empty \relax}{%
+   \typeout{^^Jget dvipdfmx.def at \dvipdfmxDefi^^J
+            or \dvipdfmxDefii^^J}%
+   \def\IfDvipdfmxDef{Get \src{dvipdfmx.def} at \URL \dvipdfmxDefii \\ 
+      or \URL \dvipdfmxDefi.}%
+}
+
+% Author Info
+\author   {Th\'or Watanabe\thanks \@email \space \thanks \@homepage}
+\title    {\mac{jlisting.sty}\\
+          ---Japanese Localized Patch File of \mac{listings}---}
+\email    {thor@tex.dante.jp}
+\homepage {http://tex.dante.jp/typo/}
+\date     {2006/02/20}
+
+\makeatother
+
+\begin{document}
+\maketitle
+%\IfDvipdfmxDef
+
+\section{$B$A$g$C$H$7$?@bL@(B}% Short Description
+ 
+$B1|B<@2I';a$N7G<(HD$N!VHFMQE*$JIbF0BN!W$H$$$&0lO"$N=q$-9~$_$+$i(B
+$BE>:\$7$^$7$?!#(B
+
+\begin{quote}
+ \url{http://http://cise.edu.mie-u.ac.jp/~okumura/texfaq/qa/21172.html}\\
+ \url{http://http://cise.edu.mie-u.ac.jp/~okumura/texfaq/qa/21184.html}\\
+ \url{http://http://cise.edu.mie-u.ac.jp/~okumura/texfaq/qa/21189.html}\\
+ \url{http://http://cise.edu.mie-u.ac.jp/~okumura/texfaq/qa/21197.html}
+\end{quote}
+
+ Copyright $B$O5H1JE/H~;a$K$"$k$N$@$H;W$$$^$9!%(B
+ 
+\section{$B99?7MzNr(B}% ChageLogs
+
+\begin{description}
+ \item[ver.~0.1 (2004/03/24)]
+   $B$H$j$"$($:8x3+!%(B
+ \item[ver.~0.2 (2006/02/20)] 
+   \verb|\lst@breakProcessOther| $BL?Na$NDj5A$NDI2C!%(B
+\end{description}
+
+\section{$B%=!<%9%3!<%I(B}
+\par\narrowbaselines
+\verbatiminput{jlisting.sty}
+\end{document}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Paper/reference.bib	Sun Apr 24 23:13:44 2022 +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 Paper/soto-sigos.dvi has changed
Binary file Paper/soto-sigos.pdf has changed
Binary file Paper/soto-sigos.synctex.gz has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Paper/soto-sigos.tex	Sun Apr 24 23:13:44 2022 +0900
@@ -0,0 +1,87 @@
+% english: 英語原皿甚フォヌマット
+\AtBeginDvi{\special{pdf:mapfile ptex-ipa.map}}
+\documentclass[submit,techrep,noauthor]{ipsj}
+%\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}
+%\documentclass[withpage, english]{ipsjprosym}
+%\usepackage{comment}
+\usepackage{here}
+\lstset{
+  language=C, 
+  tabsize=2, 
+  frame=single, 
+  basicstyle={\tt\footnotesize}, % 
+  identifierstyle={\footnotesize}, % 
+  commentstyle={\footnotesize\itshape}, % 
+  keywordstyle={\footnotesize\ttfamily}, % 
+  ndkeywordstyle={\footnotesize\ttfamily}, % 
+  stringstyle={\footnotesize\ttfamily}, 
+  breaklines=true, 
+  captionpos=b, 
+  columns=[l]{fullflexible}, % 
+  xrightmargin=0zw, % 
+  xleftmargin=1zw, % 
+  aboveskip=1zw, 
+  numberstyle={\scriptsize}, % 
+  stepnumber=1, 
+  numbersep=0.5zw, % 
+  lineskip=-0.5ex, 
+  escapechar=\!,
+}
+\usepackage{caption}
+\newcommand\newblock{\hskip .11em\@plus.33em\@minus.07em}
+\captionsetup[lstlisting]{font={small, tt}}
+
+\begin{document}
+
+% Title,  Author %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\title{GearsAgda䞊のモデル怜査の圢匏化}
+
+%\affiliate{IPSJ}{情報凊理孊䌚}
+\affiliate{IIRYUKYU}{琉球倧孊倧孊院理工孊研究科工孊専攻知胜情報プログラム}
+\affiliate{IERYUKYU}{琉球倧孊倧孊工孊郚工孊科知胜情報コヌス}
+
+\author{䞊地 悠斗}{Yuto UECHI}{IIRYUKYU}[soto@cr.ie.u-ryukyu.ac.jp]
+\author{河野 真治}{Shinji KONO}{IERYUKYU}[kono@ie.u-ryukyu.ac.jp]
+
+%抂芁
+\begin{abstract}
+  圓研究宀では Continuation based C (CbC) ずいう蚀語を甚いお、拡匵性ず信頌性を䞡立するOSであるGearsOSを開発しおいる。
+  CbC ずは、 C蚀語から通垞の関数呌び出しではなく、アセンブラでいうjmp呜什により関数を遷移する継続を導入した C 蚀語の䞋䜍蚀語である。
+  すでにGearsOSはメタ蚈算によるモデル怜査機構を持っおいる。
+  GearsOSのCodeGear/DataGearはGearsAgdaにより圢匏蚌明に向いた圢に蚘述するこずができる。
+  モデル怜査機構をGearsAgdaにより蚘述するこずでHoare Logic的な逐次実行型のプログラムの蚌明だけでなく、䞊行実行を含むプログラムの蚌明が可胜になる。
+\end{abstract}
+
+\maketitle
+
+% Body %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\input{tex/intro.tex} % はじめに
+\input{tex/cbc.tex} % cbc の説明
+\input{tex/agda.tex} % agda の説明
+\input{tex/cbc_agda.tex}% cbc ず agda(gearsagda)
+
+% たずめ
+
+\nocite{*}
+\bibliographystyle{ipsjsort}
+\bibliography{reference}
+
+\end{document}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Paper/src/AgdaBasics.agda	Sun Apr 24 23:13:44 2022 +0900
@@ -0,0 +1,1 @@
+module AgdaBasics where
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Paper/src/AgdaBasics.agda.replaced	Sun Apr 24 23:13:44 2022 +0900
@@ -0,0 +1,1 @@
+module AgdaBasics where
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Paper/src/AgdaBool.agda	Sun Apr 24 23:13:44 2022 +0900
@@ -0,0 +1,3 @@
+data Bool : Set where
+  true  : Bool
+  false : Bool
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Paper/src/AgdaBool.agda.replaced	Sun Apr 24 23:13:44 2022 +0900
@@ -0,0 +1,3 @@
+data Bool : Set where
+  true  : Bool
+  false : Bool
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Paper/src/AgdaDebug.agda	Sun Apr 24 23:13:44 2022 +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/Paper/src/AgdaDebug.agda.replaced	Sun Apr 24 23:13:44 2022 +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/Paper/src/AgdaElem.agda	Sun Apr 24 23:13:44 2022 +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/Paper/src/AgdaElem.agda.replaced	Sun Apr 24 23:13:44 2022 +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/Paper/src/AgdaElemApply.agda	Sun Apr 24 23:13:44 2022 +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/Paper/src/AgdaElemApply.agda.replaced	Sun Apr 24 23:13:44 2022 +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/Paper/src/AgdaFunction.agda	Sun Apr 24 23:13:44 2022 +0900
@@ -0,0 +1,2 @@
+f : Bool -> Bool
+f x = true
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Paper/src/AgdaFunction.agda.replaced	Sun Apr 24 23:13:44 2022 +0900
@@ -0,0 +1,2 @@
+f : Bool !$\rightarrow$! Bool
+f x = true
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Paper/src/AgdaId.agda	Sun Apr 24 23:13:44 2022 +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/Paper/src/AgdaId.agda.replaced	Sun Apr 24 23:13:44 2022 +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/Paper/src/AgdaImplicitId.agda	Sun Apr 24 23:13:44 2022 +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/Paper/src/AgdaImplicitId.agda.replaced	Sun Apr 24 23:13:44 2022 +0900
@@ -0,0 +1,11 @@
+id : {A : Set} !$\rightarrow$! A !$\rightarrow$! A
+id x = x
+
+id-zero : Nat
+id-zero = id zero
+
+id!$\prime$! : {A : Set} !$\rightarrow$! A !$\rightarrow$! A
+id!$\prime$! {A} x = x
+
+id-true : Bool
+id-true = id {Bool} true
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Paper/src/AgdaImport.agda	Sun Apr 24 23:13:44 2022 +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/Paper/src/AgdaImport.agda.replaced	Sun Apr 24 23:13:44 2022 +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/Paper/src/AgdaInstance.agda	Sun Apr 24 23:13:44 2022 +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/Paper/src/AgdaInstance.agda.replaced	Sun Apr 24 23:13:44 2022 +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/Paper/src/AgdaInterface.agda	Sun Apr 24 23:13:44 2022 +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/Paper/src/AgdaInterface.agda.replaced	Sun Apr 24 23:13:44 2022 +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/Paper/src/AgdaLambda.agda	Sun Apr 24 23:13:44 2022 +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/Paper/src/AgdaLambda.agda.replaced	Sun Apr 24 23:13:44 2022 +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/Paper/src/AgdaModusPonens.agda	Sun Apr 24 23:13:44 2022 +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/Paper/src/AgdaModusPonens.agda.replaced	Sun Apr 24 23:13:44 2022 +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/Paper/src/AgdaNPushNPop.agda	Sun Apr 24 23:13:44 2022 +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/Paper/src/AgdaNPushNPop.agda.replaced	Sun Apr 24 23:13:44 2022 +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/Paper/src/AgdaNPushNPopProof.agda	Sun Apr 24 23:13:44 2022 +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/Paper/src/AgdaNPushNPopProof.agda.replaced	Sun Apr 24 23:13:44 2022 +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/Paper/src/AgdaNat.agda	Sun Apr 24 23:13:44 2022 +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/Paper/src/AgdaNat.agda.replaced	Sun Apr 24 23:13:44 2022 +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/Paper/src/AgdaNot.agda	Sun Apr 24 23:13:44 2022 +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/Paper/src/AgdaNot.agda.replaced	Sun Apr 24 23:13:44 2022 +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/Paper/src/AgdaParameterizedModule.agda	Sun Apr 24 23:13:44 2022 +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/Paper/src/AgdaParameterizedModule.agda.replaced	Sun Apr 24 23:13:44 2022 +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/Paper/src/AgdaPattern.agda	Sun Apr 24 23:13:44 2022 +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/Paper/src/AgdaPattern.agda.replaced	Sun Apr 24 23:13:44 2022 +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/Paper/src/AgdaPlus.agda	Sun Apr 24 23:13:44 2022 +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/Paper/src/AgdaPlus.agda.replaced	Sun Apr 24 23:13:44 2022 +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/Paper/src/AgdaProduct.agda	Sun Apr 24 23:13:44 2022 +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/Paper/src/AgdaProduct.agda.replaced	Sun Apr 24 23:13:44 2022 +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/Paper/src/AgdaProp.agda	Sun Apr 24 23:13:44 2022 +0900
@@ -0,0 +1,2 @@
+prop : Bool
+prop = true
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Paper/src/AgdaProp.agda.replaced	Sun Apr 24 23:13:44 2022 +0900
@@ -0,0 +1,2 @@
+prop : Bool
+prop = true
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Paper/src/AgdaPushPop.agda	Sun Apr 24 23:13:44 2022 +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/Paper/src/AgdaPushPop.agda.replaced	Sun Apr 24 23:13:44 2022 +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/Paper/src/AgdaPushPopProof.agda	Sun Apr 24 23:13:44 2022 +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/Paper/src/AgdaPushPopProof.agda.replaced	Sun Apr 24 23:13:44 2022 +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/Paper/src/AgdaRecord.agda	Sun Apr 24 23:13:44 2022 +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/Paper/src/AgdaRecord.agda.replaced	Sun Apr 24 23:13:44 2022 +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/Paper/src/AgdaRecordProj.agda	Sun Apr 24 23:13:44 2022 +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/Paper/src/AgdaRecordProj.agda.replaced	Sun Apr 24 23:13:44 2022 +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/Paper/src/AgdaSingleLinkedStack.agda	Sun Apr 24 23:13:44 2022 +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/Paper/src/AgdaSingleLinkedStack.agda.replaced	Sun Apr 24 23:13:44 2022 +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!$\prime$! {n} {m} stack cs
+  where
+    pop2SingleLinkedStack!$\prime$! : {n m : Level } {t : Set m }  !$\rightarrow$! SingleLinkedStack a !$\rightarrow$! (Code : SingleLinkedStack a !$\rightarrow$! (Maybe a) !$\rightarrow$! (Maybe a) !$\rightarrow$! t) !$\rightarrow$! t
+    pop2SingleLinkedStack!$\prime$! 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!$\prime$! {n} {m} stack cs
+  where
+    get2SingleLinkedStack!$\prime$! : {n m : Level} {t : Set m } !$\rightarrow$! SingleLinkedStack a !$\rightarrow$! (Code : SingleLinkedStack a !$\rightarrow$! (Maybe a) !$\rightarrow$! (Maybe a) !$\rightarrow$! t) !$\rightarrow$! t
+    get2SingleLinkedStack!$\prime$! 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/Paper/src/AgdaStack.agda	Sun Apr 24 23:13:44 2022 +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/Paper/src/AgdaStack.agda.replaced	Sun Apr 24 23:13:44 2022 +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/Paper/src/AgdaStackDS.agda	Sun Apr 24 23:13:44 2022 +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/Paper/src/AgdaStackDS.agda.replaced	Sun Apr 24 23:13:44 2022 +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/Paper/src/AgdaStackImpl.agda	Sun Apr 24 23:13:44 2022 +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/Paper/src/AgdaStackImpl.agda.replaced	Sun Apr 24 23:13:44 2022 +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/Paper/src/AgdaStackSomeState.agda	Sun Apr 24 23:13:44 2022 +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/Paper/src/AgdaStackSomeState.agda.replaced	Sun Apr 24 23:13:44 2022 +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/Paper/src/AgdaStackTest.agda	Sun Apr 24 23:13:44 2022 +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/Paper/src/AgdaStackTest.agda.replaced	Sun Apr 24 23:13:44 2022 +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/Paper/src/AgdaTree.agda	Sun Apr 24 23:13:44 2022 +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/Paper/src/AgdaTree.agda.replaced	Sun Apr 24 23:13:44 2022 +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/Paper/src/AgdaTreeDebug.agda	Sun Apr 24 23:13:44 2022 +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/Paper/src/AgdaTreeDebug.agda.replaced	Sun Apr 24 23:13:44 2022 +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/Paper/src/AgdaTreeDebugReturnNode4.agda	Sun Apr 24 23:13:44 2022 +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/Paper/src/AgdaTreeDebugReturnNode4.agda.replaced	Sun Apr 24 23:13:44 2022 +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/Paper/src/AgdaTreeImpl.agda	Sun Apr 24 23:13:44 2022 +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/Paper/src/AgdaTreeImpl.agda.replaced	Sun Apr 24 23:13:44 2022 +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/Paper/src/AgdaTreeProof.agda	Sun Apr 24 23:13:44 2022 +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/Paper/src/AgdaTreeProof.agda.replaced	Sun Apr 24 23:13:44 2022 +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/Paper/src/AgdaTreeTest.agda	Sun Apr 24 23:13:44 2022 +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/Paper/src/AgdaTreeTest.agda.replaced	Sun Apr 24 23:13:44 2022 +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/Paper/src/AgdaTypeClass.agda	Sun Apr 24 23:13:44 2022 +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/Paper/src/AgdaTypeClass.agda.replaced	Sun Apr 24 23:13:44 2022 +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/Paper/src/AgdaWhere.agda	Sun Apr 24 23:13:44 2022 +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/Paper/src/AgdaWhere.agda.replaced	Sun Apr 24 23:13:44 2022 +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!$\prime$! : Int !$\rightarrow$! Int !$\rightarrow$! Int
+f!$\prime$! a b c = (a + a + a) + (b + b + b) + (c + c + c)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Paper/src/CodeSegment.agda	Sun Apr 24 23:13:44 2022 +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/Paper/src/CodeSegment.agda.replaced	Sun Apr 24 23:13:44 2022 +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/Paper/src/CodeSegments.agda	Sun Apr 24 23:13:44 2022 +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/Paper/src/CodeSegments.agda.replaced	Sun Apr 24 23:13:44 2022 +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/Paper/src/DataSegment.agda	Sun Apr 24 23:13:44 2022 +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/Paper/src/DataSegment.agda.replaced	Sun Apr 24 23:13:44 2022 +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/Paper/src/Equiv.agda	Sun Apr 24 23:13:44 2022 +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/Paper/src/Equiv.agda.replaced	Sun Apr 24 23:13:44 2022 +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/Paper/src/Exec.agda	Sun Apr 24 23:13:44 2022 +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/Paper/src/Exec.agda.replaced	Sun Apr 24 23:13:44 2022 +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/Paper/src/Goto.agda	Sun Apr 24 23:13:44 2022 +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/Paper/src/Goto.agda.replaced	Sun Apr 24 23:13:44 2022 +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/Paper/src/Maybe.agda	Sun Apr 24 23:13:44 2022 +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/Paper/src/Maybe.agda.replaced	Sun Apr 24 23:13:44 2022 +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/Paper/src/MetaCodeSegment.agda	Sun Apr 24 23:13:44 2022 +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/Paper/src/MetaCodeSegment.agda.replaced	Sun Apr 24 23:13:44 2022 +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/Paper/src/MetaDataSegment.agda	Sun Apr 24 23:13:44 2022 +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/Paper/src/MetaDataSegment.agda.replaced	Sun Apr 24 23:13:44 2022 +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/Paper/src/MetaMetaCodeSegment.agda	Sun Apr 24 23:13:44 2022 +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/Paper/src/MetaMetaCodeSegment.agda.replaced	Sun Apr 24 23:13:44 2022 +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!$\prime$! = 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!$\prime$! = 0 ; next = (N.cs id)})
+-- record {context = record {a = 100 ; b = 50 ; c = 150} ; c!$\prime$! = 70 ; next = (N.cs id)}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Paper/src/MetaMetaDataSegment.agda	Sun Apr 24 23:13:44 2022 +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/Paper/src/MetaMetaDataSegment.agda.replaced	Sun Apr 24 23:13:44 2022 +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!$\prime$!      : Int
+    next    : N.CodeSegment Context Context
+
+open import subtype Meta as M
+-- 以䞋よりメタメタレベルのプログラムを蚘述できる
Binary file Paper/src/Nat.agdai has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Paper/src/NatAdd.agda	Sun Apr 24 23:13:44 2022 +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/Paper/src/NatAdd.agda.replaced	Sun Apr 24 23:13:44 2022 +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/Paper/src/NatAddSym.agda	Sun Apr 24 23:13:44 2022 +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/Paper/src/NatAddSym.agda.replaced	Sun Apr 24 23:13:44 2022 +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/Paper/src/PushPopType.agda	Sun Apr 24 23:13:44 2022 +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/Paper/src/PushPopType.agda.replaced	Sun Apr 24 23:13:44 2022 +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/Paper/src/Reasoning.agda	Sun Apr 24 23:13:44 2022 +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/Paper/src/Reasoning.agda.replaced	Sun Apr 24 23:13:44 2022 +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/Paper/src/RedBlackTree.agda	Sun Apr 24 23:13:44 2022 +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/Paper/src/RedBlackTree.agda.replaced	Sun Apr 24 23:13:44 2022 +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/Paper/src/SingleLinkedStack.cbc	Sun Apr 24 23:13:44 2022 +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/Paper/src/Stack.cbc	Sun Apr 24 23:13:44 2022 +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/Paper/src/ThreePlusOne.agda	Sun Apr 24 23:13:44 2022 +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/Paper/src/ThreePlusOne.agda.replaced	Sun Apr 24 23:13:44 2022 +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/Paper/src/agda-func.agda	Sun Apr 24 23:13:44 2022 +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/Paper/src/agda-func.agda.replaced	Sun Apr 24 23:13:44 2022 +0900
@@ -0,0 +1,5 @@
++1 : !$\mathbb{N}$! !$\rightarrow$! !$\mathbb{N}$!
++1 m = suc m
+
+-- eval +1 zero
+-- return suc zero
Binary file Paper/src/agda-func.agdai has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Paper/src/agda-hoare-interpret.agda	Sun Apr 24 23:13:44 2022 +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/Paper/src/agda-hoare-interpret.agda.replaced	Sun Apr 24 23:13:44 2022 +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/Paper/src/agda-hoare-prog.agda	Sun Apr 24 23:13:44 2022 +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/Paper/src/agda-hoare-prog.agda.replaced	Sun Apr 24 23:13:44 2022 +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/Paper/src/agda-hoare-rule.agda	Sun Apr 24 23:13:44 2022 +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/Paper/src/agda-hoare-rule.agda.replaced	Sun Apr 24 23:13:44 2022 +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!$\prime$! : Cond} !$\rightarrow$! {cm : Comm} !$\rightarrow$!
+                {bPost!$\prime$! : Cond} !$\rightarrow$! {bPost : Cond} !$\rightarrow$!
+                Tautology bPre bPre!$\prime$! !$\rightarrow$!
+                HTProof bPre!$\prime$! cm bPost!$\prime$! !$\rightarrow$!
+                Tautology bPost!$\prime$! 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/Paper/src/agda-hoare-satisfies.agda	Sun Apr 24 23:13:44 2022 +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/Paper/src/agda-hoare-satisfies.agda.replaced	Sun Apr 24 23:13:44 2022 +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/Paper/src/agda-hoare-soundness.agda	Sun Apr 24 23:13:44 2022 +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/Paper/src/agda-hoare-soundness.agda.replaced	Sun Apr 24 23:13:44 2022 +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!$\prime$!} {cm} {bPost!$\prime$!} {bPost} tautPre pr tautPost)
+          s1 s2 q1 q2
+  = let hyp : Satisfies bPre!$\prime$! cm bPost!$\prime$!
+        hyp = Soundness pr
+    in tautValid bPost!$\prime$! bPost tautPost s2 (hyp s1 s2 (tautValid bPre bPre!$\prime$! 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!$\prime$!} {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!$\prime$! 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!$\prime$!))
+      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!$\prime$! (proj!$\_{1}$! h) ss2)
+              t22 = proj!$\_{2}$! (RelOpState.deltaRestPre (SemCond b) (SemComm cm!$\prime$!) (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/Paper/src/agda-hoare-term.agda	Sun Apr 24 23:13:44 2022 +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/Paper/src/agda-hoare-term.agda.replaced	Sun Apr 24 23:13:44 2022 +0900
@@ -0,0 +1,12 @@
+loopP!$\prime$! : {l : Level} {t : Set l} !$\rightarrow$! Envc !$\rightarrow$! (exit : Envc !$\rightarrow$! t) !$\rightarrow$! t
+loopP!$\prime$! record { c10 = c10 ; varn = zero ; vari = vari } exit =
+  exit (record { c10 = c10 ; varn = zero ; vari = vari })
+loopP!$\prime$! record { c10 = c10 ; varn = (suc varn!$\_{1}$!) ; vari = vari } exit =
+  whileLoopP!$\prime$! (record { c10 = c10 ; varn = (suc varn!$\_{1}$!) ; vari = vari })
+  (!$\lambda$! env !$\rightarrow$! loopP!$\prime$! (record { c10 = c10 ; varn = varn!$\_{1}$! ; vari = vari }) exit ) exit
+
+whileTestPCall!$\prime$! : (c10 :  !$\mathbb{N}$! ) !$\rightarrow$! Envc
+whileTestPCall!$\prime$! c10 = whileTestP!$\prime$! {_} {_} c10 (!$\lambda$! env !$\rightarrow$! loopP!$\prime$! env (!$\lambda$! env !$\rightarrow$!  env))
+
+-- whileTestP!$\prime$! 10
+-- record { c10 = 10 ; varn = 0 ; vari = 10 }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Paper/src/agda-hoare-while.agda	Sun Apr 24 23:13:44 2022 +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/Paper/src/agda-hoare-while.agda.replaced	Sun Apr 24 23:13:44 2022 +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!$\prime$!} {_} {whileInv}  lemma4 ) lemma5
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Paper/src/agda-hoare-whileprog.agda	Sun Apr 24 23:13:44 2022 +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/Paper/src/agda-hoare-whileprog.agda.replaced	Sun Apr 24 23:13:44 2022 +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!$\prime$! : {l : Level} {t : Set l} !$\rightarrow$! Envc !$\rightarrow$! (next : Envc !$\rightarrow$! t) !$\rightarrow$! (exit : Envc !$\rightarrow$! t) !$\rightarrow$! t
+whileLoopP!$\prime$! record { c10 = c10 ; varn = zero ; vari = vari } _ exit = exit record { c10 = c10 ; varn = zero ; vari = vari }
+whileLoopP!$\prime$! 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!$\prime$! 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/Paper/src/agda-hoare-write.agda	Sun Apr 24 23:13:44 2022 +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/Paper/src/agda-hoare-write.agda.replaced	Sun Apr 24 23:13:44 2022 +0900
@@ -0,0 +1,15 @@
+-- Nomal CodeGear
+whileLoop!$\prime$! : {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!$\prime$! zero env refl _ exit = exit env
+whileLoop!$\prime$! (suc n) env refl next _ = next (record env {varn = pred (varn env) ; vari = suc (vari env) })
+
+-- Hoare Logic base CodeGear
+whileLoopPwP!$\prime$! : {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!$\prime$! zero env refl refl next exit = exit env refl
+whileLoopPwP!$\prime$! (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/Paper/src/agda-mcg.agda	Sun Apr 24 23:13:44 2022 +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/Paper/src/agda-mcg.agda.replaced	Sun Apr 24 23:13:44 2022 +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/Paper/src/agda-mdg.agda	Sun Apr 24 23:13:44 2022 +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/Paper/src/agda-mdg.agda.replaced	Sun Apr 24 23:13:44 2022 +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/Paper/src/agda-pattern.agda	Sun Apr 24 23:13:44 2022 +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/Paper/src/agda-pattern.agda.replaced	Sun Apr 24 23:13:44 2022 +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/Paper/src/agda-plus.agda	Sun Apr 24 23:13:44 2022 +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/Paper/src/agda-plus.agda.replaced	Sun Apr 24 23:13:44 2022 +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/Paper/src/agda-rewrite.agda	Sun Apr 24 23:13:44 2022 +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/Paper/src/agda-rewrite.agda.replaced	Sun Apr 24 23:13:44 2022 +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/Paper/src/agda-term.agda	Sun Apr 24 23:13:44 2022 +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/Paper/src/agda-term.agda.replaced	Sun Apr 24 23:13:44 2022 +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 Paper/src/agda-term.agdai has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Paper/src/agda-term1.agda	Sun Apr 24 23:13:44 2022 +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/Paper/src/agda-term1.agda.replaced	Sun Apr 24 23:13:44 2022 +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/Paper/src/agda-term2.agda	Sun Apr 24 23:13:44 2022 +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/Paper/src/agda-term2.agda.replaced	Sun Apr 24 23:13:44 2022 +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/Paper/src/agda-term3.agda	Sun Apr 24 23:13:44 2022 +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/Paper/src/agda-term3.agda.replaced	Sun Apr 24 23:13:44 2022 +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/Paper/src/agda/.#abridgement.agda	Sun Apr 24 23:13:44 2022 +0900
@@ -0,0 +1,1 @@
+soto@Szeleta.local.353
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Paper/src/agda/.#hoare-test.agda	Sun Apr 24 23:13:44 2022 +0900
@@ -0,0 +1,1 @@
+soto@Szeleta.local.353
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Paper/src/agda/.#plus2.agda	Sun Apr 24 23:13:44 2022 +0900
@@ -0,0 +1,1 @@
+soto@Szeleta.local.353
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Paper/src/agda/And.agda	Sun Apr 24 23:13:44 2022 +0900
@@ -0,0 +1,4 @@
+record _∧_ (A B : Set) : Set where
+  field
+    p1 : A
+    p2 : B
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Paper/src/agda/And.agda.replaced	Sun Apr 24 23:13:44 2022 +0900
@@ -0,0 +1,4 @@
+record _!$\wedge$!_ (A B : Set) : Set where
+  field
+    p1 : A
+    p2 : B
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Paper/src/agda/Nat.agda	Sun Apr 24 23:13:44 2022 +0900
@@ -0,0 +1,3 @@
+data ℕ : Set where
+  zero : ℕ
+  suc  : (n : ℕ) → ℕ
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Paper/src/agda/Nat.agda.replaced	Sun Apr 24 23:13:44 2022 +0900
@@ -0,0 +1,3 @@
+data !$\mathbb{N}$! : Set where
+  zero : !$\mathbb{N}$!
+  suc  : (n : !$\mathbb{N}$!) !$\rightarrow$! !$\mathbb{N}$!
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Paper/src/agda/_Fresh.agda	Sun Apr 24 23:13:44 2022 +0900
@@ -0,0 +1,211 @@
+------------------------------------------------------------------------
+-- The Agda standard library
+--
+-- Fresh lists, a proof relevant variant of Catarina Coquand's contexts in
+-- "A Formalised Proof of the Soundness and Completeness of a Simply Typed
+-- Lambda-Calculus with Explicit Substitutions"
+------------------------------------------------------------------------
+
+-- See README.Data.List.Fresh and README.Data.Trie.NonDependent for
+-- examples of how to use fresh lists.
+
+{-# OPTIONS --without-K --safe #-}
+
+module Data.List.Fresh where
+
+open import Level using (Level; _⊔_)
+open import Data.Bool.Base using (true; false)
+open import Data.Unit.Polymorphic.Base using (⊀)
+open import Data.Product using (∃; _×_; _,_; -,_; proj₁; proj₂)
+open import Data.List.Relation.Unary.All using (All; []; _∷_)
+open import Data.List.Relation.Unary.AllPairs using (AllPairs; []; _∷_)
+open import Data.Maybe.Base as Maybe using (Maybe; just; nothing)
+open import Data.Nat.Base using (ℕ; zero; suc)
+open import Function using (_∘′_; flip; id; _on_)
+open import Relation.Nullary      using (does)
+open import Relation.Unary   as U using (Pred)
+open import Relation.Binary  as B using (Rel)
+open import Relation.Nary
+
+private
+  variable
+    a b p r s : Level
+    A : Set a
+    B : Set b
+
+------------------------------------------------------------------------
+-- Basic type
+
+-- If we pick an R such that (R a b) means that a is different from b
+-- then we have a list of distinct values.
+
+module _ {a} (A : Set a) (R : Rel A r) where
+
+  data List# : Set (a ⊔ r)
+  fresh : (a : A) (as : List#) → Set r
+
+  data List# where
+    []   : List#
+    cons : (a : A) (as : List#) → fresh a as → List#
+
+  -- Whenever R can be reconstructed by η-expansion (e.g. because it is
+  -- the erasure ⌊_⌋ of a decidable predicate, cf. Relation.Nary) or we
+  -- do not care about the proof, it is convenient to get back list syntax.
+
+  -- We use a different symbol to avoid conflict when importing both Data.List
+  -- and Data.List.Fresh.
+  infixr 5 _∷#_
+  pattern _∷#_ x xs = cons x xs _
+
+  fresh a []        = ⊀
+  fresh a (x ∷# xs) = R a x × fresh a xs
+
+-- Convenient notation for freshness making A and R implicit parameters
+infix 5 _#_
+_#_ : {R : Rel A r} (a : A) (as : List# A R) → Set r
+_#_ = fresh _ _
+
+------------------------------------------------------------------------
+-- Operations for modifying fresh lists
+
+module _ {R : Rel A r} {S : Rel B s} (f : A → B) (R⇒S : ∀[ R ⇒ (S on f) ]) where
+
+  map   : List# A R → List# B S
+  map-# : ∀ {a} as → a # as → f a # map as
+
+  map []             = []
+  map (cons a as ps) = cons (f a) (map as) (map-# as ps)
+
+  map-# []        _        = _
+  map-# (a ∷# as) (p , ps) = R⇒S p , map-# as ps
+
+module _ {R : Rel B r} (f : A → B) where
+
+  map₁ : List# A (R on f) → List# B R
+  map₁ = map f id
+
+module _ {R : Rel A r} {S : Rel A s} (R⇒S : ∀[ R ⇒ S ]) where
+
+  map₂ : List# A R → List# A S
+  map₂ = map id R⇒S
+
+------------------------------------------------------------------------
+-- Views
+
+data Empty {A : Set a} {R : Rel A r} : List# A R → Set (a ⊔ r) where
+  [] : Empty []
+
+data NonEmpty {A : Set a} {R : Rel A r} : List# A R → Set (a ⊔ r) where
+  cons : ∀ x xs pr → NonEmpty (cons x xs pr)
+
+------------------------------------------------------------------------
+-- Operations for reducing fresh lists
+
+length : {R : Rel A r} → List# A R → ℕ
+length []        = 0
+length (_ ∷# xs) = suc (length xs)
+
+------------------------------------------------------------------------
+-- Operations for constructing fresh lists
+
+pattern [_] a = a ∷# []
+
+fromMaybe : {R : Rel A r} → Maybe A → List# A R
+fromMaybe nothing  = []
+fromMaybe (just a) = [ a ]
+
+module _ {R : Rel A r} (R-refl : B.Reflexive R) where
+
+  replicate   : ℕ → A → List# A R
+  replicate-# : (n : ℕ) (a : A) → a # replicate n a
+
+  replicate zero    a = []
+  replicate (suc n) a = cons a (replicate n a) (replicate-# n a)
+
+  replicate-# zero    a = _
+  replicate-# (suc n) a = R-refl , replicate-# n a
+
+------------------------------------------------------------------------
+-- Operations for deconstructing fresh lists
+
+uncons : {R : Rel A r} → List# A R → Maybe (A × List# A R)
+uncons []        = nothing
+uncons (a ∷# as) = just (a , as)
+
+head : {R : Rel A r} → List# A R → Maybe A
+head = Maybe.map proj₁ ∘′ uncons
+
+tail : {R : Rel A r} → List# A R → Maybe (List# A R)
+tail = Maybe.map proj₂ ∘′ uncons
+
+take   : {R : Rel A r} → ℕ → List# A R → List# A R
+take-# : {R : Rel A r} → ∀ n a (as : List# A R) → a # as → a # take n as
+
+take zero    xs             = []
+take (suc n) []             = []
+take (suc n) (cons a as ps) = cons a (take n as) (take-# n a as ps)
+
+take-# zero    a xs        _        = _
+take-# (suc n) a []        ps       = _
+take-# (suc n) a (x ∷# xs) (p , ps) = p , take-# n a xs ps
+
+drop : {R : Rel A r} → ℕ → List# A R → List# A R
+drop zero    as        = as
+drop (suc n) []        = []
+drop (suc n) (a ∷# as) = drop n as
+
+module _ {P : Pred A p} (P? : U.Decidable P) where
+
+  takeWhile   : {R : Rel A r} → List# A R → List# A R
+  takeWhile-# : ∀ {R : Rel A r} a (as : List# A R) → a # as → a # takeWhile as
+
+  takeWhile []             = []
+  takeWhile (cons a as ps) with does (P? a)
+  ... | true  = cons a (takeWhile as) (takeWhile-# a as ps)
+  ... | false = []
+
+  takeWhile-# a []        _        = _
+  takeWhile-# a (x ∷# xs) (p , ps) with does (P? x)
+  ... | true  = p , takeWhile-# a xs ps
+  ... | false = _
+
+  dropWhile : {R : Rel A r} → List# A R → List# A R
+  dropWhile []            = []
+  dropWhile aas@(a ∷# as) with does (P? a)
+  ... | true  = dropWhile as
+  ... | false = aas
+
+  filter   : {R : Rel A r} → List# A R → List# A R
+  filter-# : ∀ {R : Rel A r} a (as : List# A R) → a # as → a # filter as
+
+  filter []             = []
+  filter (cons a as ps) with does (P? a)
+  ... | true  = cons a (filter as) (filter-# a as ps)
+  ... | false = filter as
+
+  filter-# a []        _        = _
+  filter-# a (x ∷# xs) (p , ps) with does (P? x)
+  ... | true  = p , filter-# a xs ps
+  ... | false = filter-# a xs ps
+
+------------------------------------------------------------------------
+-- Relationship to List and AllPairs
+
+toList : {R : Rel A r} → List# A R → ∃ (AllPairs R)
+toAll  : ∀ {R : Rel A r} {a} as → fresh A R a as → All (R a) (proj₁ (toList as))
+
+toList []             = -, []
+toList (cons x xs ps) = -, toAll xs ps ∷ proj₂ (toList xs)
+
+toAll []        ps       = []
+toAll (a ∷# as) (p , ps) = p ∷ toAll as ps
+
+fromList   : ∀ {R : Rel A r} {xs} → AllPairs R xs → List# A R
+fromList-# : ∀ {R : Rel A r} {x xs} (ps : AllPairs R xs) →
+             All (R x) xs → x # fromList ps
+
+fromList []       = []
+fromList (r ∷ rs) = cons _ (fromList rs) (fromList-# rs r)
+
+fromList-# []       _        = _
+fromList-# (p ∷ ps) (r ∷ rs) = r , fromList-# ps rs
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Paper/src/agda/_Fresh.agda.replaced	Sun Apr 24 23:13:44 2022 +0900
@@ -0,0 +1,211 @@
+------------------------------------------------------------------------
+-- The Agda standard library
+--
+-- Fresh lists, a proof relevant variant of Catarina Coquand!$\prime$!s contexts in
+-- "A Formalised Proof of the Soundness and Completeness of a Simply Typed
+-- Lambda-Calculus with Explicit Substitutions"
+------------------------------------------------------------------------
+
+-- See README.Data.List.Fresh and README.Data.Trie.NonDependent for
+-- examples of how to use fresh lists.
+
+{-!$\#$! OPTIONS --without-K --safe !$\#$!-}
+
+module Data.List.Fresh where
+
+open import Level using (Level; _!$\sqcup$!_)
+open import Data.Bool.Base using (true; false)
+open import Data.Unit.Polymorphic.Base using (!$\top$!)
+open import Data.Product using (∃; _!$\times$!_; _,_; -,_; proj!$\_{1}$!; proj!$\_{2}$!)
+open import Data.List.Relation.Unary.All using (All; []; _!$\text{::}$!_)
+open import Data.List.Relation.Unary.AllPairs using (AllPairs; []; _!$\text{::}$!_)
+open import Data.Maybe.Base as Maybe using (Maybe; just; nothing)
+open import Data.Nat.Base using (!$\mathbb{N}$!; zero; suc)
+open import Function using (_∘′_; flip; id; _on_)
+open import Relation.Nullary      using (does)
+open import Relation.Unary   as U using (Pred)
+open import Relation.Binary  as B using (Rel)
+open import Relation.Nary
+
+private
+  variable
+    a b p r s : Level
+    A : Set a
+    B : Set b
+
+------------------------------------------------------------------------
+-- Basic type
+
+-- If we pick an R such that (R a b) means that a is different from b
+-- then we have a list of distinct values.
+
+module _ {a} (A : Set a) (R : Rel A r) where
+
+  data List!$\#$! : Set (a !$\sqcup$! r)
+  fresh : (a : A) (as : List!$\#$!) !$\rightarrow$! Set r
+
+  data List!$\#$! where
+    []   : List!$\#$!
+    cons : (a : A) (as : List!$\#$!) !$\rightarrow$! fresh a as !$\rightarrow$! List!$\#$!
+
+  -- Whenever R can be reconstructed by η-expansion (e.g. because it is
+  -- the erasure ⌊_⌋ of a decidable predicate, cf. Relation.Nary) or we
+  -- do not care about the proof, it is convenient to get back list syntax.
+
+  -- We use a different symbol to avoid conflict when importing both Data.List
+  -- and Data.List.Fresh.
+  infixr 5 _!$\text{::}$!!$\#$!_
+  pattern _!$\text{::}$!!$\#$!_ x xs = cons x xs _
+
+  fresh a []        = !$\top$!
+  fresh a (x !$\text{::}$!!$\#$! xs) = R a x !$\times$! fresh a xs
+
+-- Convenient notation for freshness making A and R implicit parameters
+infix 5 _!$\#$!_
+_!$\#$!_ : {R : Rel A r} (a : A) (as : List!$\#$! A R) !$\rightarrow$! Set r
+_!$\#$!_ = fresh _ _
+
+------------------------------------------------------------------------
+-- Operations for modifying fresh lists
+
+module _ {R : Rel A r} {S : Rel B s} (f : A !$\rightarrow$! B) (R!$\Rightarrow$!S : !$\forall$![ R !$\Rightarrow$! (S on f) ]) where
+
+  map   : List!$\#$! A R !$\rightarrow$! List!$\#$! B S
+  map-!$\#$! : !$\forall$! {a} as !$\rightarrow$! a !$\#$! as !$\rightarrow$! f a !$\#$! map as
+
+  map []             = []
+  map (cons a as ps) = cons (f a) (map as) (map-!$\#$! as ps)
+
+  map-!$\#$! []        _        = _
+  map-!$\#$! (a !$\text{::}$!!$\#$! as) (p , ps) = R!$\Rightarrow$!S p , map-!$\#$! as ps
+
+module _ {R : Rel B r} (f : A !$\rightarrow$! B) where
+
+  map!$\_{1}$! : List!$\#$! A (R on f) !$\rightarrow$! List!$\#$! B R
+  map!$\_{1}$! = map f id
+
+module _ {R : Rel A r} {S : Rel A s} (R!$\Rightarrow$!S : !$\forall$![ R !$\Rightarrow$! S ]) where
+
+  map!$\_{2}$! : List!$\#$! A R !$\rightarrow$! List!$\#$! A S
+  map!$\_{2}$! = map id R!$\Rightarrow$!S
+
+------------------------------------------------------------------------
+-- Views
+
+data Empty {A : Set a} {R : Rel A r} : List!$\#$! A R !$\rightarrow$! Set (a !$\sqcup$! r) where
+  [] : Empty []
+
+data NonEmpty {A : Set a} {R : Rel A r} : List!$\#$! A R !$\rightarrow$! Set (a !$\sqcup$! r) where
+  cons : !$\forall$! x xs pr !$\rightarrow$! NonEmpty (cons x xs pr)
+
+------------------------------------------------------------------------
+-- Operations for reducing fresh lists
+
+length : {R : Rel A r} !$\rightarrow$! List!$\#$! A R !$\rightarrow$! !$\mathbb{N}$!
+length []        = 0
+length (_ !$\text{::}$!!$\#$! xs) = suc (length xs)
+
+------------------------------------------------------------------------
+-- Operations for constructing fresh lists
+
+pattern [_] a = a !$\text{::}$!!$\#$! []
+
+fromMaybe : {R : Rel A r} !$\rightarrow$! Maybe A !$\rightarrow$! List!$\#$! A R
+fromMaybe nothing  = []
+fromMaybe (just a) = [ a ]
+
+module _ {R : Rel A r} (R-refl : B.Reflexive R) where
+
+  replicate   : !$\mathbb{N}$! !$\rightarrow$! A !$\rightarrow$! List!$\#$! A R
+  replicate-!$\#$! : (n : !$\mathbb{N}$!) (a : A) !$\rightarrow$! a !$\#$! replicate n a
+
+  replicate zero    a = []
+  replicate (suc n) a = cons a (replicate n a) (replicate-!$\#$! n a)
+
+  replicate-!$\#$! zero    a = _
+  replicate-!$\#$! (suc n) a = R-refl , replicate-!$\#$! n a
+
+------------------------------------------------------------------------
+-- Operations for deconstructing fresh lists
+
+uncons : {R : Rel A r} !$\rightarrow$! List!$\#$! A R !$\rightarrow$! Maybe (A !$\times$! List!$\#$! A R)
+uncons []        = nothing
+uncons (a !$\text{::}$!!$\#$! as) = just (a , as)
+
+head : {R : Rel A r} !$\rightarrow$! List!$\#$! A R !$\rightarrow$! Maybe A
+head = Maybe.map proj!$\_{1}$! ∘′ uncons
+
+tail : {R : Rel A r} !$\rightarrow$! List!$\#$! A R !$\rightarrow$! Maybe (List!$\#$! A R)
+tail = Maybe.map proj!$\_{2}$! ∘′ uncons
+
+take   : {R : Rel A r} !$\rightarrow$! !$\mathbb{N}$! !$\rightarrow$! List!$\#$! A R !$\rightarrow$! List!$\#$! A R
+take-!$\#$! : {R : Rel A r} !$\rightarrow$! !$\forall$! n a (as : List!$\#$! A R) !$\rightarrow$! a !$\#$! as !$\rightarrow$! a !$\#$! take n as
+
+take zero    xs             = []
+take (suc n) []             = []
+take (suc n) (cons a as ps) = cons a (take n as) (take-!$\#$! n a as ps)
+
+take-!$\#$! zero    a xs        _        = _
+take-!$\#$! (suc n) a []        ps       = _
+take-!$\#$! (suc n) a (x !$\text{::}$!!$\#$! xs) (p , ps) = p , take-!$\#$! n a xs ps
+
+drop : {R : Rel A r} !$\rightarrow$! !$\mathbb{N}$! !$\rightarrow$! List!$\#$! A R !$\rightarrow$! List!$\#$! A R
+drop zero    as        = as
+drop (suc n) []        = []
+drop (suc n) (a !$\text{::}$!!$\#$! as) = drop n as
+
+module _ {P : Pred A p} (P? : U.Decidable P) where
+
+  takeWhile   : {R : Rel A r} !$\rightarrow$! List!$\#$! A R !$\rightarrow$! List!$\#$! A R
+  takeWhile-!$\#$! : !$\forall$! {R : Rel A r} a (as : List!$\#$! A R) !$\rightarrow$! a !$\#$! as !$\rightarrow$! a !$\#$! takeWhile as
+
+  takeWhile []             = []
+  takeWhile (cons a as ps) with does (P? a)
+  ... | true  = cons a (takeWhile as) (takeWhile-!$\#$! a as ps)
+  ... | false = []
+
+  takeWhile-!$\#$! a []        _        = _
+  takeWhile-!$\#$! a (x !$\text{::}$!!$\#$! xs) (p , ps) with does (P? x)
+  ... | true  = p , takeWhile-!$\#$! a xs ps
+  ... | false = _
+
+  dropWhile : {R : Rel A r} !$\rightarrow$! List!$\#$! A R !$\rightarrow$! List!$\#$! A R
+  dropWhile []            = []
+  dropWhile aas@(a !$\text{::}$!!$\#$! as) with does (P? a)
+  ... | true  = dropWhile as
+  ... | false = aas
+
+  filter   : {R : Rel A r} !$\rightarrow$! List!$\#$! A R !$\rightarrow$! List!$\#$! A R
+  filter-!$\#$! : !$\forall$! {R : Rel A r} a (as : List!$\#$! A R) !$\rightarrow$! a !$\#$! as !$\rightarrow$! a !$\#$! filter as
+
+  filter []             = []
+  filter (cons a as ps) with does (P? a)
+  ... | true  = cons a (filter as) (filter-!$\#$! a as ps)
+  ... | false = filter as
+
+  filter-!$\#$! a []        _        = _
+  filter-!$\#$! a (x !$\text{::}$!!$\#$! xs) (p , ps) with does (P? x)
+  ... | true  = p , filter-!$\#$! a xs ps
+  ... | false = filter-!$\#$! a xs ps
+
+------------------------------------------------------------------------
+-- Relationship to List and AllPairs
+
+toList : {R : Rel A r} !$\rightarrow$! List!$\#$! A R !$\rightarrow$! ∃ (AllPairs R)
+toAll  : !$\forall$! {R : Rel A r} {a} as !$\rightarrow$! fresh A R a as !$\rightarrow$! All (R a) (proj!$\_{1}$! (toList as))
+
+toList []             = -, []
+toList (cons x xs ps) = -, toAll xs ps !$\text{::}$! proj!$\_{2}$! (toList xs)
+
+toAll []        ps       = []
+toAll (a !$\text{::}$!!$\#$! as) (p , ps) = p !$\text{::}$! toAll as ps
+
+fromList   : !$\forall$! {R : Rel A r} {xs} !$\rightarrow$! AllPairs R xs !$\rightarrow$! List!$\#$! A R
+fromList-!$\#$! : !$\forall$! {R : Rel A r} {x xs} (ps : AllPairs R xs) !$\rightarrow$!
+             All (R x) xs !$\rightarrow$! x !$\#$! fromList ps
+
+fromList []       = []
+fromList (r !$\text{::}$! rs) = cons _ (fromList rs) (fromList-!$\#$! rs r)
+
+fromList-!$\#$! []       _        = _
+fromList-!$\#$! (p !$\text{::}$! ps) (r !$\text{::}$! rs) = r , fromList-!$\#$! ps rs
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Paper/src/agda/abridgement.agda	Sun Apr 24 23:13:44 2022 +0900
@@ -0,0 +1,22 @@
+module abridgement where
+
+open import Data.Nat
+
+record env : Set where
+  field
+    a : ℕ
+    b : ℕ
+    c : ℕ
+open env
+
+patternmatch-default : env → ℕ
+patternmatch-default record { a = a ; b = b ; c = c } = c
+
+patternmatch-extraction : env → ℕ
+patternmatch-extraction env with c env
+patternmatch-extraction env | c = c
+
+patternmatch-extraction' : env → ℕ
+patternmatch-extraction' env with c env
+... | c = c
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Paper/src/agda/abridgement.agda.replaced	Sun Apr 24 23:13:44 2022 +0900
@@ -0,0 +1,22 @@
+module abridgement where
+
+open import Data.Nat
+
+record env : Set where
+  field
+    a : !$\mathbb{N}$!
+    b : !$\mathbb{N}$!
+    c : !$\mathbb{N}$!
+open env
+
+patternmatch-default : env !$\rightarrow$! !$\mathbb{N}$!
+patternmatch-default record { a = a ; b = b ; c = c } = c
+
+patternmatch-extraction : env !$\rightarrow$! !$\mathbb{N}$!
+patternmatch-extraction env with c env
+patternmatch-extraction env | c = c
+
+patternmatch-extraction!$\prime$! : env !$\rightarrow$! !$\mathbb{N}$!
+patternmatch-extraction!$\prime$! env with c env
+... | c = c
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Paper/src/agda/cbc-agda.agda	Sun Apr 24 23:13:44 2022 +0900
@@ -0,0 +1,22 @@
+module cbc-agda where
+
+open import Data.Nat
+open import Level renaming ( suc to succ ; zero to Zero )
+
+record Env : Set where
+  field
+    varx : ℕ
+    vary : ℕ
+open Env
+
+plus-com : {l : Level} {t : Set l} → Env → (next : Env → t) → (exit : Env → t) → t
+plus-com env next exit with vary env
+... | zero  = exit (record { varx = varx env ; vary = vary env })
+... | suc y = next (record { varx = suc (varx env) ; vary = y })
+
+{-# TERMINATING #-}
+plus-p : {l : Level} {t : Set l} → (env : Env) → (exit : Env → t) → t
+plus-p env exit = plus-com env ( λ env → plus-p env exit ) exit
+
+plus : ℕ → ℕ → Env
+plus x y = plus-p (record { varx = x ; vary = y }) (λ env → env)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Paper/src/agda/cbc-agda.agda.replaced	Sun Apr 24 23:13:44 2022 +0900
@@ -0,0 +1,22 @@
+module cbc-agda where
+
+open import Data.Nat
+open import Level renaming ( suc to succ ; zero to Zero )
+
+record Env : Set where
+  field
+    varx : !$\mathbb{N}$!
+    vary : !$\mathbb{N}$!
+open Env
+
+plus-com : {l : Level} {t : Set l} !$\rightarrow$! Env !$\rightarrow$! (next : Env !$\rightarrow$! t) !$\rightarrow$! (exit : Env !$\rightarrow$! t) !$\rightarrow$! t
+plus-com env next exit with vary env
+... | zero  = exit (record { varx = varx env ; vary = vary env })
+... | suc y = next (record { varx = suc (varx env) ; vary = y })
+
+{-!$\#$! TERMINATING !$\#$!-}
+plus-p : {l : Level} {t : Set l} !$\rightarrow$! (env : Env) !$\rightarrow$! (exit : Env !$\rightarrow$! t) !$\rightarrow$! t
+plus-p env exit = plus-com env ( !$\lambda$! env !$\rightarrow$! plus-p env exit ) exit
+
+plus : !$\mathbb{N}$! !$\rightarrow$! !$\mathbb{N}$! !$\rightarrow$! Env
+plus x y = plus-p (record { varx = x ; vary = y }) (!$\lambda$! env !$\rightarrow$! env)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Paper/src/agda/cmp.agda	Sun Apr 24 23:13:44 2022 +0900
@@ -0,0 +1,15 @@
+module cmp where
+
+open import Data.Nat
+open import Data.Nat.Properties as NatProp -- <-cmp
+open import Relation.Binary
+
+compare_test : ℕ → ℕ → ℕ
+compare_test x y with <-cmp x y
+... | tri< a ¬b ¬c = y
+... | tri≈ ¬a b ¬c = x
+... | tri> ¬a ¬b c = x
+
+-- test = compare_test 7 2
+-- 7
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Paper/src/agda/cmp.agda.replaced	Sun Apr 24 23:13:44 2022 +0900
@@ -0,0 +1,15 @@
+module cmp where
+
+open import Data.Nat
+open import Data.Nat.Properties as NatProp -- <-cmp
+open import Relation.Binary
+
+compare_test : !$\mathbb{N}$! !$\rightarrow$! !$\mathbb{N}$! !$\rightarrow$! !$\mathbb{N}$!
+compare_test x y with <-cmp x y
+... | tri< a !$\neg$!b !$\neg$!c = y
+... | tri!$\approx$! !$\neg$!a b !$\neg$!c = x
+... | tri> !$\neg$!a !$\neg$!b c = x
+
+-- test = compare_test 7 2
+-- 7
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Paper/src/agda/fresh_test.agda	Sun Apr 24 23:13:44 2022 +0900
@@ -0,0 +1,14 @@
+module fresh_test where
+
+open import Data.Nat
+open import Data.List.Base
+open import Data.List.Fresh
+open import Data.List.Relation.Unary.AllPairs as AllPairs using (AllPairs)
+open import Data.Product
+open import Relation.Nary using (⌊_⌋; fromWitness)
+
+ISortedList : Set
+ISortedList = List# ℕ ⌊ _>?_ ⌋
+
+ins : ISortedList
+ins = 8 ∷# 4 ∷# 2 ∷# 0 ∷# []
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Paper/src/agda/fresh_test.agda.replaced	Sun Apr 24 23:13:44 2022 +0900
@@ -0,0 +1,14 @@
+module fresh_test where
+
+open import Data.Nat
+open import Data.List.Base
+open import Data.List.Fresh
+open import Data.List.Relation.Unary.AllPairs as AllPairs using (AllPairs)
+open import Data.Product
+open import Relation.Nary using (⌊_⌋; fromWitness)
+
+ISortedList : Set
+ISortedList = List!$\#$! !$\mathbb{N}$! ⌊ _>?_ ⌋
+
+ins : ISortedList
+ins = 8 !$\text{::}$!!$\#$! 4 !$\text{::}$!!$\#$! 2 !$\text{::}$!!$\#$! 0 !$\text{::}$!!$\#$! []
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Paper/src/agda/hoare-test.agda	Sun Apr 24 23:13:44 2022 +0900
@@ -0,0 +1,103 @@
+module hoare-test where
+
+open import Data.Nat hiding (_⊔_)
+open import Level renaming ( suc to succ ; zero to Zero )
+
+open import Relation.Binary
+open import Relation.Binary.PropositionalEquality
+
+open import Relation.Nullary hiding (proof)
+
+open import Data.Nat.Properties as NatProp -- <-cmp
+
+record Env : Set where
+  field
+    var-init-x : ℕ
+    var-init-y : ℕ
+    var-x : ℕ
+    var-y : ℕ
+open Env
+
+plus-com : {l : Level} {t : Set l} → Env → (next : Env → t) → (exit : Env → t) → t
+plus-com env next exit with var-y env
+... | zero  = exit record env{var-x = var-x env ; var-y = zero}
+... | suc y = next record env{var-x = suc (var-x env) ; var-y = y}
+
+plus-init : {l : Level} {t : Set l} → ( x y : ℕ ) → (next : Env → t) → t
+plus-init x y next = next (record { var-init-x = x ; var-init-y = y ; var-x = x ; var-y = y })
+
+{-# TERMINATING #-}
+plus-p : {l : Level} {t : Set l} → (env : Env) → (exit : Env → t) → t
+plus-p env exit = plus-com env ( λ env → plus-p env exit ) exit
+
+plus : ℕ → ℕ → Env
+plus x y = plus-init x y (λ env →  plus-p env (λ env → env))
+--(record { varx = x ; vary = y }) (λ env → env)
+
+-- ここたでplusの定矩
+
+-- mdg (meta code gear)
+data mdg-state : Set where
+  s-init  : mdg-state
+  s-doing : mdg-state
+  s-fin   : mdg-state
+
+record  _∧_  {n m : Level} (A  : Set n) ( B : Set m ) : Set (n ⊔ m) where
+   field
+      proj1 : A
+      proj2 : B
+
+-- mcg (meta code gear)
+plus-mdg : mdg-state → Env → Set
+plus-mdg s-init  env = (var-x env ≡ var-init-x env) ∧ (var-y env ≡ var-init-y env)
+plus-mdg s-doing env = (var-init-x env ≡ var-init-x env) ∧ (var-init-y env ≡ var-init-y env) -- よくないmdg
+plus-mdg s-fin   env = (var-init-x env ≡ var-init-x env) ∧ (var-init-y env ≡ var-init-y env) -- よくないmdg
+
+-- 実行のwrapperを䜜っお、そこでmcgが適切に遞ばれお接続をしたい。倚分できる気がする。
+plus-init-mcg : {l : Level} {t : Set l} → (x y : ℕ) →  ((env : Env ) → plus-mdg s-init env → t) → t
+plus-init-mcg x y next = next ( plus-init x y ( λ env → env ) ) record { proj1 = refl ; proj2 = refl } where
+
+plus-com-mcg : {l : Level} {t : Set l} → (env : Env ) → (next : (env : Env ) → plus-mdg s-doing env  → t) → (exit : (env : Env ) → plus-mdg s-fin env → t) → t
+plus-com-mcg env-in next exit with (var-y env-in)
+... | suc y = next ( plus-com env-in ( λ env → env ) ( λ env → env ) ) (record { proj1 = refl ; proj2 = refl }) where
+... | zero = exit env-in (record { proj1 = refl ; proj2 = refl })
+
+--plus-com-mcg
+{-# TERMINATING #-}
+plus-p-mcg : {l : Level} {t : Set l} → (env : Env) → (exit : (env : Env ) → plus-mdg s-fin env → t) → t
+plus-p-mcg env exit = plus-com-mcg env (λ env s → plus-p-mcg env exit ) exit
+
+plus-mcg : (x y : ℕ) → Env
+plus-mcg x y = plus-init-mcg x y (λ env s → plus-p-mcg env (λ env s → env))
+
+test1 = plus-mcg 3 4
+
+{-
+next env ? where
+   env : Env
+   env = plus-com env-in {!!} {!!}
+-}
+--plus-mdg s-init (plus-p record env{var-x = var-init-x env ; var-y = var-init-y env} (λ env → env))
+
+
+
+{-
+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 )
+-}
+
+data hoare-cond : Set where
+  p : hoare-cond
+  q : hoare-cond
+
+
+{-
+continuation-hoare-triple : {l : Level} {t : Set l} → hoare-cond → (next : Env → t) Set
+continuation-hoare-triple p next = continuation-hoare-triple q
+continuation-hoare-triple q next = continuation-hoare-triple p
+-}
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Paper/src/agda/hoare-test.agda.replaced	Sun Apr 24 23:13:44 2022 +0900
@@ -0,0 +1,103 @@
+module hoare-test where
+
+open import Data.Nat hiding (_!$\sqcup$!_)
+open import Level renaming ( suc to succ ; zero to Zero )
+
+open import Relation.Binary
+open import Relation.Binary.PropositionalEquality
+
+open import Relation.Nullary hiding (proof)
+
+open import Data.Nat.Properties as NatProp -- <-cmp
+
+record Env : Set where
+  field
+    var-init-x : !$\mathbb{N}$!
+    var-init-y : !$\mathbb{N}$!
+    var-x : !$\mathbb{N}$!
+    var-y : !$\mathbb{N}$!
+open Env
+
+plus-com : {l : Level} {t : Set l} !$\rightarrow$! Env !$\rightarrow$! (next : Env !$\rightarrow$! t) !$\rightarrow$! (exit : Env !$\rightarrow$! t) !$\rightarrow$! t
+plus-com env next exit with var-y env
+... | zero  = exit record env{var-x = var-x env ; var-y = zero}
+... | suc y = next record env{var-x = suc (var-x env) ; var-y = y}
+
+plus-init : {l : Level} {t : Set l} !$\rightarrow$! ( x y : !$\mathbb{N}$! ) !$\rightarrow$! (next : Env !$\rightarrow$! t) !$\rightarrow$! t
+plus-init x y next = next (record { var-init-x = x ; var-init-y = y ; var-x = x ; var-y = y })
+
+{-!$\#$! TERMINATING !$\#$!-}
+plus-p : {l : Level} {t : Set l} !$\rightarrow$! (env : Env) !$\rightarrow$! (exit : Env !$\rightarrow$! t) !$\rightarrow$! t
+plus-p env exit = plus-com env ( !$\lambda$! env !$\rightarrow$! plus-p env exit ) exit
+
+plus : !$\mathbb{N}$! !$\rightarrow$! !$\mathbb{N}$! !$\rightarrow$! Env
+plus x y = plus-init x y (!$\lambda$! env !$\rightarrow$!  plus-p env (!$\lambda$! env !$\rightarrow$! env))
+--(record { varx = x ; vary = y }) (!$\lambda$! env !$\rightarrow$! env)
+
+-- ここたでplusの定矩
+
+-- mdg (meta code gear)
+data mdg-state : Set where
+  s-init  : mdg-state
+  s-doing : mdg-state
+  s-fin   : mdg-state
+
+record  _!$\wedge$!_  {n m : Level} (A  : Set n) ( B : Set m ) : Set (n !$\sqcup$! m) where
+   field
+      proj1 : A
+      proj2 : B
+
+-- mcg (meta code gear)
+plus-mdg : mdg-state !$\rightarrow$! Env !$\rightarrow$! Set
+plus-mdg s-init  env = (var-x env !$\equiv$! var-init-x env) !$\wedge$! (var-y env !$\equiv$! var-init-y env)
+plus-mdg s-doing env = (var-init-x env !$\equiv$! var-init-x env) !$\wedge$! (var-init-y env !$\equiv$! var-init-y env) -- よくないmdg
+plus-mdg s-fin   env = (var-init-x env !$\equiv$! var-init-x env) !$\wedge$! (var-init-y env !$\equiv$! var-init-y env) -- よくないmdg
+
+-- 実行のwrapperを䜜っお、そこでmcgが適切に遞ばれお接続をしたい。倚分できる気がする。
+plus-init-mcg : {l : Level} {t : Set l} !$\rightarrow$! (x y : !$\mathbb{N}$!) !$\rightarrow$!  ((env : Env ) !$\rightarrow$! plus-mdg s-init env !$\rightarrow$! t) !$\rightarrow$! t
+plus-init-mcg x y next = next ( plus-init x y ( !$\lambda$! env !$\rightarrow$! env ) ) record { proj1 = refl ; proj2 = refl } where
+
+plus-com-mcg : {l : Level} {t : Set l} !$\rightarrow$! (env : Env ) !$\rightarrow$! (next : (env : Env ) !$\rightarrow$! plus-mdg s-doing env  !$\rightarrow$! t) !$\rightarrow$! (exit : (env : Env ) !$\rightarrow$! plus-mdg s-fin env !$\rightarrow$! t) !$\rightarrow$! t
+plus-com-mcg env-in next exit with (var-y env-in)
+... | suc y = next ( plus-com env-in ( !$\lambda$! env !$\rightarrow$! env ) ( !$\lambda$! env !$\rightarrow$! env ) ) (record { proj1 = refl ; proj2 = refl }) where
+... | zero = exit env-in (record { proj1 = refl ; proj2 = refl })
+
+--plus-com-mcg
+{-!$\#$! TERMINATING !$\#$!-}
+plus-p-mcg : {l : Level} {t : Set l} !$\rightarrow$! (env : Env) !$\rightarrow$! (exit : (env : Env ) !$\rightarrow$! plus-mdg s-fin env !$\rightarrow$! t) !$\rightarrow$! t
+plus-p-mcg env exit = plus-com-mcg env (!$\lambda$! env s !$\rightarrow$! plus-p-mcg env exit ) exit
+
+plus-mcg : (x y : !$\mathbb{N}$!) !$\rightarrow$! Env
+plus-mcg x y = plus-init-mcg x y (!$\lambda$! env s !$\rightarrow$! plus-p-mcg env (!$\lambda$! env s !$\rightarrow$! env))
+
+test1 = plus-mcg 3 4
+
+{-
+next env ? where
+   env : Env
+   env = plus-com env-in {!!} {!!}
+-}
+--plus-mdg s-init (plus-p record env{var-x = var-init-x env ; var-y = var-init-y env} (!$\lambda$! env !$\rightarrow$! env))
+
+
+
+{-
+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 )
+-}
+
+data hoare-cond : Set where
+  p : hoare-cond
+  q : hoare-cond
+
+
+{-
+continuation-hoare-triple : {l : Level} {t : Set l} !$\rightarrow$! hoare-cond !$\rightarrow$! (next : Env !$\rightarrow$! t) Set
+continuation-hoare-triple p next = continuation-hoare-triple q
+continuation-hoare-triple q next = continuation-hoare-triple p
+-}
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Paper/src/agda/hoare-while.agda	Sun Apr 24 23:13:44 2022 +0900
@@ -0,0 +1,98 @@
+module hoare-while where
+
+open import Data.Nat
+open import Level renaming ( suc to succ ; zero to Zero )
+open import Data.Nat.Properties as NatProp -- <-cmp
+open import Relation.Binary
+
+record Envc : Set (succ Zero) where
+  field
+    c10 : ℕ
+    varn : ℕ
+    vari : ℕ
+open Envc
+
+whileTestP : {l : Level} {t : Set l} → (c10 : ℕ) → (next : Envc → t) → t
+whileTestP c10 next = next (record {varn = c10 ; vari = 0 ; c10 = c10 } )
+
+whileLoopP : {l : Level} {t : Set l} → Envc → (next : Envc → t) → (exit : Envc → t) → t
+whileLoopP env next exit with (varn env)
+... | zero = exit env
+... | suc n = exit (record env { varn = n ; vari = (suc n) })
+
+
+{-# 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))
+
+---
+open import Data.Empty
+--open import Relation.Nullary using (¬_; Dec; yes; no)
+
+--open import Agda.Builtin.Unit
+open import utilities
+
+open import Relation.Binary.PropositionalEquality
+
+open _/\_
+
+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)
+
+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 )
+
+whileLoopPwP : {l : Level} {t : Set l}   → (env : Envc ) → whileTestStateP s2 env
+    → (next : (env : Envc ) → whileTestStateP s2 env  → t)
+    → (exit : (env : Envc ) → whileTestStateP sf env  → t) → t
+whileLoopPwP env s next exit with <-cmp 0 (varn env)
+whileLoopPwP env s next exit | tri≈ ¬a b ¬c = exit env (lem (sym b) s)
+  where
+    lem : (varn env ≡ 0) → (varn env + vari env ≡ c10 env) → vari env ≡ c10 env
+    lem refl refl = refl
+whileLoopPwP env s next exit | tri< a ¬b ¬c  = next (record env {varn = (varn env) - 1 ; vari = (vari env) + 1 }) (proof5 a)
+  where
+    1<0 : 1 ≀ zero → ⊥
+    1<0 ()
+    proof5 : (suc zero  ≀ (varn  env))  → ((varn env ) - 1) + (vari env + 1) ≡ c10 env
+    proof5 (s≀s lt) with varn  env
+    proof5 (s≀s z≀n) | zero = ⊥-elim (1<0 a)
+    proof5 (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
+      ≡⟚ s  ⟩
+         c10 env
+      ∎
+
+
+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 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))
+
+
+
+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/Paper/src/agda/hoare-while.agda.replaced	Sun Apr 24 23:13:44 2022 +0900
@@ -0,0 +1,98 @@
+module hoare-while where
+
+open import Data.Nat
+open import Level renaming ( suc to succ ; zero to Zero )
+open import Data.Nat.Properties as NatProp -- <-cmp
+open import Relation.Binary
+
+record Envc : Set (succ Zero) where
+  field
+    c10 : !$\mathbb{N}$!
+    varn : !$\mathbb{N}$!
+    vari : !$\mathbb{N}$!
+open Envc
+
+whileTestP : {l : Level} {t : Set l} !$\rightarrow$! (c10 : !$\mathbb{N}$!) !$\rightarrow$! (next : Envc !$\rightarrow$! t) !$\rightarrow$! t
+whileTestP c10 next = next (record {varn = c10 ; vari = 0 ; c10 = c10 } )
+
+whileLoopP : {l : Level} {t : Set l} !$\rightarrow$! Envc !$\rightarrow$! (next : Envc !$\rightarrow$! t) !$\rightarrow$! (exit : Envc !$\rightarrow$! t) !$\rightarrow$! t
+whileLoopP env next exit with (varn env)
+... | zero = exit env
+... | suc n = exit (record env { varn = n ; vari = (suc n) })
+
+
+{-!$\#$! 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))
+
+---
+open import Data.Empty
+--open import Relation.Nullary using (!$\neg$!_; Dec; yes; no)
+
+--open import Agda.Builtin.Unit
+open import utilities
+
+open import Relation.Binary.PropositionalEquality
+
+open _!$\wedge$!_
+
+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)
+
+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 )
+
+whileLoopPwP : {l : Level} {t : Set l}   !$\rightarrow$! (env : Envc ) !$\rightarrow$! whileTestStateP s2 env
+    !$\rightarrow$! (next : (env : Envc ) !$\rightarrow$! whileTestStateP s2 env  !$\rightarrow$! t)
+    !$\rightarrow$! (exit : (env : Envc ) !$\rightarrow$! whileTestStateP sf env  !$\rightarrow$! t) !$\rightarrow$! t
+whileLoopPwP env s next exit with <-cmp 0 (varn env)
+whileLoopPwP env s next exit | tri!$\approx$! !$\neg$!a b !$\neg$!c = exit env (lem (sym b) s)
+  where
+    lem : (varn env !$\equiv$! 0) !$\rightarrow$! (varn env + vari env !$\equiv$! c10 env) !$\rightarrow$! vari env !$\equiv$! c10 env
+    lem refl refl = refl
+whileLoopPwP env s next exit | tri< a !$\neg$!b !$\neg$!c  = next (record env {varn = (varn env) - 1 ; vari = (vari env) + 1 }) (proof5 a)
+  where
+    1<0 : 1 !$\leq$! zero !$\rightarrow$! !$\bot$!
+    1<0 ()
+    proof5 : (suc zero  !$\leq$! (varn  env))  !$\rightarrow$! ((varn env ) - 1) + (vari env + 1) !$\equiv$! c10 env
+    proof5 (s!$\leq$!s lt) with varn  env
+    proof5 (s!$\leq$!s z!$\leq$!n) | zero = !$\bot$!-elim (1<0 a)
+    proof5 (s!$\leq$!s (z!$\leq$!n {n!$\prime$!}) ) | suc n = let open !$\equiv$!-Reasoning in
+      begin
+        n!$\prime$! + (vari env + 1)
+      !$\equiv$!!$\langle$! cong ( !$\lambda$! z !$\rightarrow$! n!$\prime$! + z ) ( +-sym  {vari env} {1} )  !$\rangle$!
+        n!$\prime$! + (1 + vari env )
+      !$\equiv$!!$\langle$! sym ( +-assoc (n!$\prime$!)  1 (vari env) ) !$\rangle$!
+        (n!$\prime$! + 1) + vari env
+      !$\equiv$!!$\langle$! cong ( !$\lambda$! z !$\rightarrow$! z + vari env )  +1!$\equiv$!suc  !$\rangle$!
+        (suc n!$\prime$! ) + vari env
+      !$\equiv$!!$\langle$!!$\rangle$!
+        varn env + vari env
+      !$\equiv$!!$\langle$! s  !$\rangle$!
+         c10 env
+      !$\blacksquare$!
+
+
+whileLoopPwP!$\prime$! : {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!$\prime$! zero env refl refl next exit = exit env refl
+whileLoopPwP!$\prime$! (suc n) env refl refl next exit = next (record env {varn = pred (varn env) ; vari = suc (vari env) }) refl (+-suc n (vari env))
+
+
+
+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/Paper/src/agda/hoare-while1.agda	Sun Apr 24 23:13:44 2022 +0900
@@ -0,0 +1,41 @@
+module hoare-while1 where
+
+open import Level renaming (suc to Suc ; zero to Zero )
+module WhileTest  where
+
+open import Relation.Binary.PropositionalEquality
+open import Relation.Binary.Core
+open import Data.Nat hiding (compare)
+open import Data.Maybe
+open import Data.List
+open import Function
+open import logic
+
+record Env : Set (Suc Zero) where
+  field
+    varn : ℕ
+    vari : ℕ
+open Env
+
+record WhileTest {m : Level }  {t : Set m }  : Set (Suc m) where
+  field
+    env : Env
+  whileInit : (c10 : ℕ) → (Env → t) → t
+  whileInit c10 next = next (record {varn = c10 ; vari = 0 } )
+  whileLoop : Env → (Code : Env → t) → t
+  whileLoop env next = whileLoop1 (varn env) env where
+      whileLoop1 : ℕ → Env → t
+      whileLoop1 zero env =  next env
+      whileLoop1 (suc t ) env = 
+          whileLoop1 t (record env {varn = t ; vari = (vari env) + 1}) 
+  whileTest : (c10 : ℕ) → (Env → t) → t
+  whileTest c10 next = whileInit c10 $ λ env → whileLoop env next
+
+open WhileTest
+
+createWhileTest : {m : Level} {t : Set m }  → WhileTest {m} {t}
+createWhileTest  = record { env = record { varn = 0; vari = 0 } }
+
+test2 : ℕ
+test2 = whileTest createWhileTest 10 $ λ e → vari e
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Paper/src/agda/hoare-while1.agda.replaced	Sun Apr 24 23:13:44 2022 +0900
@@ -0,0 +1,41 @@
+module hoare-while1 where
+
+open import Level renaming (suc to Suc ; zero to Zero )
+module WhileTest  where
+
+open import Relation.Binary.PropositionalEquality
+open import Relation.Binary.Core
+open import Data.Nat hiding (compare)
+open import Data.Maybe
+open import Data.List
+open import Function
+open import logic
+
+record Env : Set (Suc Zero) where
+  field
+    varn : !$\mathbb{N}$!
+    vari : !$\mathbb{N}$!
+open Env
+
+record WhileTest {m : Level }  {t : Set m }  : Set (Suc m) where
+  field
+    env : Env
+  whileInit : (c10 : !$\mathbb{N}$!) !$\rightarrow$! (Env !$\rightarrow$! t) !$\rightarrow$! t
+  whileInit c10 next = next (record {varn = c10 ; vari = 0 } )
+  whileLoop : Env !$\rightarrow$! (Code : Env !$\rightarrow$! t) !$\rightarrow$! t
+  whileLoop env next = whileLoop1 (varn env) env where
+      whileLoop1 : !$\mathbb{N}$! !$\rightarrow$! Env !$\rightarrow$! t
+      whileLoop1 zero env =  next env
+      whileLoop1 (suc t ) env = 
+          whileLoop1 t (record env {varn = t ; vari = (vari env) + 1}) 
+  whileTest : (c10 : !$\mathbb{N}$!) !$\rightarrow$! (Env !$\rightarrow$! t) !$\rightarrow$! t
+  whileTest c10 next = whileInit c10 $ !$\lambda$! env !$\rightarrow$! whileLoop env next
+
+open WhileTest
+
+createWhileTest : {m : Level} {t : Set m }  !$\rightarrow$! WhileTest {m} {t}
+createWhileTest  = record { env = record { varn = 0; vari = 0 } }
+
+test2 : !$\mathbb{N}$!
+test2 = whileTest createWhileTest 10 $ !$\lambda$! e !$\rightarrow$! vari e
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Paper/src/agda/lambda.agda	Sun Apr 24 23:13:44 2022 +0900
@@ -0,0 +1,28 @@
+module lambda where
+
+open import Data.Nat
+
+ll+_ : (x y : ℕ) → ℕ
+ll+ zero = λ y → y
+ll+ suc x = λ y → (ll+ x) (suc y)
+
+test =  (ll+ 5) 7
+
+-- +1をしたのち、もう䞀床+1をする関数を定矩する堎合
+
++1 : (x : ℕ )→ ℕ
++1 x = suc x
+
++n : (a : ℕ) → (x : ℕ → ℕ) → ℕ
++n a x = x a
+
+test*2 : (a : ℕ) → ℕ
+test*2 a = +n a (λ z → z + 2)
+
+test*2' : (a : ℕ) → ℕ
+test*2' a = +n a (λ z → +n z (λ z → z))
+
+
+λ'+2 : (x : ℕ) → ℕ
+λ'+2 d = {!!} -- (λ x → x +1)
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Paper/src/agda/lambda.agda.replaced	Sun Apr 24 23:13:44 2022 +0900
@@ -0,0 +1,28 @@
+module lambda where
+
+open import Data.Nat
+
+ll+_ : (x y : !$\mathbb{N}$!) !$\rightarrow$! !$\mathbb{N}$!
+ll+ zero = !$\lambda$! y !$\rightarrow$! y
+ll+ suc x = !$\lambda$! y !$\rightarrow$! (ll+ x) (suc y)
+
+test =  (ll+ 5) 7
+
+-- +1をしたのち、もう䞀床+1をする関数を定矩する堎合
+
++1 : (x : !$\mathbb{N}$! )!$\rightarrow$! !$\mathbb{N}$!
++1 x = suc x
+
++n : (a : !$\mathbb{N}$!) !$\rightarrow$! (x : !$\mathbb{N}$! !$\rightarrow$! !$\mathbb{N}$!) !$\rightarrow$! !$\mathbb{N}$!
++n a x = x a
+
+test*2 : (a : !$\mathbb{N}$!) !$\rightarrow$! !$\mathbb{N}$!
+test*2 a = +n a (!$\lambda$! z !$\rightarrow$! z + 2)
+
+test*2!$\prime$! : (a : !$\mathbb{N}$!) !$\rightarrow$! !$\mathbb{N}$!
+test*2!$\prime$! a = +n a (!$\lambda$! z !$\rightarrow$! +n z (!$\lambda$! z !$\rightarrow$! z))
+
+
+!$\lambda$!!$\prime$!+2 : (x : !$\mathbb{N}$!) !$\rightarrow$! !$\mathbb{N}$!
+!$\lambda$!!$\prime$!+2 d = {!!} -- (!$\lambda$! x !$\rightarrow$! x +1)
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Paper/src/agda/list-any.agda	Sun Apr 24 23:13:44 2022 +0900
@@ -0,0 +1,73 @@
+module list-any where
+
+import Relation.Binary.PropositionalEquality as Eq
+open Eq using (_≡_; refl; sym; trans; cong)
+open Eq.≡-Reasoning
+open import Data.Bool using (Bool; true; false; T; _∧_; _√_; not)
+open import Data.Nat using (ℕ; zero; suc; _+_; _*_; _∞_; _≀_; s≀s; z≀n)
+open import Data.Nat.Properties using
+  (+-assoc; +-identityˡ; +-identityʳ; *-assoc; *-identityˡ; *-identityʳ)
+open import Relation.Nullary using (¬_; Dec; yes; no)
+open import Data.Product using (_×_; ∃; ∃-syntax) renaming (_,_ to ⟹_,_⟩)
+open import Function using (_∘_)
+open import Level using (Level)
+--open import plfa.part1.Isomorphism using (_≃_; _⇔_)
+
+open import Data.List
+open import Data.Nat.Properties as NatProp -- <-cmp
+open import Relation.Binary
+
+open import rbt_t
+
+-- infix 4 _∈_ _∉_
+
+test-l : List ℕ
+test-l = 1 ∷ 2 ∷ []
+
+data Any-test {A : Set} (P : A → Set) : List A → Set where
+  here  : ∀ {x : A} {xs : List A} → P x → Any-test P (x ∷ xs)
+  there : ∀ {x : A} {xs : List A} → Any-test P xs → Any-test P (x ∷ xs)
+
+{-
+_∈_ : ∀ {A : Set} (x : A) (xs : List A) → Set
+x ∈ xs = Any (x ≡_) xs
+-}
+
+_∈1_ : ∀ (n : ℕ) (xs : List ℕ) → Set
+n ∈1 [] = Any-test (n ≡_) []
+n ∈1 l@(x ∷ xs) with <-cmp n x
+... | tri< a ¬b ¬c = Any-test (n ≡_) xs
+... | tri≈ ¬a b ¬c = Any-test (n ≡_) l
+... | tri> ¬a ¬b c = Any-test (n ≡_) xs
+
+test : 1 ∈1 test-l
+test = here refl
+
+data Any (P : ℕ → Set) : rbt → Set where
+  here  : ∀ {x : ℕ} {xs : rbt} → P x → Any P xs
+  there : ∀ {x : ℕ} {xs : rbt} → Any P (get-rbt xs) → Any P xs
+
+_∈_ : ∀ (n : ℕ) (xs : rbt) → Bool
+n ∈ bt-empty = false
+n ∈ bt-node node with <-cmp n (node.number (tree.key node))
+... | tri< a ¬b ¬c = n ∈ (tree.ltree node)
+... | tri≈ ¬a b ¬c = true
+... | tri> ¬a ¬b c = n ∈ (tree.rtree node)
+
+
+
+testany1 : rbt → Set
+testany1 bt-empty = {!!}
+testany1 (bt-node record { key = key ; ltree = ltree ; rtree = rtree }) = {!!}
+
+testrbt1 = whileTestPCall' bt-empty 0
+testrbt2 = whileTestPCall' (Env.vart testrbt1) 1
+testrbt3 = whileTestPCall' (Env.vart testrbt2) 2
+testrbt4 = whileTestPCall' (Env.vart testrbt3) 3
+testrbt5 = whileTestPCall' (Env.vart testrbt4) 4
+testrbt6 = whileTestPCall' (Env.vart testrbt5) 5
+testrbt7 = whileTestPCall' (Env.vart testrbt6) 6
+
+
+test1kk = 100 ∈ (Env.vart testrbt6)
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Paper/src/agda/list-any.agda.replaced	Sun Apr 24 23:13:44 2022 +0900
@@ -0,0 +1,73 @@
+module list-any where
+
+import Relation.Binary.PropositionalEquality as Eq
+open Eq using (_!$\equiv$!_; refl; sym; trans; cong)
+open Eq.!$\equiv$!-Reasoning
+open import Data.Bool using (Bool; true; false; T; _!$\wedge$!_; _√_; not)
+open import Data.Nat using (!$\mathbb{N}$!; zero; suc; _+_; _*_; _∞_; _!$\leq$!_; s!$\leq$!s; z!$\leq$!n)
+open import Data.Nat.Properties using
+  (+-assoc; +-identityˡ; +-identityʳ; *-assoc; *-identityˡ; *-identityʳ)
+open import Relation.Nullary using (!$\neg$!_; Dec; yes; no)
+open import Data.Product using (_!$\times$!_; ∃; ∃-syntax) renaming (_,_ to !$\langle$!_,_!$\rangle$!)
+open import Function using (_∘_)
+open import Level using (Level)
+--open import plfa.part1.Isomorphism using (_≃_; _⇔_)
+
+open import Data.List
+open import Data.Nat.Properties as NatProp -- <-cmp
+open import Relation.Binary
+
+open import rbt_t
+
+-- infix 4 _∈_ _∉_
+
+test-l : List !$\mathbb{N}$!
+test-l = 1 !$\text{::}$! 2 !$\text{::}$! []
+
+data Any-test {A : Set} (P : A !$\rightarrow$! Set) : List A !$\rightarrow$! Set where
+  here  : !$\forall$! {x : A} {xs : List A} !$\rightarrow$! P x !$\rightarrow$! Any-test P (x !$\text{::}$! xs)
+  there : !$\forall$! {x : A} {xs : List A} !$\rightarrow$! Any-test P xs !$\rightarrow$! Any-test P (x !$\text{::}$! xs)
+
+{-
+_∈_ : !$\forall$! {A : Set} (x : A) (xs : List A) !$\rightarrow$! Set
+x ∈ xs = Any (x !$\equiv$!_) xs
+-}
+
+_∈1_ : !$\forall$! (n : !$\mathbb{N}$!) (xs : List !$\mathbb{N}$!) !$\rightarrow$! Set
+n ∈1 [] = Any-test (n !$\equiv$!_) []
+n ∈1 l@(x !$\text{::}$! xs) with <-cmp n x
+... | tri< a !$\neg$!b !$\neg$!c = Any-test (n !$\equiv$!_) xs
+... | tri!$\approx$! !$\neg$!a b !$\neg$!c = Any-test (n !$\equiv$!_) l
+... | tri> !$\neg$!a !$\neg$!b c = Any-test (n !$\equiv$!_) xs
+
+test : 1 ∈1 test-l
+test = here refl
+
+data Any (P : !$\mathbb{N}$! !$\rightarrow$! Set) : rbt !$\rightarrow$! Set where
+  here  : !$\forall$! {x : !$\mathbb{N}$!} {xs : rbt} !$\rightarrow$! P x !$\rightarrow$! Any P xs
+  there : !$\forall$! {x : !$\mathbb{N}$!} {xs : rbt} !$\rightarrow$! Any P (get-rbt xs) !$\rightarrow$! Any P xs
+
+_∈_ : !$\forall$! (n : !$\mathbb{N}$!) (xs : rbt) !$\rightarrow$! Bool
+n ∈ bt-empty = false
+n ∈ bt-node node with <-cmp n (node.number (tree.key node))
+... | tri< a !$\neg$!b !$\neg$!c = n ∈ (tree.ltree node)
+... | tri!$\approx$! !$\neg$!a b !$\neg$!c = true
+... | tri> !$\neg$!a !$\neg$!b c = n ∈ (tree.rtree node)
+
+
+
+testany1 : rbt !$\rightarrow$! Set
+testany1 bt-empty = {!!}
+testany1 (bt-node record { key = key ; ltree = ltree ; rtree = rtree }) = {!!}
+
+testrbt1 = whileTestPCall!$\prime$! bt-empty 0
+testrbt2 = whileTestPCall!$\prime$! (Env.vart testrbt1) 1
+testrbt3 = whileTestPCall!$\prime$! (Env.vart testrbt2) 2
+testrbt4 = whileTestPCall!$\prime$! (Env.vart testrbt3) 3
+testrbt5 = whileTestPCall!$\prime$! (Env.vart testrbt4) 4
+testrbt6 = whileTestPCall!$\prime$! (Env.vart testrbt5) 5
+testrbt7 = whileTestPCall!$\prime$! (Env.vart testrbt6) 6
+
+
+test1kk = 100 ∈ (Env.vart testrbt6)
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Paper/src/agda/logic.agda	Sun Apr 24 23:13:44 2022 +0900
@@ -0,0 +1,152 @@
+module logic where
+
+open import Level
+open import Relation.Nullary
+open import Relation.Binary hiding(_⇔_)
+open import Data.Empty
+
+
+data Bool : Set where
+    true : Bool
+    false : Bool
+
+record  _∧_  {n m : Level} (A  : Set n) ( B : Set m ) : Set (n ⊔ m) where
+   field
+      proj1 : A
+      proj2 : B
+
+data  _∹_  {n m : Level} (A  : Set n) ( B : Set m ) : Set (n ⊔ m) where
+   case1 : A → A ∹ B
+   case2 : B → A ∹ B
+
+_⇔_ : {n m : Level } → ( A : Set n ) ( B : Set m )  → Set (n ⊔ m)
+_⇔_ A B =  ( A → B ) ∧ ( B → A )
+
+contra-position : {n m : Level } {A : Set n} {B : Set m} → (A → B) → ¬ B → ¬ A
+contra-position {n} {m} {A} {B}  f ¬b a = ¬b ( f a )
+
+double-neg : {n  : Level } {A : Set n} → A → ¬ ¬ A
+double-neg A notnot = notnot A
+
+double-neg2 : {n  : Level } {A : Set n} → ¬ ¬ ¬ A → ¬ A
+double-neg2 notnot A = notnot ( double-neg A )
+
+de-morgan : {n  : Level } {A B : Set n} →  A ∧ B  → ¬ ( (¬ A ) √ (¬ B ) )
+de-morgan {n} {A} {B} and (case1 ¬A) = ⊥-elim ( ¬A ( _∧_.proj1 and ))
+de-morgan {n} {A} {B} and (case2 ¬B) = ⊥-elim ( ¬B ( _∧_.proj2 and ))
+
+dont-or : {n m : Level} {A  : Set n} { B : Set m } →  A √ B → ¬ A → B
+dont-or {A} {B} (case1 a) ¬A = ⊥-elim ( ¬A a )
+dont-or {A} {B} (case2 b) ¬A = b
+
+dont-orb : {n m : Level} {A  : Set n} { B : Set m } →  A √ B → ¬ B → A
+dont-orb {A} {B} (case2 b) ¬B = ⊥-elim ( ¬B b )
+dont-orb {A} {B} (case1 a) ¬B = a
+
+
+
+infixr  130 _∧_
+infixr  140 _√_
+infixr  150 _⇔_
+
+_/\_ : Bool → Bool → Bool 
+true /\ true = true
+_ /\ _ = false
+
+_\/_ : Bool → Bool → Bool 
+false \/ false = false
+_ \/ _ = true
+
+not_ : Bool → Bool 
+not true = false
+not false = true 
+
+_<=>_ : Bool → Bool → Bool  
+true <=> true = true
+false <=> false = true
+_ <=> _ = false
+
+infixr  130 _\/_
+infixr  140 _/\_
+
+open import Relation.Binary.PropositionalEquality
+
+
+≡-Bool-func : {A B : Bool } → ( A ≡ true → B ≡ true ) → ( B ≡ true → A ≡ true ) → A ≡ B
+≡-Bool-func {true} {true} a→b b→a = refl
+≡-Bool-func {false} {true} a→b b→a with b→a refl
+... | ()
+≡-Bool-func {true} {false} a→b b→a with a→b refl
+... | ()
+≡-Bool-func {false} {false} a→b b→a = refl
+
+bool-≡-? : (a b : Bool) → Dec ( a ≡ b )
+bool-≡-? true true = yes refl
+bool-≡-? true false = no (λ ())
+bool-≡-? false true = no (λ ())
+bool-≡-? false false = yes refl
+
+¬-bool-t : {a : Bool} →  ¬ ( a ≡ true ) → a ≡ false
+¬-bool-t {true} ne = ⊥-elim ( ne refl )
+¬-bool-t {false} ne = refl
+
+¬-bool-f : {a : Bool} →  ¬ ( a ≡ false ) → a ≡ true
+¬-bool-f {true} ne = refl
+¬-bool-f {false} ne = ⊥-elim ( ne refl )
+
+¬-bool : {a : Bool} →  a ≡ false  → a ≡ true → ⊥
+¬-bool refl ()
+
+lemma-∧-0 : {a b : Bool} → a /\ b ≡ true → a ≡ false → ⊥
+lemma-∧-0 {true} {true} refl ()
+lemma-∧-0 {true} {false} ()
+lemma-∧-0 {false} {true} ()
+lemma-∧-0 {false} {false} ()
+
+lemma-∧-1 : {a b : Bool} → a /\ b ≡ true → b ≡ false → ⊥
+lemma-∧-1 {true} {true} refl ()
+lemma-∧-1 {true} {false} ()
+lemma-∧-1 {false} {true} ()
+lemma-∧-1 {false} {false} ()
+
+bool-and-tt : {a b : Bool} → a ≡ true → b ≡ true → ( a /\ b ) ≡ true
+bool-and-tt refl refl = refl
+
+bool-∧→tt-0 : {a b : Bool} → ( a /\ b ) ≡ true → a ≡ true 
+bool-∧→tt-0 {true} {true} refl = refl
+bool-∧→tt-0 {false} {_} ()
+
+bool-∧→tt-1 : {a b : Bool} → ( a /\ b ) ≡ true → b ≡ true 
+bool-∧→tt-1 {true} {true} refl = refl
+bool-∧→tt-1 {true} {false} ()
+bool-∧→tt-1 {false} {false} ()
+
+bool-or-1 : {a b : Bool} → a ≡ false → ( a \/ b ) ≡ b 
+bool-or-1 {false} {true} refl = refl
+bool-or-1 {false} {false} refl = refl
+bool-or-2 : {a b : Bool} → b ≡ false → (a \/ b ) ≡ a 
+bool-or-2 {true} {false} refl = refl
+bool-or-2 {false} {false} refl = refl
+
+bool-or-3 : {a : Bool} → ( a \/ true ) ≡ true 
+bool-or-3 {true} = refl
+bool-or-3 {false} = refl
+
+bool-or-31 : {a b : Bool} → b ≡ true  → ( a \/ b ) ≡ true 
+bool-or-31 {true} {true} refl = refl
+bool-or-31 {false} {true} refl = refl
+
+bool-or-4 : {a : Bool} → ( true \/ a ) ≡ true 
+bool-or-4 {true} = refl
+bool-or-4 {false} = refl
+
+bool-or-41 : {a b : Bool} → a ≡ true  → ( a \/ b ) ≡ true 
+bool-or-41 {true} {b} refl = refl
+
+bool-and-1 : {a b : Bool} →  a ≡ false → (a /\ b ) ≡ false
+bool-and-1 {false} {b} refl = refl
+bool-and-2 : {a b : Bool} →  b ≡ false → (a /\ b ) ≡ false
+bool-and-2 {true} {false} refl = refl
+bool-and-2 {false} {false} refl = refl
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Paper/src/agda/logic.agda.replaced	Sun Apr 24 23:13:44 2022 +0900
@@ -0,0 +1,152 @@
+module logic where
+
+open import Level
+open import Relation.Nullary
+open import Relation.Binary hiding(_⇔_)
+open import Data.Empty
+
+
+data Bool : Set where
+    true : Bool
+    false : Bool
+
+record  _!$\wedge$!_  {n m : Level} (A  : Set n) ( B : Set m ) : Set (n !$\sqcup$! m) where
+   field
+      proj1 : A
+      proj2 : B
+
+data  _√_  {n m : Level} (A  : Set n) ( B : Set m ) : Set (n !$\sqcup$! m) where
+   case1 : A !$\rightarrow$! A √ B
+   case2 : B !$\rightarrow$! A √ B
+
+_⇔_ : {n m : Level } !$\rightarrow$! ( A : Set n ) ( B : Set m )  !$\rightarrow$! Set (n !$\sqcup$! m)
+_⇔_ A B =  ( A !$\rightarrow$! B ) !$\wedge$! ( B !$\rightarrow$! A )
+
+contra-position : {n m : Level } {A : Set n} {B : Set m} !$\rightarrow$! (A !$\rightarrow$! B) !$\rightarrow$! !$\neg$! B !$\rightarrow$! !$\neg$! A
+contra-position {n} {m} {A} {B}  f !$\neg$!b a = !$\neg$!b ( f a )
+
+double-neg : {n  : Level } {A : Set n} !$\rightarrow$! A !$\rightarrow$! !$\neg$! !$\neg$! A
+double-neg A notnot = notnot A
+
+double-neg2 : {n  : Level } {A : Set n} !$\rightarrow$! !$\neg$! !$\neg$! !$\neg$! A !$\rightarrow$! !$\neg$! A
+double-neg2 notnot A = notnot ( double-neg A )
+
+de-morgan : {n  : Level } {A B : Set n} !$\rightarrow$!  A !$\wedge$! B  !$\rightarrow$! !$\neg$! ( (!$\neg$! A ) √ (!$\neg$! B ) )
+de-morgan {n} {A} {B} and (case1 !$\neg$!A) = !$\bot$!-elim ( !$\neg$!A ( _!$\wedge$!_.proj1 and ))
+de-morgan {n} {A} {B} and (case2 !$\neg$!B) = !$\bot$!-elim ( !$\neg$!B ( _!$\wedge$!_.proj2 and ))
+
+dont-or : {n m : Level} {A  : Set n} { B : Set m } !$\rightarrow$!  A √ B !$\rightarrow$! !$\neg$! A !$\rightarrow$! B
+dont-or {A} {B} (case1 a) !$\neg$!A = !$\bot$!-elim ( !$\neg$!A a )
+dont-or {A} {B} (case2 b) !$\neg$!A = b
+
+dont-orb : {n m : Level} {A  : Set n} { B : Set m } !$\rightarrow$!  A √ B !$\rightarrow$! !$\neg$! B !$\rightarrow$! A
+dont-orb {A} {B} (case2 b) !$\neg$!B = !$\bot$!-elim ( !$\neg$!B b )
+dont-orb {A} {B} (case1 a) !$\neg$!B = a
+
+
+
+infixr  130 _!$\wedge$!_
+infixr  140 _√_
+infixr  150 _⇔_
+
+_!$\wedge$!_ : Bool !$\rightarrow$! Bool !$\rightarrow$! Bool 
+true !$\wedge$! true = true
+_ !$\wedge$! _ = false
+
+_\/_ : Bool !$\rightarrow$! Bool !$\rightarrow$! Bool 
+false \/ false = false
+_ \/ _ = true
+
+not_ : Bool !$\rightarrow$! Bool 
+not true = false
+not false = true 
+
+_<=>_ : Bool !$\rightarrow$! Bool !$\rightarrow$! Bool  
+true <=> true = true
+false <=> false = true
+_ <=> _ = false
+
+infixr  130 _\/_
+infixr  140 _!$\wedge$!_
+
+open import Relation.Binary.PropositionalEquality
+
+
+!$\equiv$!-Bool-func : {A B : Bool } !$\rightarrow$! ( A !$\equiv$! true !$\rightarrow$! B !$\equiv$! true ) !$\rightarrow$! ( B !$\equiv$! true !$\rightarrow$! A !$\equiv$! true ) !$\rightarrow$! A !$\equiv$! B
+!$\equiv$!-Bool-func {true} {true} a!$\rightarrow$!b b!$\rightarrow$!a = refl
+!$\equiv$!-Bool-func {false} {true} a!$\rightarrow$!b b!$\rightarrow$!a with b!$\rightarrow$!a refl
+... | ()
+!$\equiv$!-Bool-func {true} {false} a!$\rightarrow$!b b!$\rightarrow$!a with a!$\rightarrow$!b refl
+... | ()
+!$\equiv$!-Bool-func {false} {false} a!$\rightarrow$!b b!$\rightarrow$!a = refl
+
+bool-!$\equiv$!-? : (a b : Bool) !$\rightarrow$! Dec ( a !$\equiv$! b )
+bool-!$\equiv$!-? true true = yes refl
+bool-!$\equiv$!-? true false = no (!$\lambda$! ())
+bool-!$\equiv$!-? false true = no (!$\lambda$! ())
+bool-!$\equiv$!-? false false = yes refl
+
+!$\neg$!-bool-t : {a : Bool} !$\rightarrow$!  !$\neg$! ( a !$\equiv$! true ) !$\rightarrow$! a !$\equiv$! false
+!$\neg$!-bool-t {true} ne = !$\bot$!-elim ( ne refl )
+!$\neg$!-bool-t {false} ne = refl
+
+!$\neg$!-bool-f : {a : Bool} !$\rightarrow$!  !$\neg$! ( a !$\equiv$! false ) !$\rightarrow$! a !$\equiv$! true
+!$\neg$!-bool-f {true} ne = refl
+!$\neg$!-bool-f {false} ne = !$\bot$!-elim ( ne refl )
+
+!$\neg$!-bool : {a : Bool} !$\rightarrow$!  a !$\equiv$! false  !$\rightarrow$! a !$\equiv$! true !$\rightarrow$! !$\bot$!
+!$\neg$!-bool refl ()
+
+lemma-!$\wedge$!-0 : {a b : Bool} !$\rightarrow$! a !$\wedge$! b !$\equiv$! true !$\rightarrow$! a !$\equiv$! false !$\rightarrow$! !$\bot$!
+lemma-!$\wedge$!-0 {true} {true} refl ()
+lemma-!$\wedge$!-0 {true} {false} ()
+lemma-!$\wedge$!-0 {false} {true} ()
+lemma-!$\wedge$!-0 {false} {false} ()
+
+lemma-!$\wedge$!-1 : {a b : Bool} !$\rightarrow$! a !$\wedge$! b !$\equiv$! true !$\rightarrow$! b !$\equiv$! false !$\rightarrow$! !$\bot$!
+lemma-!$\wedge$!-1 {true} {true} refl ()
+lemma-!$\wedge$!-1 {true} {false} ()
+lemma-!$\wedge$!-1 {false} {true} ()
+lemma-!$\wedge$!-1 {false} {false} ()
+
+bool-and-tt : {a b : Bool} !$\rightarrow$! a !$\equiv$! true !$\rightarrow$! b !$\equiv$! true !$\rightarrow$! ( a !$\wedge$! b ) !$\equiv$! true
+bool-and-tt refl refl = refl
+
+bool-!$\wedge$!!$\rightarrow$!tt-0 : {a b : Bool} !$\rightarrow$! ( a !$\wedge$! b ) !$\equiv$! true !$\rightarrow$! a !$\equiv$! true 
+bool-!$\wedge$!!$\rightarrow$!tt-0 {true} {true} refl = refl
+bool-!$\wedge$!!$\rightarrow$!tt-0 {false} {_} ()
+
+bool-!$\wedge$!!$\rightarrow$!tt-1 : {a b : Bool} !$\rightarrow$! ( a !$\wedge$! b ) !$\equiv$! true !$\rightarrow$! b !$\equiv$! true 
+bool-!$\wedge$!!$\rightarrow$!tt-1 {true} {true} refl = refl
+bool-!$\wedge$!!$\rightarrow$!tt-1 {true} {false} ()
+bool-!$\wedge$!!$\rightarrow$!tt-1 {false} {false} ()
+
+bool-or-1 : {a b : Bool} !$\rightarrow$! a !$\equiv$! false !$\rightarrow$! ( a \/ b ) !$\equiv$! b 
+bool-or-1 {false} {true} refl = refl
+bool-or-1 {false} {false} refl = refl
+bool-or-2 : {a b : Bool} !$\rightarrow$! b !$\equiv$! false !$\rightarrow$! (a \/ b ) !$\equiv$! a 
+bool-or-2 {true} {false} refl = refl
+bool-or-2 {false} {false} refl = refl
+
+bool-or-3 : {a : Bool} !$\rightarrow$! ( a \/ true ) !$\equiv$! true 
+bool-or-3 {true} = refl
+bool-or-3 {false} = refl
+
+bool-or-31 : {a b : Bool} !$\rightarrow$! b !$\equiv$! true  !$\rightarrow$! ( a \/ b ) !$\equiv$! true 
+bool-or-31 {true} {true} refl = refl
+bool-or-31 {false} {true} refl = refl
+
+bool-or-4 : {a : Bool} !$\rightarrow$! ( true \/ a ) !$\equiv$! true 
+bool-or-4 {true} = refl
+bool-or-4 {false} = refl
+
+bool-or-41 : {a b : Bool} !$\rightarrow$! a !$\equiv$! true  !$\rightarrow$! ( a \/ b ) !$\equiv$! true 
+bool-or-41 {true} {b} refl = refl
+
+bool-and-1 : {a b : Bool} !$\rightarrow$!  a !$\equiv$! false !$\rightarrow$! (a !$\wedge$! b ) !$\equiv$! false
+bool-and-1 {false} {b} refl = refl
+bool-and-2 : {a b : Bool} !$\rightarrow$!  b !$\equiv$! false !$\rightarrow$! (a !$\wedge$! b ) !$\equiv$! false
+bool-and-2 {true} {false} refl = refl
+bool-and-2 {false} {false} refl = refl
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Paper/src/agda/plus.agda	Sun Apr 24 23:13:44 2022 +0900
@@ -0,0 +1,6 @@
+plus : (x y : ℕ) → ℕ
+plus x zero  = x
+plus x (suc y) = plus (suc x) y
+
+-- plus 10 20
+-- 30
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Paper/src/agda/plus.agda.replaced	Sun Apr 24 23:13:44 2022 +0900
@@ -0,0 +1,6 @@
+plus : (x y : !$\mathbb{N}$!) !$\rightarrow$! !$\mathbb{N}$!
+plus x zero  = x
+plus x (suc y) = plus (suc x) y
+
+-- plus 10 20
+-- 30
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Paper/src/agda/plus2.agda	Sun Apr 24 23:13:44 2022 +0900
@@ -0,0 +1,10 @@
+module plus2 where
+
+open import Data.Nat hiding (_+_)
+
+_+_ : (x y : ℕ) → ℕ
+x + zero = x
+x + suc y = (suc x) + y
+
+-- 10 + 20
+-- 30
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Paper/src/agda/plus2.agda.replaced	Sun Apr 24 23:13:44 2022 +0900
@@ -0,0 +1,10 @@
+module plus2 where
+
+open import Data.Nat hiding (_+_)
+
+_+_ : (x y : !$\mathbb{N}$!) !$\rightarrow$! !$\mathbb{N}$!
+x + zero = x
+x + suc y = (suc x) + y
+
+-- 10 + 20
+-- 30
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Paper/src/agda/rbt_imple.agda	Sun Apr 24 23:13:44 2022 +0900
@@ -0,0 +1,140 @@
+module rbt_imple where
+
+open import Level renaming ( suc to succ ; zero to Zero )
+open import Relation.Binary
+open import Data.Nat hiding (_≀_  ; _≀?_)
+open import Data.List hiding ([_])
+open import Data.Product
+open import Data.Nat.Properties as NP
+
+open import rbt_t
+
+--このmutalの郚分は別堎所に曞いおimportしたい。その方が綺麗に怜蚌できそう
+mutual
+  data  right-List : Set where
+    [] : right-List
+    [_] : ℕ → right-List
+    _∷>_Cond_ : (x : ℕ) → (xs : right-List ) → (p : x Data.Nat.> top-r xs) → right-List
+
+  top-r : right-List → ℕ
+  top-r [] = {!!}
+  top-r [ x ] = x
+  top-r (x ∷> l Cond x₁) = x
+
+  insert-r : ℕ → right-List → right-List
+  insert-r x l with l
+  ... | [] = {!!}
+  ... | [ y ] = ?
+  ... | y ∷> ys Cond p with <-cmp x y
+  ... | tri< a ¬b ¬c = l
+  ... | tri≈ ¬a b ¬c = l
+  ... | tri> ¬a ¬b c = x ∷> l Cond c
+
+  data  left-List : Set where
+    [] : left-List
+    [_] : ℕ -> left-List
+    _<∷_Cond_ : (x : ℕ) -> (xs : left-List ) -> (p : x Data.Nat.< top-l xs) -> left-List
+
+  top-l : left-List → ℕ
+  top-l [] = {!!}
+  top-l [ x ] = x
+  top-l (x <∷ l Cond x₁) = x
+
+  insert-l : ℕ -> left-List -> left-List
+  insert-l x [] = [ x ]
+  insert-l x l@([ y ]) with <-cmp x y
+  ... | tri< a ¬b ¬c = x <∷ l Cond a
+  ... | tri≈ ¬a b ¬c = l
+  ... | tri> ¬a ¬b c = l
+  insert-l x l@(y <∷ ys Cond p) with <-cmp x y
+  ... | tri< a ¬b ¬c = x <∷ l Cond a
+  ... | tri≈ ¬a b ¬c = l
+  ... | tri> ¬a ¬b c = l
+
+
+record meta : Set where
+  field
+    deeps : ℕ
+    black-nodes : ℕ
+    l-list : left-List
+    r-list : right-List
+open meta
+
+record tree-meta (A B C D : Set) : Set where
+  field
+    key : A
+    meta-data : B
+    ltree : C
+    rtree : D
+open tree
+
+{-
+
+data rbt-meta : Set where
+  bt-empty : rbt-meta
+  bt-node  : (node : tree-meta (node col ℕ ) meta rbt-meta rbt-meta ) → rbt-meta
+
+test'1 = whileTestPCall' bt-empty 0
+test'2 = whileTestPCall' (rbt_t.Env.vart test'1) 1
+test'3 = whileTestPCall' (rbt_t.Env.vart test'2) 2
+test'4 = whileTestPCall' (rbt_t.Env.vart test'3) 3
+test'5 = whileTestPCall' (rbt_t.Env.vart test'4) 4
+test'6 = whileTestPCall' (rbt_t.Env.vart test'5) 5
+test'7 = whileTestPCall' (rbt_t.Env.vart test'6) 6
+test'8 = whileTestPCall' (rbt_t.Env.vart test'7) 7
+test'9 = whileTestPCall' (rbt_t.Env.vart test'8) 8
+test'10 = whileTestPCall' (rbt_t.Env.vart test'9) 9
+test'11 = whileTestPCall' (rbt_t.Env.vart test'10) 10
+test'12 = whileTestPCall' (rbt_t.Env.vart test'11) 11
+test'13 = whileTestPCall' (rbt_t.Env.vart test'12) 12
+test'14 = whileTestPCall' (rbt_t.Env.vart test'13) 13
+test'15 = whileTestPCall' (rbt_t.Env.vart test'14) 14
+
+testdata = rbt_t.Env.vart test'7
+
+-- ここからmetaの䜜成
+
+makemeta-comm : rbt_t.rbt → ℕ → meta → rbt-meta
+
+--make meta black nodes
+makemeta-black-nodes :  rbt_t.rbt → ℕ → meta → rbt-meta
+makemeta-black-nodes = {!!}
+
+-- make meta deeps
+set-black-nodes : rbt_t.rbt → meta → ℕ
+set-black-nodes rbt fls with rbt
+... | bt-empty = (suc (black-nodes fls) )
+... | bt-node node with (node.coler (key node))
+... | black = (suc (black-nodes fls) )
+... | red = (black-nodes fls)
+
+--make meta list
+makemeta-comm rbt num fls with rbt
+... | bt-empty = bt-empty
+... | bt-node node = bt-node ( record { key = key node
+  ; meta-data = ( record {deeps = (deeps fls)
+    ; black-nodes = set-black-nodes rbt fls
+    ; l-list = insert-l (node.number (key node)) (l-list fls)
+    ; r-list = insert-r (node.number (key node))  (r-list fls) } )
+  ; ltree = makemeta-comm (ltree node) (node.number (key node)) ( record { deeps = (suc (deeps fls))
+    ; black-nodes = set-black-nodes rbt fls
+    ; l-list = insert-l (node.number (key node)) (l-list fls)
+    ; r-list = (r-list fls) } )
+  ; rtree = makemeta-comm (rtree node) (node.number (key node)) ( record { deeps = (suc (deeps fls))
+    ; black-nodes = set-black-nodes rbt fls
+    ; l-list = (l-list fls)
+    ; r-list = insert-r (node.number (key node)) (r-list fls) } ) })
+
+-- init
+makemeta : rbt → rbt-meta
+makemeta rbt with rbt
+... | bt-empty = bt-empty
+... | bt-node node = bt-node ( record { key = key node
+  ; meta-data =  ( record { deeps = 0 ; black-nodes = 1; l-list = [] ; r-list = [] } )
+  ; ltree = makemeta-comm (ltree node) (node.number (key node))
+    ( record { deeps = 1 ; black-nodes = 1 ; l-list = insert-l (node.number (key node)) [] ; r-list = [] } )
+  ; rtree = makemeta-comm (rtree node) (node.number (key node))
+    ( record { deeps = 1 ; black-nodes = 1 ; l-list = [] ; r-list = insert-r (node.number (key node)) [] } ) })
+
+---test11 = makemeta (rbt_t.Env.vart test'11)
+-}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Paper/src/agda/rbt_imple.agda.replaced	Sun Apr 24 23:13:44 2022 +0900
@@ -0,0 +1,140 @@
+module rbt_imple where
+
+open import Level renaming ( suc to succ ; zero to Zero )
+open import Relation.Binary
+open import Data.Nat hiding (_!$\leq$!_  ; _!$\leq$!?_)
+open import Data.List hiding ([_])
+open import Data.Product
+open import Data.Nat.Properties as NP
+
+open import rbt_t
+
+--このmutalの郚分は別堎所に曞いおimportしたい。その方が綺麗に怜蚌できそう
+mutual
+  data  right-List : Set where
+    [] : right-List
+    [_] : !$\mathbb{N}$! !$\rightarrow$! right-List
+    _!$\text{::}$!>_Cond_ : (x : !$\mathbb{N}$!) !$\rightarrow$! (xs : right-List ) !$\rightarrow$! (p : x Data.Nat.> top-r xs) !$\rightarrow$! right-List
+
+  top-r : right-List !$\rightarrow$! !$\mathbb{N}$!
+  top-r [] = {!!}
+  top-r [ x ] = x
+  top-r (x !$\text{::}$!> l Cond x!$\_{1}$!) = x
+
+  insert-r : !$\mathbb{N}$! !$\rightarrow$! right-List !$\rightarrow$! right-List
+  insert-r x l with l
+  ... | [] = {!!}
+  ... | [ y ] = ?
+  ... | y !$\text{::}$!> ys Cond p with <-cmp x y
+  ... | tri< a !$\neg$!b !$\neg$!c = l
+  ... | tri!$\approx$! !$\neg$!a b !$\neg$!c = l
+  ... | tri> !$\neg$!a !$\neg$!b c = x !$\text{::}$!> l Cond c
+
+  data  left-List : Set where
+    [] : left-List
+    [_] : !$\mathbb{N}$! !$\rightarrow$! left-List
+    _<!$\text{::}$!_Cond_ : (x : !$\mathbb{N}$!) !$\rightarrow$! (xs : left-List ) !$\rightarrow$! (p : x Data.Nat.< top-l xs) !$\rightarrow$! left-List
+
+  top-l : left-List !$\rightarrow$! !$\mathbb{N}$!
+  top-l [] = {!!}
+  top-l [ x ] = x
+  top-l (x <!$\text{::}$! l Cond x!$\_{1}$!) = x
+
+  insert-l : !$\mathbb{N}$! !$\rightarrow$! left-List !$\rightarrow$! left-List
+  insert-l x [] = [ x ]
+  insert-l x l@([ y ]) with <-cmp x y
+  ... | tri< a !$\neg$!b !$\neg$!c = x <!$\text{::}$! l Cond a
+  ... | tri!$\approx$! !$\neg$!a b !$\neg$!c = l
+  ... | tri> !$\neg$!a !$\neg$!b c = l
+  insert-l x l@(y <!$\text{::}$! ys Cond p) with <-cmp x y
+  ... | tri< a !$\neg$!b !$\neg$!c = x <!$\text{::}$! l Cond a
+  ... | tri!$\approx$! !$\neg$!a b !$\neg$!c = l
+  ... | tri> !$\neg$!a !$\neg$!b c = l
+
+
+record meta : Set where
+  field
+    deeps : !$\mathbb{N}$!
+    black-nodes : !$\mathbb{N}$!
+    l-list : left-List
+    r-list : right-List
+open meta
+
+record tree-meta (A B C D : Set) : Set where
+  field
+    key : A
+    meta-data : B
+    ltree : C
+    rtree : D
+open tree
+
+{-
+
+data rbt-meta : Set where
+  bt-empty : rbt-meta
+  bt-node  : (node : tree-meta (node col !$\mathbb{N}$! ) meta rbt-meta rbt-meta ) !$\rightarrow$! rbt-meta
+
+test!$\prime$!1 = whileTestPCall!$\prime$! bt-empty 0
+test!$\prime$!2 = whileTestPCall!$\prime$! (rbt_t.Env.vart test!$\prime$!1) 1
+test!$\prime$!3 = whileTestPCall!$\prime$! (rbt_t.Env.vart test!$\prime$!2) 2
+test!$\prime$!4 = whileTestPCall!$\prime$! (rbt_t.Env.vart test!$\prime$!3) 3
+test!$\prime$!5 = whileTestPCall!$\prime$! (rbt_t.Env.vart test!$\prime$!4) 4
+test!$\prime$!6 = whileTestPCall!$\prime$! (rbt_t.Env.vart test!$\prime$!5) 5
+test!$\prime$!7 = whileTestPCall!$\prime$! (rbt_t.Env.vart test!$\prime$!6) 6
+test!$\prime$!8 = whileTestPCall!$\prime$! (rbt_t.Env.vart test!$\prime$!7) 7
+test!$\prime$!9 = whileTestPCall!$\prime$! (rbt_t.Env.vart test!$\prime$!8) 8
+test!$\prime$!10 = whileTestPCall!$\prime$! (rbt_t.Env.vart test!$\prime$!9) 9
+test!$\prime$!11 = whileTestPCall!$\prime$! (rbt_t.Env.vart test!$\prime$!10) 10
+test!$\prime$!12 = whileTestPCall!$\prime$! (rbt_t.Env.vart test!$\prime$!11) 11
+test!$\prime$!13 = whileTestPCall!$\prime$! (rbt_t.Env.vart test!$\prime$!12) 12
+test!$\prime$!14 = whileTestPCall!$\prime$! (rbt_t.Env.vart test!$\prime$!13) 13
+test!$\prime$!15 = whileTestPCall!$\prime$! (rbt_t.Env.vart test!$\prime$!14) 14
+
+testdata = rbt_t.Env.vart test!$\prime$!7
+
+-- ここからmetaの䜜成
+
+makemeta-comm : rbt_t.rbt !$\rightarrow$! !$\mathbb{N}$! !$\rightarrow$! meta !$\rightarrow$! rbt-meta
+
+--make meta black nodes
+makemeta-black-nodes :  rbt_t.rbt !$\rightarrow$! !$\mathbb{N}$! !$\rightarrow$! meta !$\rightarrow$! rbt-meta
+makemeta-black-nodes = {!!}
+
+-- make meta deeps
+set-black-nodes : rbt_t.rbt !$\rightarrow$! meta !$\rightarrow$! !$\mathbb{N}$!
+set-black-nodes rbt fls with rbt
+... | bt-empty = (suc (black-nodes fls) )
+... | bt-node node with (node.coler (key node))
+... | black = (suc (black-nodes fls) )
+... | red = (black-nodes fls)
+
+--make meta list
+makemeta-comm rbt num fls with rbt
+... | bt-empty = bt-empty
+... | bt-node node = bt-node ( record { key = key node
+  ; meta-data = ( record {deeps = (deeps fls)
+    ; black-nodes = set-black-nodes rbt fls
+    ; l-list = insert-l (node.number (key node)) (l-list fls)
+    ; r-list = insert-r (node.number (key node))  (r-list fls) } )
+  ; ltree = makemeta-comm (ltree node) (node.number (key node)) ( record { deeps = (suc (deeps fls))
+    ; black-nodes = set-black-nodes rbt fls
+    ; l-list = insert-l (node.number (key node)) (l-list fls)
+    ; r-list = (r-list fls) } )
+  ; rtree = makemeta-comm (rtree node) (node.number (key node)) ( record { deeps = (suc (deeps fls))
+    ; black-nodes = set-black-nodes rbt fls
+    ; l-list = (l-list fls)
+    ; r-list = insert-r (node.number (key node)) (r-list fls) } ) })
+
+-- init
+makemeta : rbt !$\rightarrow$! rbt-meta
+makemeta rbt with rbt
+... | bt-empty = bt-empty
+... | bt-node node = bt-node ( record { key = key node
+  ; meta-data =  ( record { deeps = 0 ; black-nodes = 1; l-list = [] ; r-list = [] } )
+  ; ltree = makemeta-comm (ltree node) (node.number (key node))
+    ( record { deeps = 1 ; black-nodes = 1 ; l-list = insert-l (node.number (key node)) [] ; r-list = [] } )
+  ; rtree = makemeta-comm (rtree node) (node.number (key node))
+    ( record { deeps = 1 ; black-nodes = 1 ; l-list = [] ; r-list = insert-r (node.number (key node)) [] } ) })
+
+---test11 = makemeta (rbt_t.Env.vart test!$\prime$!11)
+-}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Paper/src/agda/rbt_t.agda	Sun Apr 24 23:13:44 2022 +0900
@@ -0,0 +1,283 @@
+module rbt_t where
+
+open import Data.Nat hiding (compare)
+open import Data.Nat.Properties as NatProp -- <-cmp
+open import Relation.Binary
+open import Data.List
+
+-- → t を適甚するために必芁だった
+open import Level renaming ( suc to succ ; zero to Zero )
+open import Level
+
+
+data col : Set where
+  black : col
+  red : col
+
+record node (A B : Set) : Set where
+  field
+    coler : A
+    number : B
+open node
+
+record tree (A B C : Set) : Set where
+  field
+    key : A
+    ltree : B
+    rtree : C
+open tree
+
+data rbt : Set where
+  bt-empty : rbt
+  bt-node  : (node : tree (node col ℕ) rbt rbt ) → rbt
+
+record Env : Set (succ Zero) where
+  field
+    vart : rbt
+    varn : ℕ
+    varl : List rbt
+open Env
+
+
+whileTest-next : {l : Level} {t : Set l}  → (c10 : rbt) → (n : ℕ) → (list : List rbt) → (next : Env → t) → (exit : Env → t) → t
+whileTest-next c10 n list next exit = next (record {vart = c10 ; varn = n ; varl = list} )
+
+merge-tree :  {le : Level} {t : Set le} → Env → (next : Env → t) → (exit : Env → t) → t
+
+-- 党おmerge-treeぞ
+split : {le : Level} {t : Set le} → Env → (next : Env → t) → (exit : Env → t) → t
+split node@record { vart = bt-empty ; varn = varn ; varl = varl } next exit = exit node
+split node@record { vart = (bt-node record { key = key ; ltree = bt-empty ; rtree = rtree }) ; varn = varn ; varl = varl } next exit = exit node
+split node@record { vart = (bt-node record { key = key ; ltree = (bt-node node₁) ; rtree = bt-empty }) ; varn = varn ; varl = varl } next exit = exit node
+split record { vart = (bt-node record { key = record { coler = coler₁ ; number = number₁ }
+  ; ltree = (bt-node record { key = record { coler = ly ; number = ln } ; ltree = ll ; rtree = lr })
+  ; rtree = (bt-node record { key = record { coler = ry ; number = rn } ; ltree = rl ; rtree = rr }) })
+  ; varn = varn ; varl = varl } next exit
+  = next record { vart = (bt-node record { key = record { coler = red ; number = number₁ }
+    ; ltree = (bt-node record { key = record { coler = black ; number = ln } ; ltree = ll ; rtree = lr })
+    ; rtree = (bt-node record { key = record { coler = black ; number = rn } ; ltree = rl ; rtree = rr }) })
+    ; varn = varn ; varl = varl }
+
+
+-- 右回転
+-- 実行時splitぞ、それ以倖はmerge-treeぞ
+merge-rotate-right : {le : Level} {t : Set le} → Env → (next : Env → t) → (exit : Env → t) → t
+merge-rotate-right node@record { vart = bt-empty ; varn = varn ; varl = varl } next exit = exit node
+merge-rotate-right node@record { vart = bt-node record { key = record { coler = coler ; number = number } ; ltree = bt-empty ; rtree = r } ; varn = varn ; varl = varl } next exit = exit node
+merge-rotate-right record { vart = bt-node record { key = record { coler = y ; number = x }
+  ; ltree = (bt-node record { key =  record { coler = ly ; number = lx } ; ltree = ll ; rtree = lr })
+  ; rtree = r }
+  ; varn = varn ; varl = varl } next exit
+    = next record { vart = bt-node record { key = record { coler = y ; number = lx }
+      ; ltree = ll
+      ; rtree = (bt-node record { key = record { coler = red ; number = x } ; ltree = lr; rtree = r }) }
+      ; varn = varn ; varl = varl }
+
+
+-- split
+split-branch : {le : Level} {t : Set le} → Env → (next : Env → t) → (exit : Env → t) → t
+split-branch node@record{ vart = bt-empty ; varn = varn ; varl = varl } next exit = exit node
+split-branch node@record{ vart = bt-node record { key = key ; ltree = bt-empty ; rtree = rtree } ; varn = varn ; varl = varl } next exit = exit node
+split-branch node@record{ vart = bt-node record { key = key₁ ; ltree = (bt-node record { key = record { coler = lc ; number = number } ; ltree = bt-empty ; rtree = lr }) ; rtree = rtree } ; varn = varn ; varl = varl } next exit = exit node
+split-branch node@record{ vart = bt-node record { key = key₁ ; ltree = (bt-node record { key = record { coler = black ; number = number } ; ltree = (bt-node node₁) ; rtree = lr }) ; rtree = rtree } ; varn = varn ; varl = varl } next exit = exit node
+split-branch node@record{ vart = bt-node record { key = key₁ ; ltree = (bt-node record { key = record { coler = red ; number = number₁ } ; ltree = (bt-node record { key = record { coler = black ; number = number } ; ltree = ltree ; rtree = rtree₁ }) ; rtree = lr }) ; rtree = rtree } ; varn = varn ; varl = varl } next exit = exit node
+split-branch node@record{ vart = bt-node record { key = key₁
+  ; ltree = (bt-node record { key = record { coler = red ; number = number₁ }
+    ; ltree = (bt-node record { key = record { coler = red ; number = number } ; ltree = ltree ; rtree = rtree₁ })
+    ; rtree = lr })
+  ; rtree = rtree }
+  ; varn = varn ; varl = varl } next exit
+  = next node
+
+
+-- 巊回転、exitはsplit_branchぞ nextもsplit_branchぞ
+merge-rotate-left : {le : Level} {t : Set le} → Env → (next : Env → t) → (exit : Env → t) → t
+merge-rotate-left node@record { vart = bt-empty ; varn = varn ; varl = varl }  next exit = exit node
+merge-rotate-left node@record { vart = bt-node record { key = record { coler = coler ; number = number } ; ltree = ltree ; rtree = bt-empty } ; varn = varn ; varl = varl } next exit = exit node
+merge-rotate-left record { vart = bt-node record { key = record { coler = y ; number = x } ; ltree = l ; rtree = (bt-node record { key = record { coler = ry ; number = rx } ; ltree = rl ; rtree = rr }) } ; varn = varn ; varl = varl } next exit
+  = next record { vart = bt-node record { key = record { coler = y ; number = rx }
+    ; ltree = (bt-node record { key = record { coler = red ; number = x } ; ltree = l ; rtree = rl })
+    ; rtree = rr}
+    ; varn = varn ; varl = varl }
+
+
+-- skew exitがsplitぞ nextが巊回転
+skew-bt : {le : Level} {t : Set le} → Env → (next : Env → t) → (exit : Env → t) → t
+skew-bt node@record { vart = bt-empty ; varn = varn ; varl = varl } next exit =  exit node
+skew-bt node@record { vart = (bt-node record { key = key ; ltree = ltree ; rtree = bt-empty }) ; varn = varn ; varl = varl } next exit = exit node
+skew-bt node@record { vart = (bt-node record { key = key₁
+  ; ltree = ltree₁
+  ; rtree = (bt-node record { key = record { coler = black ; number = number }
+  ; ltree = ltree ; rtree = rtree }) }) ; varn = varn ; varl = varl } next exit
+    = exit node
+skew-bt node@record { vart = (bt-node record { key = key₁
+  ; ltree = ltree₁
+  ; rtree = (bt-node record { key = record { coler = red ; number = number } ; ltree = ltree ; rtree = rtree }) })
+  ; varn = varn ; varl = varl } next exit
+    = next node
+
+
+set-node-coler : Env → Env
+set-node-coler node@record { vart = bt-empty ; varn = varn ; varl = varl } = node
+set-node-coler record { vart = (bt-node record { key = record { coler = coler ; number = number } ; ltree = ltree ; rtree = rtree }) ; varn = varn ; varl = varl }
+  = record { vart = (bt-node record { key = record { coler = black ; number = number } ; ltree = ltree ; rtree = rtree }) ; varn = varn ; varl = varl }
+
+init-node-coler : {le : Level} {t : Set le} → Env → (next : Env → t) → (exit : Env → t) → t
+init-node-coler node@record { vart = bt-empty ; varn = varn ; varl = varl } next exit = exit node
+init-node-coler record { vart = (bt-node record { key = record { coler = coler ; number = number } ; ltree = ltree ; rtree = rtree }) ; varn = varn ; varl = varl } next exit
+  = exit record { vart = (bt-node record { key = record { coler = black ; number = number } ; ltree = ltree ; rtree = rtree }) ; varn = varn ; varl = varl }
+
+--修正前
+merge-tree node@record { vart = vart ; varn = varn ; varl = [] } next exit = exit node
+merge-tree node@record { vart = vart ; varn = varn ; varl = (bt-empty ∷ varl₁) } next exit = exit node
+
+merge-tree record { vart = vart ; varn = varn ; varl = (bt-node record { key = record { coler = coler ; number = number } ; ltree = ltree ; rtree = rtree } ∷ varl₁) } next exit with <-cmp varn number
+
+merge-tree record { vart = vart ; varn = varn ; varl = (bt-node record { key = record { coler = coler ; number = number } ; ltree = ltree ; rtree = rtree } ∷ varl₁) } next exit | tri≈ ¬a b ¬c
+  = next record { vart = (bt-node record { key = record { coler = coler ; number = number } ; ltree = ltree ; rtree = rtree }) ; varn = number ; varl = varl₁ }
+
+merge-tree record { vart = vart ; varn = varn ; varl = (bt-node record { key = record { coler = coler ; number = number } ; ltree = ltree ; rtree = rtree } ∷ varl₁) } next exit | tri> ¬a ¬b c
+  = next record { vart = (bt-node record { key = record { coler = coler ; number = number } ; ltree = ltree ; rtree = vart }) ; varn = number ; varl = varl₁ }
+
+merge-tree record { vart = vart ; varn = varn ; varl = (bt-node record { key = record { coler = coler ; number = number } ; ltree = ltree ; rtree = rtree } ∷ varl₁) } next exit | tri< a ¬b ¬c
+  = next record { vart = (bt-node record { key = record { coler = coler ; number = number } ; ltree = vart ; rtree = rtree }) ; varn = number ; varl = varl₁ }
+
+-- do marge-tree
+-- next merge-tree-c
+-- exit fin
+merge-tree-c :  {le : Level} {t : Set le} → Env → (next : Env → t) → (exit : Env → t) → t
+merge-tree-c env next exit with varl env
+... | [] = exit env
+... | bt-empty ∷ nl = exit env
+... | bt-node xtree ∷ varl with <-cmp (varn env) (number ( key xtree ))
+... | tri≈ ¬a b ¬c = next (record env { vart = bt-node xtree ; varn = number (key xtree) ; varl = varl })
+... | tri> ¬a ¬b c = next (record env { vart = (bt-node record xtree{rtree = Env.vart env}) ; varn = number (key xtree) ; varl = varl })
+... | tri< a ¬b ¬c = next (record env { vart = (bt-node record xtree{ltree = Env.vart env}) ; varn = number (key xtree) ; varl = varl })
+
+-- do brandh
+-- next insert-c
+-- exit merge-tree
+insert-c : {le : Level} {t : Set le} → Env → (next : Env → t) → (exit : Env → t) → t
+insert-c env next exit with Env.vart env
+... | bt-empty = exit record env{vart = (bt-node (record { key = record { coler = red ; number = Env.varn env }; ltree = bt-empty; rtree = bt-empty }))}
+... | bt-node node with <-cmp (Env.varn env) (node.number (tree.key node))
+... | tri≈ ¬a b ¬c = exit env
+... | tri> ¬a ¬b c = next record env{vart = (tree.ltree node) ; varl = (bt-node record node{ltree = bt-empty}) ∷ (Env.varl env) }
+... | tri< a ¬b ¬c = next record env{vart = (tree.rtree node) ; varl = (bt-node record node{rtree = bt-empty}) ∷ (Env.varl env) }
+
+-- insert
+bt-insert : {le : Level} {t : Set le} → Env → (next : Env → t) → (exit : Env → t) → t
+-- mergeぞ遷移する
+bt-insert (record { vart = bt-empty ; varn = varn ; varl = varl }) next exit
+  = exit (record { vart = (bt-node (record { key = record { coler = red ; number = varn }; ltree = bt-empty; rtree = bt-empty })) ; varn = varn ; varl = varl })
+
+-- 堎合分けを行う
+bt-insert record {vart = (bt-node record { key = record { coler = y; number = x } ; ltree = ltree ; rtree = rtree }) ; varn = n ; varl = varl } next exit with <-cmp x n
+bt-insert node@(record { vart = (bt-node record { key = key ; ltree = ltree ; rtree = rtree }) ; varn = varn ; varl = varl } ) next exit | tri≈ ¬a b ¬c
+  = exit node
+
+bt-insert record {vart = (bt-node record { key = key ; ltree = ltree ; rtree = rtree }) ; varn = varn ; varl = varl } next exit | tri> ¬a ¬b c
+  = next (record {vart = ltree ; varn = varn ; varl = (bt-node record { key = key ; ltree = bt-empty ; rtree = rtree }) ∷ varl })
+
+bt-insert record {vart = (bt-node record { key = key ; ltree = ltree ; rtree = rtree }) ; varn = varn ; varl = varl } next exit | tri< a ¬b ¬c
+  = next (record {vart = rtree ; varn = varn ; varl = (bt-node record { key = key ; ltree = ltree ; rtree = bt-empty }) ∷ varl })
+
+-- normal loop without termination
+{-# TERMINATING #-}
+insert : {l : Level} {t : Set l} → Env → (exit : Env → t) → t
+insert env exit = bt-insert env (λ env → insert env exit ) exit
+
+init-col : {l : Level} {t : Set l} → Env → (exit : Env → t) → t
+init-col env exit = init-node-coler env exit exit
+
+{-
+{-# TERMINATING #-}
+merge : {l : Level} {t : Set l} → Env → (exit : Env → t) → t
+
+{-# TERMINATING #-}
+split-p : {l : Level} {t : Set l} → Env → (exit : Env → t) → t
+split-p env exit = split env (λ env → merge env (λ env → merge env exit ) ) exit
+
+{-# TERMINATING #-}
+rotate_right : {l : Level} {t : Set l} → Env → (exit : Env → t) → t
+rotate_right env exit = merge-rotate-right env (λ env → split-p env (λ env → merge env exit ) ) exit
+
+{-# TERMINATING #-}
+split-b : {l : Level} {t : Set l} → Env → (exit : Env → t) → t
+split-b env exit = split-branch env (λ env → rotate_right env exit ) λ env → merge env exit
+
+{-# TERMINATING #-}
+rotate_left : {l : Level} {t : Set l} → Env → (exit : Env → t) → t
+rotate_left env exit = merge-rotate-left env (λ env → split-b env exit ) exit
+
+{-# TERMINATING #-}
+skew : {l : Level} {t : Set l} → Env → (exit : Env → t) → t
+skew env exit = skew-bt env (λ env → rotate_left env (λ env → split-b env exit ) ) exit
+
+merge env exit = merge-tree env (λ env → skew env exit ) exit
+-}
+-- skewはnextがrotate-right。exitはsplitずなる
+-- skewの䞭にrotate-rightが内包され、実行埌は必ずsplitに遷移する
+-- それはskewのexitず等しいので同時に蚘述しおやる。
+skew' : {l : Level} {t : Set l} → Env → (exit : Env → t) → t
+skew' env exit = skew-bt env (λ env → merge-rotate-left env exit exit ) exit
+
+split' : {l : Level} {t : Set l} → Env → (exit : Env → t) → t
+split' env exit = split-branch env (λ env → merge-rotate-right env (λ env → split env exit exit ) (λ env → split env exit exit ) ) exit
+
+
+{-
+merge' : {l : Level} {t : Set l} → Env → (exit : Env → t) → t
+merge' node@record { vart = vart ; varn = varn ; varl = [] } exit = exit node
+merge' node@record { vart = vart ; varn = varn ; varl = (x ∷ varl₁) } exit = merge' (merge-tree node (λ env → skew' env (λ env → split' env (λ env → env) ) ) (λ env → env) ) exit
+-}
+
+whileTestP : {l : Level} {t : Set l} → (tree : rbt) → (n : ℕ) → (Code : Env → t) → t
+whileTestP tree n next = next (record {vart = tree ; varn = n ; varl = [] } )
+
+
+
+{-# TERMINATING #-}
+mergeP : {l : Level} {t : Set l} → Env → (exit : Env → t) → t
+mergeP env exit = merge-tree env (λ env → skew' env (λ env → split' env (λ env → mergeP env exit)) ) exit
+
+{-
+mergeP1 : {l : Level} {t : Set l} → Env → (exit : Env → t) → t
+mergeP1 record { vart = vart ; varn = varn ; varl = [] } exit = {!!}
+mergeP1 record { vart = vart ; varn = varn ; varl = (x ∷ varl₁) } exit = {!!}
+-}
+
+{-
+merge-tree env
+  (λ env → skew-bt env
+    (λ env → merge-rotate-left env
+      (λ env → split-branch env
+        (λ env →  merge-rotate-right env
+          (λ env → split env (λ env → mergeP env exit ) (λ env → mergeP env exit ) ) exit)
+      (λ env → mergeP env exit ) )
+    exit )
+  exit ) exit
+-}
+
+--whileTestP : {l : Level} {t : Set l} → (c10 : ℕ) → (c11 : ℕ) → (Code : Envc → t) → t
+--whileTestP c10 n next = next (record {varn = c10 ; vari = 0 ; c10 = c10 } )
+
+--whileTestPCall : (tree : rbt) → (n : ℕ)  → Env
+--whileTestPCall tree n = whileTestP {_} {_} tree n (λ env → insert env (λ env → merge env (λ env → init-col env (λ env → env ) ) ) )
+
+whileTestPCall' : (tree : rbt) → (n : ℕ)  → Env
+whileTestPCall' tree n = whileTestP {_} {_} tree n (λ env → insert env (λ env → mergeP env (λ env → init-col env (λ env → env ) ) ) )
+
+-- 以䞋test郚分
+test1 = whileTestPCall' bt-empty 8
+test2 = whileTestPCall' (vart test1) 10
+test3 = whileTestPCall' (vart test2) 24
+test4 = whileTestPCall' (vart test3) 31
+test5 = whileTestPCall' (vart test4) 41
+test6 = whileTestPCall' (vart test5) 45
+test7 = whileTestPCall' (vart test6) 50
+test8 = whileTestPCall' (vart test7) 59
+test9 = whileTestPCall' (vart test8) 73
+test10 = whileTestPCall' (vart test9) 74
+test11 = whileTestPCall' (vart test10) 79
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Paper/src/agda/rbt_t.agda.replaced	Sun Apr 24 23:13:44 2022 +0900
@@ -0,0 +1,283 @@
+module rbt_t where
+
+open import Data.Nat hiding (compare)
+open import Data.Nat.Properties as NatProp -- <-cmp
+open import Relation.Binary
+open import Data.List
+
+-- !$\rightarrow$! t を適甚するために必芁だった
+open import Level renaming ( suc to succ ; zero to Zero )
+open import Level
+
+
+data col : Set where
+  black : col
+  red : col
+
+record node (A B : Set) : Set where
+  field
+    coler : A
+    number : B
+open node
+
+record tree (A B C : Set) : Set where
+  field
+    key : A
+    ltree : B
+    rtree : C
+open tree
+
+data rbt : Set where
+  bt-empty : rbt
+  bt-node  : (node : tree (node col !$\mathbb{N}$!) rbt rbt ) !$\rightarrow$! rbt
+
+record Env : Set (succ Zero) where
+  field
+    vart : rbt
+    varn : !$\mathbb{N}$!
+    varl : List rbt
+open Env
+
+
+whileTest-next : {l : Level} {t : Set l}  !$\rightarrow$! (c10 : rbt) !$\rightarrow$! (n : !$\mathbb{N}$!) !$\rightarrow$! (list : List rbt) !$\rightarrow$! (next : Env !$\rightarrow$! t) !$\rightarrow$! (exit : Env !$\rightarrow$! t) !$\rightarrow$! t
+whileTest-next c10 n list next exit = next (record {vart = c10 ; varn = n ; varl = list} )
+
+merge-tree :  {le : Level} {t : Set le} !$\rightarrow$! Env !$\rightarrow$! (next : Env !$\rightarrow$! t) !$\rightarrow$! (exit : Env !$\rightarrow$! t) !$\rightarrow$! t
+
+-- 党おmerge-treeぞ
+split : {le : Level} {t : Set le} !$\rightarrow$! Env !$\rightarrow$! (next : Env !$\rightarrow$! t) !$\rightarrow$! (exit : Env !$\rightarrow$! t) !$\rightarrow$! t
+split node@record { vart = bt-empty ; varn = varn ; varl = varl } next exit = exit node
+split node@record { vart = (bt-node record { key = key ; ltree = bt-empty ; rtree = rtree }) ; varn = varn ; varl = varl } next exit = exit node
+split node@record { vart = (bt-node record { key = key ; ltree = (bt-node node!$\_{1}$!) ; rtree = bt-empty }) ; varn = varn ; varl = varl } next exit = exit node
+split record { vart = (bt-node record { key = record { coler = coler!$\_{1}$! ; number = number!$\_{1}$! }
+  ; ltree = (bt-node record { key = record { coler = ly ; number = ln } ; ltree = ll ; rtree = lr })
+  ; rtree = (bt-node record { key = record { coler = ry ; number = rn } ; ltree = rl ; rtree = rr }) })
+  ; varn = varn ; varl = varl } next exit
+  = next record { vart = (bt-node record { key = record { coler = red ; number = number!$\_{1}$! }
+    ; ltree = (bt-node record { key = record { coler = black ; number = ln } ; ltree = ll ; rtree = lr })
+    ; rtree = (bt-node record { key = record { coler = black ; number = rn } ; ltree = rl ; rtree = rr }) })
+    ; varn = varn ; varl = varl }
+
+
+-- 右回転
+-- 実行時splitぞ、それ以倖はmerge-treeぞ
+merge-rotate-right : {le : Level} {t : Set le} !$\rightarrow$! Env !$\rightarrow$! (next : Env !$\rightarrow$! t) !$\rightarrow$! (exit : Env !$\rightarrow$! t) !$\rightarrow$! t
+merge-rotate-right node@record { vart = bt-empty ; varn = varn ; varl = varl } next exit = exit node
+merge-rotate-right node@record { vart = bt-node record { key = record { coler = coler ; number = number } ; ltree = bt-empty ; rtree = r } ; varn = varn ; varl = varl } next exit = exit node
+merge-rotate-right record { vart = bt-node record { key = record { coler = y ; number = x }
+  ; ltree = (bt-node record { key =  record { coler = ly ; number = lx } ; ltree = ll ; rtree = lr })
+  ; rtree = r }
+  ; varn = varn ; varl = varl } next exit
+    = next record { vart = bt-node record { key = record { coler = y ; number = lx }
+      ; ltree = ll
+      ; rtree = (bt-node record { key = record { coler = red ; number = x } ; ltree = lr; rtree = r }) }
+      ; varn = varn ; varl = varl }
+
+
+-- split
+split-branch : {le : Level} {t : Set le} !$\rightarrow$! Env !$\rightarrow$! (next : Env !$\rightarrow$! t) !$\rightarrow$! (exit : Env !$\rightarrow$! t) !$\rightarrow$! t
+split-branch node@record{ vart = bt-empty ; varn = varn ; varl = varl } next exit = exit node
+split-branch node@record{ vart = bt-node record { key = key ; ltree = bt-empty ; rtree = rtree } ; varn = varn ; varl = varl } next exit = exit node
+split-branch node@record{ vart = bt-node record { key = key!$\_{1}$! ; ltree = (bt-node record { key = record { coler = lc ; number = number } ; ltree = bt-empty ; rtree = lr }) ; rtree = rtree } ; varn = varn ; varl = varl } next exit = exit node
+split-branch node@record{ vart = bt-node record { key = key!$\_{1}$! ; ltree = (bt-node record { key = record { coler = black ; number = number } ; ltree = (bt-node node!$\_{1}$!) ; rtree = lr }) ; rtree = rtree } ; varn = varn ; varl = varl } next exit = exit node
+split-branch node@record{ vart = bt-node record { key = key!$\_{1}$! ; ltree = (bt-node record { key = record { coler = red ; number = number!$\_{1}$! } ; ltree = (bt-node record { key = record { coler = black ; number = number } ; ltree = ltree ; rtree = rtree!$\_{1}$! }) ; rtree = lr }) ; rtree = rtree } ; varn = varn ; varl = varl } next exit = exit node
+split-branch node@record{ vart = bt-node record { key = key!$\_{1}$!
+  ; ltree = (bt-node record { key = record { coler = red ; number = number!$\_{1}$! }
+    ; ltree = (bt-node record { key = record { coler = red ; number = number } ; ltree = ltree ; rtree = rtree!$\_{1}$! })
+    ; rtree = lr })
+  ; rtree = rtree }
+  ; varn = varn ; varl = varl } next exit
+  = next node
+
+
+-- 巊回転、exitはsplit_branchぞ nextもsplit_branchぞ
+merge-rotate-left : {le : Level} {t : Set le} !$\rightarrow$! Env !$\rightarrow$! (next : Env !$\rightarrow$! t) !$\rightarrow$! (exit : Env !$\rightarrow$! t) !$\rightarrow$! t
+merge-rotate-left node@record { vart = bt-empty ; varn = varn ; varl = varl }  next exit = exit node
+merge-rotate-left node@record { vart = bt-node record { key = record { coler = coler ; number = number } ; ltree = ltree ; rtree = bt-empty } ; varn = varn ; varl = varl } next exit = exit node
+merge-rotate-left record { vart = bt-node record { key = record { coler = y ; number = x } ; ltree = l ; rtree = (bt-node record { key = record { coler = ry ; number = rx } ; ltree = rl ; rtree = rr }) } ; varn = varn ; varl = varl } next exit
+  = next record { vart = bt-node record { key = record { coler = y ; number = rx }
+    ; ltree = (bt-node record { key = record { coler = red ; number = x } ; ltree = l ; rtree = rl })
+    ; rtree = rr}
+    ; varn = varn ; varl = varl }
+
+
+-- skew exitがsplitぞ nextが巊回転
+skew-bt : {le : Level} {t : Set le} !$\rightarrow$! Env !$\rightarrow$! (next : Env !$\rightarrow$! t) !$\rightarrow$! (exit : Env !$\rightarrow$! t) !$\rightarrow$! t
+skew-bt node@record { vart = bt-empty ; varn = varn ; varl = varl } next exit =  exit node
+skew-bt node@record { vart = (bt-node record { key = key ; ltree = ltree ; rtree = bt-empty }) ; varn = varn ; varl = varl } next exit = exit node
+skew-bt node@record { vart = (bt-node record { key = key!$\_{1}$!
+  ; ltree = ltree!$\_{1}$!
+  ; rtree = (bt-node record { key = record { coler = black ; number = number }
+  ; ltree = ltree ; rtree = rtree }) }) ; varn = varn ; varl = varl } next exit
+    = exit node
+skew-bt node@record { vart = (bt-node record { key = key!$\_{1}$!
+  ; ltree = ltree!$\_{1}$!
+  ; rtree = (bt-node record { key = record { coler = red ; number = number } ; ltree = ltree ; rtree = rtree }) })
+  ; varn = varn ; varl = varl } next exit
+    = next node
+
+
+set-node-coler : Env !$\rightarrow$! Env
+set-node-coler node@record { vart = bt-empty ; varn = varn ; varl = varl } = node
+set-node-coler record { vart = (bt-node record { key = record { coler = coler ; number = number } ; ltree = ltree ; rtree = rtree }) ; varn = varn ; varl = varl }
+  = record { vart = (bt-node record { key = record { coler = black ; number = number } ; ltree = ltree ; rtree = rtree }) ; varn = varn ; varl = varl }
+
+init-node-coler : {le : Level} {t : Set le} !$\rightarrow$! Env !$\rightarrow$! (next : Env !$\rightarrow$! t) !$\rightarrow$! (exit : Env !$\rightarrow$! t) !$\rightarrow$! t
+init-node-coler node@record { vart = bt-empty ; varn = varn ; varl = varl } next exit = exit node
+init-node-coler record { vart = (bt-node record { key = record { coler = coler ; number = number } ; ltree = ltree ; rtree = rtree }) ; varn = varn ; varl = varl } next exit
+  = exit record { vart = (bt-node record { key = record { coler = black ; number = number } ; ltree = ltree ; rtree = rtree }) ; varn = varn ; varl = varl }
+
+--修正前
+merge-tree node@record { vart = vart ; varn = varn ; varl = [] } next exit = exit node
+merge-tree node@record { vart = vart ; varn = varn ; varl = (bt-empty !$\text{::}$! varl!$\_{1}$!) } next exit = exit node
+
+merge-tree record { vart = vart ; varn = varn ; varl = (bt-node record { key = record { coler = coler ; number = number } ; ltree = ltree ; rtree = rtree } !$\text{::}$! varl!$\_{1}$!) } next exit with <-cmp varn number
+
+merge-tree record { vart = vart ; varn = varn ; varl = (bt-node record { key = record { coler = coler ; number = number } ; ltree = ltree ; rtree = rtree } !$\text{::}$! varl!$\_{1}$!) } next exit | tri!$\approx$! !$\neg$!a b !$\neg$!c
+  = next record { vart = (bt-node record { key = record { coler = coler ; number = number } ; ltree = ltree ; rtree = rtree }) ; varn = number ; varl = varl!$\_{1}$! }
+
+merge-tree record { vart = vart ; varn = varn ; varl = (bt-node record { key = record { coler = coler ; number = number } ; ltree = ltree ; rtree = rtree } !$\text{::}$! varl!$\_{1}$!) } next exit | tri> !$\neg$!a !$\neg$!b c
+  = next record { vart = (bt-node record { key = record { coler = coler ; number = number } ; ltree = ltree ; rtree = vart }) ; varn = number ; varl = varl!$\_{1}$! }
+
+merge-tree record { vart = vart ; varn = varn ; varl = (bt-node record { key = record { coler = coler ; number = number } ; ltree = ltree ; rtree = rtree } !$\text{::}$! varl!$\_{1}$!) } next exit | tri< a !$\neg$!b !$\neg$!c
+  = next record { vart = (bt-node record { key = record { coler = coler ; number = number } ; ltree = vart ; rtree = rtree }) ; varn = number ; varl = varl!$\_{1}$! }
+
+-- do marge-tree
+-- next merge-tree-c
+-- exit fin
+merge-tree-c :  {le : Level} {t : Set le} !$\rightarrow$! Env !$\rightarrow$! (next : Env !$\rightarrow$! t) !$\rightarrow$! (exit : Env !$\rightarrow$! t) !$\rightarrow$! t
+merge-tree-c env next exit with varl env
+... | [] = exit env
+... | bt-empty !$\text{::}$! nl = exit env
+... | bt-node xtree !$\text{::}$! varl with <-cmp (varn env) (number ( key xtree ))
+... | tri!$\approx$! !$\neg$!a b !$\neg$!c = next (record env { vart = bt-node xtree ; varn = number (key xtree) ; varl = varl })
+... | tri> !$\neg$!a !$\neg$!b c = next (record env { vart = (bt-node record xtree{rtree = Env.vart env}) ; varn = number (key xtree) ; varl = varl })
+... | tri< a !$\neg$!b !$\neg$!c = next (record env { vart = (bt-node record xtree{ltree = Env.vart env}) ; varn = number (key xtree) ; varl = varl })
+
+-- do brandh
+-- next insert-c
+-- exit merge-tree
+insert-c : {le : Level} {t : Set le} !$\rightarrow$! Env !$\rightarrow$! (next : Env !$\rightarrow$! t) !$\rightarrow$! (exit : Env !$\rightarrow$! t) !$\rightarrow$! t
+insert-c env next exit with Env.vart env
+... | bt-empty = exit record env{vart = (bt-node (record { key = record { coler = red ; number = Env.varn env }; ltree = bt-empty; rtree = bt-empty }))}
+... | bt-node node with <-cmp (Env.varn env) (node.number (tree.key node))
+... | tri!$\approx$! !$\neg$!a b !$\neg$!c = exit env
+... | tri> !$\neg$!a !$\neg$!b c = next record env{vart = (tree.ltree node) ; varl = (bt-node record node{ltree = bt-empty}) !$\text{::}$! (Env.varl env) }
+... | tri< a !$\neg$!b !$\neg$!c = next record env{vart = (tree.rtree node) ; varl = (bt-node record node{rtree = bt-empty}) !$\text{::}$! (Env.varl env) }
+
+-- insert
+bt-insert : {le : Level} {t : Set le} !$\rightarrow$! Env !$\rightarrow$! (next : Env !$\rightarrow$! t) !$\rightarrow$! (exit : Env !$\rightarrow$! t) !$\rightarrow$! t
+-- mergeぞ遷移する
+bt-insert (record { vart = bt-empty ; varn = varn ; varl = varl }) next exit
+  = exit (record { vart = (bt-node (record { key = record { coler = red ; number = varn }; ltree = bt-empty; rtree = bt-empty })) ; varn = varn ; varl = varl })
+
+-- 堎合分けを行う
+bt-insert record {vart = (bt-node record { key = record { coler = y; number = x } ; ltree = ltree ; rtree = rtree }) ; varn = n ; varl = varl } next exit with <-cmp x n
+bt-insert node@(record { vart = (bt-node record { key = key ; ltree = ltree ; rtree = rtree }) ; varn = varn ; varl = varl } ) next exit | tri!$\approx$! !$\neg$!a b !$\neg$!c
+  = exit node
+
+bt-insert record {vart = (bt-node record { key = key ; ltree = ltree ; rtree = rtree }) ; varn = varn ; varl = varl } next exit | tri> !$\neg$!a !$\neg$!b c
+  = next (record {vart = ltree ; varn = varn ; varl = (bt-node record { key = key ; ltree = bt-empty ; rtree = rtree }) !$\text{::}$! varl })
+
+bt-insert record {vart = (bt-node record { key = key ; ltree = ltree ; rtree = rtree }) ; varn = varn ; varl = varl } next exit | tri< a !$\neg$!b !$\neg$!c
+  = next (record {vart = rtree ; varn = varn ; varl = (bt-node record { key = key ; ltree = ltree ; rtree = bt-empty }) !$\text{::}$! varl })
+
+-- normal loop without termination
+{-!$\#$! TERMINATING !$\#$!-}
+insert : {l : Level} {t : Set l} !$\rightarrow$! Env !$\rightarrow$! (exit : Env !$\rightarrow$! t) !$\rightarrow$! t
+insert env exit = bt-insert env (!$\lambda$! env !$\rightarrow$! insert env exit ) exit
+
+init-col : {l : Level} {t : Set l} !$\rightarrow$! Env !$\rightarrow$! (exit : Env !$\rightarrow$! t) !$\rightarrow$! t
+init-col env exit = init-node-coler env exit exit
+
+{-
+{-!$\#$! TERMINATING !$\#$!-}
+merge : {l : Level} {t : Set l} !$\rightarrow$! Env !$\rightarrow$! (exit : Env !$\rightarrow$! t) !$\rightarrow$! t
+
+{-!$\#$! TERMINATING !$\#$!-}
+split-p : {l : Level} {t : Set l} !$\rightarrow$! Env !$\rightarrow$! (exit : Env !$\rightarrow$! t) !$\rightarrow$! t
+split-p env exit = split env (!$\lambda$! env !$\rightarrow$! merge env (!$\lambda$! env !$\rightarrow$! merge env exit ) ) exit
+
+{-!$\#$! TERMINATING !$\#$!-}
+rotate_right : {l : Level} {t : Set l} !$\rightarrow$! Env !$\rightarrow$! (exit : Env !$\rightarrow$! t) !$\rightarrow$! t
+rotate_right env exit = merge-rotate-right env (!$\lambda$! env !$\rightarrow$! split-p env (!$\lambda$! env !$\rightarrow$! merge env exit ) ) exit
+
+{-!$\#$! TERMINATING !$\#$!-}
+split-b : {l : Level} {t : Set l} !$\rightarrow$! Env !$\rightarrow$! (exit : Env !$\rightarrow$! t) !$\rightarrow$! t
+split-b env exit = split-branch env (!$\lambda$! env !$\rightarrow$! rotate_right env exit ) !$\lambda$! env !$\rightarrow$! merge env exit
+
+{-!$\#$! TERMINATING !$\#$!-}
+rotate_left : {l : Level} {t : Set l} !$\rightarrow$! Env !$\rightarrow$! (exit : Env !$\rightarrow$! t) !$\rightarrow$! t
+rotate_left env exit = merge-rotate-left env (!$\lambda$! env !$\rightarrow$! split-b env exit ) exit
+
+{-!$\#$! TERMINATING !$\#$!-}
+skew : {l : Level} {t : Set l} !$\rightarrow$! Env !$\rightarrow$! (exit : Env !$\rightarrow$! t) !$\rightarrow$! t
+skew env exit = skew-bt env (!$\lambda$! env !$\rightarrow$! rotate_left env (!$\lambda$! env !$\rightarrow$! split-b env exit ) ) exit
+
+merge env exit = merge-tree env (!$\lambda$! env !$\rightarrow$! skew env exit ) exit
+-}
+-- skewはnextがrotate-right。exitはsplitずなる
+-- skewの䞭にrotate-rightが内包され、実行埌は必ずsplitに遷移する
+-- それはskewのexitず等しいので同時に蚘述しおやる。
+skew!$\prime$! : {l : Level} {t : Set l} !$\rightarrow$! Env !$\rightarrow$! (exit : Env !$\rightarrow$! t) !$\rightarrow$! t
+skew!$\prime$! env exit = skew-bt env (!$\lambda$! env !$\rightarrow$! merge-rotate-left env exit exit ) exit
+
+split!$\prime$! : {l : Level} {t : Set l} !$\rightarrow$! Env !$\rightarrow$! (exit : Env !$\rightarrow$! t) !$\rightarrow$! t
+split!$\prime$! env exit = split-branch env (!$\lambda$! env !$\rightarrow$! merge-rotate-right env (!$\lambda$! env !$\rightarrow$! split env exit exit ) (!$\lambda$! env !$\rightarrow$! split env exit exit ) ) exit
+
+
+{-
+merge!$\prime$! : {l : Level} {t : Set l} !$\rightarrow$! Env !$\rightarrow$! (exit : Env !$\rightarrow$! t) !$\rightarrow$! t
+merge!$\prime$! node@record { vart = vart ; varn = varn ; varl = [] } exit = exit node
+merge!$\prime$! node@record { vart = vart ; varn = varn ; varl = (x !$\text{::}$! varl!$\_{1}$!) } exit = merge!$\prime$! (merge-tree node (!$\lambda$! env !$\rightarrow$! skew!$\prime$! env (!$\lambda$! env !$\rightarrow$! split!$\prime$! env (!$\lambda$! env !$\rightarrow$! env) ) ) (!$\lambda$! env !$\rightarrow$! env) ) exit
+-}
+
+whileTestP : {l : Level} {t : Set l} !$\rightarrow$! (tree : rbt) !$\rightarrow$! (n : !$\mathbb{N}$!) !$\rightarrow$! (Code : Env !$\rightarrow$! t) !$\rightarrow$! t
+whileTestP tree n next = next (record {vart = tree ; varn = n ; varl = [] } )
+
+
+
+{-!$\#$! TERMINATING !$\#$!-}
+mergeP : {l : Level} {t : Set l} !$\rightarrow$! Env !$\rightarrow$! (exit : Env !$\rightarrow$! t) !$\rightarrow$! t
+mergeP env exit = merge-tree env (!$\lambda$! env !$\rightarrow$! skew!$\prime$! env (!$\lambda$! env !$\rightarrow$! split!$\prime$! env (!$\lambda$! env !$\rightarrow$! mergeP env exit)) ) exit
+
+{-
+mergeP1 : {l : Level} {t : Set l} !$\rightarrow$! Env !$\rightarrow$! (exit : Env !$\rightarrow$! t) !$\rightarrow$! t
+mergeP1 record { vart = vart ; varn = varn ; varl = [] } exit = {!!}
+mergeP1 record { vart = vart ; varn = varn ; varl = (x !$\text{::}$! varl!$\_{1}$!) } exit = {!!}
+-}
+
+{-
+merge-tree env
+  (!$\lambda$! env !$\rightarrow$! skew-bt env
+    (!$\lambda$! env !$\rightarrow$! merge-rotate-left env
+      (!$\lambda$! env !$\rightarrow$! split-branch env
+        (!$\lambda$! env !$\rightarrow$!  merge-rotate-right env
+          (!$\lambda$! env !$\rightarrow$! split env (!$\lambda$! env !$\rightarrow$! mergeP env exit ) (!$\lambda$! env !$\rightarrow$! mergeP env exit ) ) exit)
+      (!$\lambda$! env !$\rightarrow$! mergeP env exit ) )
+    exit )
+  exit ) exit
+-}
+
+--whileTestP : {l : Level} {t : Set l} !$\rightarrow$! (c10 : !$\mathbb{N}$!) !$\rightarrow$! (c11 : !$\mathbb{N}$!) !$\rightarrow$! (Code : Envc !$\rightarrow$! t) !$\rightarrow$! t
+--whileTestP c10 n next = next (record {varn = c10 ; vari = 0 ; c10 = c10 } )
+
+--whileTestPCall : (tree : rbt) !$\rightarrow$! (n : !$\mathbb{N}$!)  !$\rightarrow$! Env
+--whileTestPCall tree n = whileTestP {_} {_} tree n (!$\lambda$! env !$\rightarrow$! insert env (!$\lambda$! env !$\rightarrow$! merge env (!$\lambda$! env !$\rightarrow$! init-col env (!$\lambda$! env !$\rightarrow$! env ) ) ) )
+
+whileTestPCall!$\prime$! : (tree : rbt) !$\rightarrow$! (n : !$\mathbb{N}$!)  !$\rightarrow$! Env
+whileTestPCall!$\prime$! tree n = whileTestP {_} {_} tree n (!$\lambda$! env !$\rightarrow$! insert env (!$\lambda$! env !$\rightarrow$! mergeP env (!$\lambda$! env !$\rightarrow$! init-col env (!$\lambda$! env !$\rightarrow$! env ) ) ) )
+
+-- 以䞋test郚分
+test1 = whileTestPCall!$\prime$! bt-empty 8
+test2 = whileTestPCall!$\prime$! (vart test1) 10
+test3 = whileTestPCall!$\prime$! (vart test2) 24
+test4 = whileTestPCall!$\prime$! (vart test3) 31
+test5 = whileTestPCall!$\prime$! (vart test4) 41
+test6 = whileTestPCall!$\prime$! (vart test5) 45
+test7 = whileTestPCall!$\prime$! (vart test6) 50
+test8 = whileTestPCall!$\prime$! (vart test7) 59
+test9 = whileTestPCall!$\prime$! (vart test8) 73
+test10 = whileTestPCall!$\prime$! (vart test9) 74
+test11 = whileTestPCall!$\prime$! (vart test10) 79
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Paper/src/agda/rbt_varif.agda	Sun Apr 24 23:13:44 2022 +0900
@@ -0,0 +1,54 @@
+module rbt_varif where
+
+open import Level renaming ( suc to succ ; zero to Zero )
+open import Relation.Binary
+open import Data.Nat hiding (_≀_  ; _≀?_)
+open import Data.List hiding ([_])
+open import Data.Product
+open import Data.Nat.Properties as NP
+
+
+
+mutual
+  data  right-List : Set where
+    [] : right-List
+    [_] : ℕ → right-List
+    _∷>_Cond_ : (x : ℕ) → (xs : right-List ) → (p : x Data.Nat.> top-r xs) → right-List
+
+  top-r : right-List → ℕ
+  top-r [] = {!!}
+  top-r [ x ] = x
+  top-r (x ∷> l Cond x₁) = x
+
+  insert-r : ℕ → right-List → right-List
+  insert-r x [] = {!!}
+  insert-r x [ y ] with <-cmp x y
+  ... | tri< a ¬b ¬c = [ y ]
+  ... | tri≈ ¬a b ¬c = [ y ]
+  ... | tri> ¬a ¬b c = x ∷>  [ y ] Cond c
+  insert-r x (y ∷> ys Cond p) with <-cmp x y
+  ... | tri< a ¬b ¬c = (y ∷> ys Cond p)
+  ... | tri≈ ¬a b ¬c = (y ∷> ys Cond p)
+  ... | tri> ¬a ¬b c = x ∷> (y ∷> ys Cond p) Cond c
+
+  data  left-List : Set where
+    [] : left-List
+    [_] : ℕ -> left-List
+    _<∷_Cond_ : (x : ℕ) -> (xs : left-List ) -> (p : x Data.Nat.< top-l xs) -> left-List
+
+  top-l : left-List → ℕ
+  top-l [] = {!!}
+  top-l [ x ] = x
+  top-l (x <∷ l Cond x₁) = x
+
+  insert-l : ℕ -> left-List -> left-List
+  insert-l x [] = [ x ]
+  insert-l x l@([ y ]) with <-cmp x y
+  ... | tri< a ¬b ¬c = x <∷ l Cond a
+  ... | tri≈ ¬a b ¬c = l
+  ... | tri> ¬a ¬b c = l
+  insert-l x l@(y <∷ ys Cond p) with <-cmp x y
+  ... | tri< a ¬b ¬c = x <∷ l Cond a
+  ... | tri≈ ¬a b ¬c = l
+
+  ... | tri> ¬a ¬b c = l
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Paper/src/agda/rbt_varif.agda.replaced	Sun Apr 24 23:13:44 2022 +0900
@@ -0,0 +1,54 @@
+module rbt_varif where
+
+open import Level renaming ( suc to succ ; zero to Zero )
+open import Relation.Binary
+open import Data.Nat hiding (_!$\leq$!_  ; _!$\leq$!?_)
+open import Data.List hiding ([_])
+open import Data.Product
+open import Data.Nat.Properties as NP
+
+
+
+mutual
+  data  right-List : Set where
+    [] : right-List
+    [_] : !$\mathbb{N}$! !$\rightarrow$! right-List
+    _!$\text{::}$!>_Cond_ : (x : !$\mathbb{N}$!) !$\rightarrow$! (xs : right-List ) !$\rightarrow$! (p : x Data.Nat.> top-r xs) !$\rightarrow$! right-List
+
+  top-r : right-List !$\rightarrow$! !$\mathbb{N}$!
+  top-r [] = {!!}
+  top-r [ x ] = x
+  top-r (x !$\text{::}$!> l Cond x!$\_{1}$!) = x
+
+  insert-r : !$\mathbb{N}$! !$\rightarrow$! right-List !$\rightarrow$! right-List
+  insert-r x [] = {!!}
+  insert-r x [ y ] with <-cmp x y
+  ... | tri< a !$\neg$!b !$\neg$!c = [ y ]
+  ... | tri!$\approx$! !$\neg$!a b !$\neg$!c = [ y ]
+  ... | tri> !$\neg$!a !$\neg$!b c = x !$\text{::}$!>  [ y ] Cond c
+  insert-r x (y !$\text{::}$!> ys Cond p) with <-cmp x y
+  ... | tri< a !$\neg$!b !$\neg$!c = (y !$\text{::}$!> ys Cond p)
+  ... | tri!$\approx$! !$\neg$!a b !$\neg$!c = (y !$\text{::}$!> ys Cond p)
+  ... | tri> !$\neg$!a !$\neg$!b c = x !$\text{::}$!> (y !$\text{::}$!> ys Cond p) Cond c
+
+  data  left-List : Set where
+    [] : left-List
+    [_] : !$\mathbb{N}$! !$\rightarrow$! left-List
+    _<!$\text{::}$!_Cond_ : (x : !$\mathbb{N}$!) !$\rightarrow$! (xs : left-List ) !$\rightarrow$! (p : x Data.Nat.< top-l xs) !$\rightarrow$! left-List
+
+  top-l : left-List !$\rightarrow$! !$\mathbb{N}$!
+  top-l [] = {!!}
+  top-l [ x ] = x
+  top-l (x <!$\text{::}$! l Cond x!$\_{1}$!) = x
+
+  insert-l : !$\mathbb{N}$! !$\rightarrow$! left-List !$\rightarrow$! left-List
+  insert-l x [] = [ x ]
+  insert-l x l@([ y ]) with <-cmp x y
+  ... | tri< a !$\neg$!b !$\neg$!c = x <!$\text{::}$! l Cond a
+  ... | tri!$\approx$! !$\neg$!a b !$\neg$!c = l
+  ... | tri> !$\neg$!a !$\neg$!b c = l
+  insert-l x l@(y <!$\text{::}$! ys Cond p) with <-cmp x y
+  ... | tri< a !$\neg$!b !$\neg$!c = x <!$\text{::}$! l Cond a
+  ... | tri!$\approx$! !$\neg$!a b !$\neg$!c = l
+
+  ... | tri> !$\neg$!a !$\neg$!b c = l
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Paper/src/agda/syllogism.agda	Sun Apr 24 23:13:44 2022 +0900
@@ -0,0 +1,2 @@
+syllogism : {A B C : Set} → ((A → B) ∧ (B → C)) → (A → C)
+syllogism x a = _∧_.p2 x (_∧_.p1 x a)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Paper/src/agda/syllogism.agda.replaced	Sun Apr 24 23:13:44 2022 +0900
@@ -0,0 +1,2 @@
+syllogism : {A B C : Set} !$\rightarrow$! ((A !$\rightarrow$! B) !$\wedge$! (B !$\rightarrow$! C)) !$\rightarrow$! (A !$\rightarrow$! C)
+syllogism x a = _!$\wedge$!_.p2 x (_!$\wedge$!_.p1 x a)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Paper/src/agda/utilities.agda	Sun Apr 24 23:13:44 2022 +0900
@@ -0,0 +1,171 @@
+{-# OPTIONS --allow-unsolved-metas #-}
+module utilities where
+
+open import Function
+open import Data.Nat
+open import Data.Product
+open import Data.Bool hiding ( _≟_  ; _≀?_)
+open import Level renaming ( suc to succ ; zero to Zero )
+open import Relation.Nullary using (¬_; Dec; yes; no)
+open import Relation.Binary.PropositionalEquality
+
+Pred : Set -> Set₁
+Pred X = X -> Set
+
+Imply : Set -> Set -> Set
+Imply X Y = X -> Y
+
+Iff : Set -> Set -> Set
+Iff X Y = Imply X Y × Imply Y X
+
+record _/\_ {n : Level } (a : Set n) (b : Set n): Set n where
+  field
+    pi1 : a
+    pi2 : b
+
+open  _/\_
+
+_-_ : ℕ → ℕ → ℕ 
+x - zero  = x
+zero - _  = zero
+(suc x) - (suc y)  = x - y
+
++zero : { y : ℕ } → y + zero  ≡ y
++zero {zero} = refl
++zero {suc y} = cong ( λ x → suc x ) ( +zero {y} )
+
+
++-sym : { x y : ℕ } → x + y ≡ y + x
++-sym {zero} {zero} = refl
++-sym {zero} {suc y} = let open ≡-Reasoning  in
+          begin
+            zero + suc y 
+          ≡⟚⟩
+            suc y
+          ≡⟚ sym +zero ⟩
+            suc y + zero
+          ∎
++-sym {suc x} {zero} =  let open ≡-Reasoning  in
+          begin
+            suc x + zero
+          ≡⟚ +zero  ⟩
+            suc x
+          ≡⟚⟩
+            zero + suc x
+          ∎
++-sym {suc x} {suc y} = cong ( λ z → suc z ) (  let open ≡-Reasoning  in
+          begin
+            x + suc y
+          ≡⟚ +-sym {x} {suc y} ⟩
+            suc (y + x)
+          ≡⟚ cong ( λ z → suc z )  (+-sym {y} {x}) ⟩
+            suc (x + y)
+          ≡⟚ sym ( +-sym {y} {suc x}) ⟩
+            y + suc x
+          ∎ )
+
+
+minus-plus : { x y : ℕ } → (suc x - 1) + (y + 1) ≡ suc x + y
+minus-plus {zero} {y} = +-sym {y} {1}
+minus-plus {suc x} {y} =  cong ( λ z → suc z ) (minus-plus {x} {y})
+
++1≡suc : { x : ℕ } → x + 1 ≡ suc x
++1≡suc {zero} = refl
++1≡suc {suc x} = cong ( λ z → suc z ) ( +1≡suc {x} )
+
+lt : ℕ → ℕ → Bool
+lt x y with (suc x ) ≀? y
+lt x y | yes p = true
+lt x y | no ¬p = false
+
+predℕ : {n :  ℕ } → lt 0 n ≡ true  →  ℕ
+predℕ {zero} ()
+predℕ {suc n} refl = n
+
+predℕ+1=n : {n :  ℕ } → (less : lt 0 n ≡ true ) → (predℕ less) + 1 ≡ n
+predℕ+1=n {zero} ()
+predℕ+1=n {suc n} refl = +1≡suc
+
+suc-predℕ=n : {n :  ℕ } → (less : lt 0 n ≡ true ) → suc (predℕ less) ≡ n
+suc-predℕ=n {zero} ()
+suc-predℕ=n {suc n} refl = refl
+
+Equal : ℕ → ℕ → Bool
+Equal x y with x ≟ y
+Equal x y | yes p = true
+Equal x y | no ¬p = false
+
+_⇒_ : Bool → Bool → Bool
+false  ⇒  _ = true
+true  ⇒  true = true
+true  ⇒  false = false
+
+⇒t : {x : Bool} → x  ⇒ true  ≡ true
+⇒t {x} with x
+⇒t {x} | false = refl
+⇒t {x} | true = refl
+
+f⇒ : {x : Bool} → false  ⇒ x  ≡ true
+f⇒ {x} with x
+f⇒ {x} | false = refl
+f⇒ {x} | true = refl
+
+∧-pi1 : { x y : Bool } → x  ∧  y  ≡ true  → x  ≡ true
+∧-pi1 {x} {y} eq with x | y | eq
+∧-pi1 {x} {y} eq | false | b | ()
+∧-pi1 {x} {y} eq | true | false | ()
+∧-pi1 {x} {y} eq | true | true | refl = refl
+
+∧-pi2 : { x y : Bool } →  x  ∧  y  ≡ true  → y  ≡ true
+∧-pi2 {x} {y} eq with x | y | eq
+∧-pi2 {x} {y} eq | false | b | ()
+∧-pi2 {x} {y} eq | true | false | ()
+∧-pi2 {x} {y} eq | true | true | refl = refl
+
+∧true : { x : Bool } →  x  ∧  true  ≡ x
+∧true {x} with x
+∧true {x} | false = refl
+∧true {x} | true = refl
+
+true∧ : { x : Bool } →  true  ∧  x  ≡ x
+true∧ {x} with x
+true∧ {x} | false = refl
+true∧ {x} | true = refl
+bool-case : ( x : Bool ) { p : Set } → ( x ≡ true  → p ) → ( x ≡ false  → p ) → p
+bool-case x T F with x
+bool-case x T F | false = F refl
+bool-case x T F | true = T refl
+
+impl⇒ :  {x y : Bool} → (x  ≡ true → y  ≡ true ) → x  ⇒ y  ≡ true
+impl⇒ {x} {y} p = bool-case x (λ x=t →   let open ≡-Reasoning  in
+          begin
+            x  ⇒ y
+          ≡⟚  cong ( λ z → x  ⇒ z ) (p x=t ) ⟩
+            x  ⇒  true
+          ≡⟚ ⇒t ⟩
+            true
+          ∎
+    ) ( λ x=f →  let open ≡-Reasoning  in
+          begin
+            x  ⇒  y
+          ≡⟚  cong ( λ z → z  ⇒  y ) x=f ⟩
+            true
+          ∎
+  )
+ 
+Equal→≡ : { x y : ℕ } →  Equal x y ≡ true → x ≡ y
+Equal→≡ {x} {y} eq with x ≟ y
+Equal→≡ {x} {y} refl | yes refl = refl
+Equal→≡ {x} {y} () | no ¬p 
+
+Equal+1 : { x y : ℕ } →  Equal x y ≡ Equal (suc x) (suc y)
+Equal+1 {x} {y} with  x ≟ y
+Equal+1 {x} {.x} | yes refl = {!!}
+Equal+1 {x} {y} | no ¬p = {!!}
+
+open import Data.Empty 
+
+≡→Equal : { x y : ℕ } → x ≡ y →  Equal x y ≡ true 
+≡→Equal {x} {.x} refl with x ≟ x
+≡→Equal {x} {.x} refl | yes refl = refl
+≡→Equal {x} {.x} refl | no ¬p = ⊥-elim ( ¬p refl )
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Paper/src/agda/utilities.agda.replaced	Sun Apr 24 23:13:44 2022 +0900
@@ -0,0 +1,171 @@
+{-!$\#$! OPTIONS --allow-unsolved-metas !$\#$!-}
+module utilities where
+
+open import Function
+open import Data.Nat
+open import Data.Product
+open import Data.Bool hiding ( _≟_  ; _!$\leq$!?_)
+open import Level renaming ( suc to succ ; zero to Zero )
+open import Relation.Nullary using (!$\neg$!_; Dec; yes; no)
+open import Relation.Binary.PropositionalEquality
+
+Pred : Set !$\rightarrow$! Set!$\_{1}$!
+Pred X = X !$\rightarrow$! Set
+
+Imply : Set !$\rightarrow$! Set !$\rightarrow$! Set
+Imply X Y = X !$\rightarrow$! Y
+
+Iff : Set !$\rightarrow$! Set !$\rightarrow$! Set
+Iff X Y = Imply X Y !$\times$! Imply Y X
+
+record _!$\wedge$!_ {n : Level } (a : Set n) (b : Set n): Set n where
+  field
+    pi1 : a
+    pi2 : b
+
+open  _!$\wedge$!_
+
+_-_ : !$\mathbb{N}$! !$\rightarrow$! !$\mathbb{N}$! !$\rightarrow$! !$\mathbb{N}$! 
+x - zero  = x
+zero - _  = zero
+(suc x) - (suc y)  = x - y
+
++zero : { y : !$\mathbb{N}$! } !$\rightarrow$! y + zero  !$\equiv$! y
++zero {zero} = refl
++zero {suc y} = cong ( !$\lambda$! x !$\rightarrow$! suc x ) ( +zero {y} )
+
+
++-sym : { x y : !$\mathbb{N}$! } !$\rightarrow$! x + y !$\equiv$! y + x
++-sym {zero} {zero} = refl
++-sym {zero} {suc y} = let open !$\equiv$!-Reasoning  in
+          begin
+            zero + suc y 
+          !$\equiv$!!$\langle$!!$\rangle$!
+            suc y
+          !$\equiv$!!$\langle$! sym +zero !$\rangle$!
+            suc y + zero
+          !$\blacksquare$!
++-sym {suc x} {zero} =  let open !$\equiv$!-Reasoning  in
+          begin
+            suc x + zero
+          !$\equiv$!!$\langle$! +zero  !$\rangle$!
+            suc x
+          !$\equiv$!!$\langle$!!$\rangle$!
+            zero + suc x
+          !$\blacksquare$!
++-sym {suc x} {suc y} = cong ( !$\lambda$! z !$\rightarrow$! suc z ) (  let open !$\equiv$!-Reasoning  in
+          begin
+            x + suc y
+          !$\equiv$!!$\langle$! +-sym {x} {suc y} !$\rangle$!
+            suc (y + x)
+          !$\equiv$!!$\langle$! cong ( !$\lambda$! z !$\rightarrow$! suc z )  (+-sym {y} {x}) !$\rangle$!
+            suc (x + y)
+          !$\equiv$!!$\langle$! sym ( +-sym {y} {suc x}) !$\rangle$!
+            y + suc x
+          !$\blacksquare$! )
+
+
+minus-plus : { x y : !$\mathbb{N}$! } !$\rightarrow$! (suc x - 1) + (y + 1) !$\equiv$! suc x + y
+minus-plus {zero} {y} = +-sym {y} {1}
+minus-plus {suc x} {y} =  cong ( !$\lambda$! z !$\rightarrow$! suc z ) (minus-plus {x} {y})
+
++1!$\equiv$!suc : { x : !$\mathbb{N}$! } !$\rightarrow$! x + 1 !$\equiv$! suc x
++1!$\equiv$!suc {zero} = refl
++1!$\equiv$!suc {suc x} = cong ( !$\lambda$! z !$\rightarrow$! suc z ) ( +1!$\equiv$!suc {x} )
+
+lt : !$\mathbb{N}$! !$\rightarrow$! !$\mathbb{N}$! !$\rightarrow$! Bool
+lt x y with (suc x ) !$\leq$!? y
+lt x y | yes p = true
+lt x y | no !$\neg$!p = false
+
+pred!$\mathbb{N}$! : {n :  !$\mathbb{N}$! } !$\rightarrow$! lt 0 n !$\equiv$! true  !$\rightarrow$!  !$\mathbb{N}$!
+pred!$\mathbb{N}$! {zero} ()
+pred!$\mathbb{N}$! {suc n} refl = n
+
+pred!$\mathbb{N}$!+1=n : {n :  !$\mathbb{N}$! } !$\rightarrow$! (less : lt 0 n !$\equiv$! true ) !$\rightarrow$! (pred!$\mathbb{N}$! less) + 1 !$\equiv$! n
+pred!$\mathbb{N}$!+1=n {zero} ()
+pred!$\mathbb{N}$!+1=n {suc n} refl = +1!$\equiv$!suc
+
+suc-pred!$\mathbb{N}$!=n : {n :  !$\mathbb{N}$! } !$\rightarrow$! (less : lt 0 n !$\equiv$! true ) !$\rightarrow$! suc (pred!$\mathbb{N}$! less) !$\equiv$! n
+suc-pred!$\mathbb{N}$!=n {zero} ()
+suc-pred!$\mathbb{N}$!=n {suc n} refl = refl
+
+Equal : !$\mathbb{N}$! !$\rightarrow$! !$\mathbb{N}$! !$\rightarrow$! Bool
+Equal x y with x ≟ y
+Equal x y | yes p = true
+Equal x y | no !$\neg$!p = false
+
+_!$\Rightarrow$!_ : Bool !$\rightarrow$! Bool !$\rightarrow$! Bool
+false  !$\Rightarrow$!  _ = true
+true  !$\Rightarrow$!  true = true
+true  !$\Rightarrow$!  false = false
+
+!$\Rightarrow$!t : {x : Bool} !$\rightarrow$! x  !$\Rightarrow$! true  !$\equiv$! true
+!$\Rightarrow$!t {x} with x
+!$\Rightarrow$!t {x} | false = refl
+!$\Rightarrow$!t {x} | true = refl
+
+f!$\Rightarrow$! : {x : Bool} !$\rightarrow$! false  !$\Rightarrow$! x  !$\equiv$! true
+f!$\Rightarrow$! {x} with x
+f!$\Rightarrow$! {x} | false = refl
+f!$\Rightarrow$! {x} | true = refl
+
+!$\wedge$!-pi1 : { x y : Bool } !$\rightarrow$! x  !$\wedge$!  y  !$\equiv$! true  !$\rightarrow$! x  !$\equiv$! true
+!$\wedge$!-pi1 {x} {y} eq with x | y | eq
+!$\wedge$!-pi1 {x} {y} eq | false | b | ()
+!$\wedge$!-pi1 {x} {y} eq | true | false | ()
+!$\wedge$!-pi1 {x} {y} eq | true | true | refl = refl
+
+!$\wedge$!-pi2 : { x y : Bool } !$\rightarrow$!  x  !$\wedge$!  y  !$\equiv$! true  !$\rightarrow$! y  !$\equiv$! true
+!$\wedge$!-pi2 {x} {y} eq with x | y | eq
+!$\wedge$!-pi2 {x} {y} eq | false | b | ()
+!$\wedge$!-pi2 {x} {y} eq | true | false | ()
+!$\wedge$!-pi2 {x} {y} eq | true | true | refl = refl
+
+!$\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
+
+true!$\wedge$! : { x : Bool } !$\rightarrow$!  true  !$\wedge$!  x  !$\equiv$! x
+true!$\wedge$! {x} with x
+true!$\wedge$! {x} | false = refl
+true!$\wedge$! {x} | true = refl
+bool-case : ( x : Bool ) { p : Set } !$\rightarrow$! ( x !$\equiv$! true  !$\rightarrow$! p ) !$\rightarrow$! ( x !$\equiv$! false  !$\rightarrow$! p ) !$\rightarrow$! p
+bool-case x T F with x
+bool-case x T F | false = F refl
+bool-case x T F | true = T refl
+
+impl!$\Rightarrow$! :  {x y : Bool} !$\rightarrow$! (x  !$\equiv$! true !$\rightarrow$! y  !$\equiv$! true ) !$\rightarrow$! x  !$\Rightarrow$! y  !$\equiv$! true
+impl!$\Rightarrow$! {x} {y} p = bool-case x (!$\lambda$! x=t !$\rightarrow$!   let open !$\equiv$!-Reasoning  in
+          begin
+            x  !$\Rightarrow$! y
+          !$\equiv$!!$\langle$!  cong ( !$\lambda$! z !$\rightarrow$! x  !$\Rightarrow$! z ) (p x=t ) !$\rangle$!
+            x  !$\Rightarrow$!  true
+          !$\equiv$!!$\langle$! !$\Rightarrow$!t !$\rangle$!
+            true
+          !$\blacksquare$!
+    ) ( !$\lambda$! x=f !$\rightarrow$!  let open !$\equiv$!-Reasoning  in
+          begin
+            x  !$\Rightarrow$!  y
+          !$\equiv$!!$\langle$!  cong ( !$\lambda$! z !$\rightarrow$! z  !$\Rightarrow$!  y ) x=f !$\rangle$!
+            true
+          !$\blacksquare$!
+  )
+ 
+Equal!$\rightarrow$!!$\equiv$! : { x y : !$\mathbb{N}$! } !$\rightarrow$!  Equal x y !$\equiv$! true !$\rightarrow$! x !$\equiv$! y
+Equal!$\rightarrow$!!$\equiv$! {x} {y} eq with x ≟ y
+Equal!$\rightarrow$!!$\equiv$! {x} {y} refl | yes refl = refl
+Equal!$\rightarrow$!!$\equiv$! {x} {y} () | no !$\neg$!p 
+
+Equal+1 : { x y : !$\mathbb{N}$! } !$\rightarrow$!  Equal x y !$\equiv$! Equal (suc x) (suc y)
+Equal+1 {x} {y} with  x ≟ y
+Equal+1 {x} {.x} | yes refl = {!!}
+Equal+1 {x} {y} | no !$\neg$!p = {!!}
+
+open import Data.Empty 
+
+!$\equiv$!!$\rightarrow$!Equal : { x y : !$\mathbb{N}$! } !$\rightarrow$! x !$\equiv$! y !$\rightarrow$!  Equal x y !$\equiv$! true 
+!$\equiv$!!$\rightarrow$!Equal {x} {.x} refl with x ≟ x
+!$\equiv$!!$\rightarrow$!Equal {x} {.x} refl | yes refl = refl
+!$\equiv$!!$\rightarrow$!Equal {x} {.x} refl | no !$\neg$!p = !$\bot$!-elim ( !$\neg$!p refl )
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Paper/src/atomicImpl.cbc	Sun Apr 24 23:13:44 2022 +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/Paper/src/atomicInterface.h	Sun Apr 24 23:13:44 2022 +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/Paper/src/atton-master-meta-sample.agda	Sun Apr 24 23:13:44 2022 +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/Paper/src/atton-master-meta-sample.agda.replaced	Sun Apr 24 23:13:44 2022 +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!$\prime$!      : 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!$\prime$! = 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!$\prime$! = 0 ; next = (N.cs id)})
+-- record {context = record {a = 100 ; b = 50 ; c = 150} ; c!$\prime$! = 70 ; next = (N.cs id)}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Paper/src/atton-master-sample.agda	Sun Apr 24 23:13:44 2022 +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/Paper/src/atton-master-sample.agda.replaced	Sun Apr 24 23:13:44 2022 +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/Paper/src/axiom-taut.agda	Sun Apr 24 23:13:44 2022 +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/Paper/src/axiom-taut.agda.replaced	Sun Apr 24 23:13:44 2022 +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/Paper/src/bt_impl/bt_env.agda	Sun Apr 24 23:13:44 2022 +0900
@@ -0,0 +1,12 @@
+data bt {n : Level} (A : Set n) : Set n where
+  leaf : bt A
+  node :  (key : ℕ) → (value : A) →
+    (left : bt A ) → (right : bt A ) → bt A
+
+record Env {n : Level} (A : Set n) : Set n where
+  field
+    varn : ℕ
+    varv : A
+    vart : bt A
+    varl : List (bt A)
+open Env
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Paper/src/bt_impl/bt_env.agda.replaced	Sun Apr 24 23:13:44 2022 +0900
@@ -0,0 +1,12 @@
+data bt {n : Level} (A : Set n) : Set n where
+  leaf : bt A
+  node :  (key : !$\mathbb{N}$!) !$\rightarrow$! (value : A) !$\rightarrow$!
+    (left : bt A ) !$\rightarrow$! (right : bt A ) !$\rightarrow$! bt A
+
+record Env {n : Level} (A : Set n) : Set n where
+  field
+    varn : !$\mathbb{N}$!
+    varv : A
+    vart : bt A
+    varl : List (bt A)
+open Env
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Paper/src/bt_impl/find.agda	Sun Apr 24 23:13:44 2022 +0900
@@ -0,0 +1,12 @@
+find : {n m : Level} {A : Set n} {t : Set m} → (env : Env A )
+           → (next : (env : Env A ) → t )
+           → (exit : (env : Env A ) → t ) → t
+find env next exit = find-c (vart env) env next exit where
+    find-c : {n m : Level} {A : Set n} {t : Set m} → (tree : bt A) → (env : Env A )
+           → (next : (env : Env A ) → t )
+           → (exit : (env : Env A ) → t ) → t
+    find-c leaf env next exit = exit env
+    find-c n@(node key-t value ltree rtree) env next exit with <-cmp (varn env) key-t
+    ... | tri< a ¬b ¬c = find-c ltree record env {vart = ltree ; varl = (n ∷ (varl env))} next exit
+    ... | tri≈ ¬a b ¬c = exit record env {vart = n}
+    ... | tri> ¬a ¬b c = find-c rtree record env {vart = rtree ; varl = (n ∷ (varl env))} next exit
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Paper/src/bt_impl/find.agda.replaced	Sun Apr 24 23:13:44 2022 +0900
@@ -0,0 +1,12 @@
+find : {n m : Level} {A : Set n} {t : Set m} !$\rightarrow$! (env : Env A )
+           !$\rightarrow$! (next : (env : Env A ) !$\rightarrow$! t )
+           !$\rightarrow$! (exit : (env : Env A ) !$\rightarrow$! t ) !$\rightarrow$! t
+find env next exit = find-c (vart env) env next exit where
+    find-c : {n m : Level} {A : Set n} {t : Set m} !$\rightarrow$! (tree : bt A) !$\rightarrow$! (env : Env A )
+           !$\rightarrow$! (next : (env : Env A ) !$\rightarrow$! t )
+           !$\rightarrow$! (exit : (env : Env A ) !$\rightarrow$! t ) !$\rightarrow$! t
+    find-c leaf env next exit = exit env
+    find-c n@(node key-t value ltree rtree) env next exit with <-cmp (varn env) key-t
+    ... | tri< a !$\neg$!b !$\neg$!c = find-c ltree record env {vart = ltree ; varl = (n !$\text{::}$! (varl env))} next exit
+    ... | tri!$\approx$! !$\neg$!a b !$\neg$!c = exit record env {vart = n}
+    ... | tri> !$\neg$!a !$\neg$!b c = find-c rtree record env {vart = rtree ; varl = (n !$\text{::}$! (varl env))} next exit
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Paper/src/bt_impl/replace.agda	Sun Apr 24 23:13:44 2022 +0900
@@ -0,0 +1,14 @@
+replace : {n m : Level} {A : Set n} {t : Set m} → (env : Env A )
+    → (next : Env A → t )
+    → (exit : Env A → t) → t
+replace env next exit = replace-c (varl env) env next exit where
+    replace-c : {n m : Level} {A : Set n} {t : Set m} → List (bt A) → (env : Env A )
+        → (next : Env A → t )
+        → (exit : Env A → t) → t
+    replace-c st env next exit with st
+    ... | [] = exit env
+    ... | leaf ∷ st1 = replace-c st1 env next exit
+    ... | n@(node key-t value ltree rtree) ∷ st1 with <-cmp (varn env) (key-t)
+    ... | tri< a ¬b ¬c = replace-c st1 record env{vart = (node key-t value (vart env) rtree); varl = st1} next exit
+    ... | tri≈ ¬a b ¬c = replace-c st1 record env{vart = (node key-t (varv env) ltree rtree); varl = st1} next exit
+    ... | tri> ¬a ¬b c = replace-c st1 record env{vart = (node key-t value ltree (vart env)); varl = st1} next exit
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Paper/src/bt_impl/replace.agda.replaced	Sun Apr 24 23:13:44 2022 +0900
@@ -0,0 +1,14 @@
+replace : {n m : Level} {A : Set n} {t : Set m} !$\rightarrow$! (env : Env A )
+    !$\rightarrow$! (next : Env A !$\rightarrow$! t )
+    !$\rightarrow$! (exit : Env A !$\rightarrow$! t) !$\rightarrow$! t
+replace env next exit = replace-c (varl env) env next exit where
+    replace-c : {n m : Level} {A : Set n} {t : Set m} !$\rightarrow$! List (bt A) !$\rightarrow$! (env : Env A )
+        !$\rightarrow$! (next : Env A !$\rightarrow$! t )
+        !$\rightarrow$! (exit : Env A !$\rightarrow$! t) !$\rightarrow$! t
+    replace-c st env next exit with st
+    ... | [] = exit env
+    ... | leaf !$\text{::}$! st1 = replace-c st1 env next exit
+    ... | n@(node key-t value ltree rtree) !$\text{::}$! st1 with <-cmp (varn env) (key-t)
+    ... | tri< a !$\neg$!b !$\neg$!c = replace-c st1 record env{vart = (node key-t value (vart env) rtree); varl = st1} next exit
+    ... | tri!$\approx$! !$\neg$!a b !$\neg$!c = replace-c st1 record env{vart = (node key-t (varv env) ltree rtree); varl = st1} next exit
+    ... | tri> !$\neg$!a !$\neg$!b c = replace-c st1 record env{vart = (node key-t value ltree (vart env)); varl = st1} next exit
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Paper/src/bt_verif/find.agda	Sun Apr 24 23:13:44 2022 +0900
@@ -0,0 +1,12 @@
+findP : {n m : Level} {A : Set n} {t : Set m} → (env : Env A)
+           → treeInvariant env ∧ stackInvariant env
+           → (exit : (env : Env A) → treeInvariant env ∧ stackInvariant env → t ) → t
+findP env Cond exit = findP-c (vart env) env Cond exit where
+    findP-c : {n m : Level} {A : Set n} {t : Set m} → (tree : bt A) → (env : Env A)
+           → treeInvariant env ∧ stackInvariant env
+           → (exit : (env : Env A) → treeInvariant env ∧ stackInvariant env → t ) → t
+    findP-c leaf env Cond exit = exit env Cond
+    findP-c n@(node key-t value ltree rtree) env Cond exit with <-cmp key-t (varn env)
+    ... | tri< a ¬b ¬c = findP-c ltree record env {vart = ltree ; varl = (n ∷ (varl env))} {!!} exit
+    ... | tri≈ ¬a b ¬c = exit record env {vart = n} {!!}
+    ... | tri> ¬a ¬b c = findP-c rtree record env {vart = rtree ; varl = (n ∷ (varl env))} {!!} exit
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Paper/src/bt_verif/find.agda.replaced	Sun Apr 24 23:13:44 2022 +0900
@@ -0,0 +1,12 @@
+findP : {n m : Level} {A : Set n} {t : Set m} !$\rightarrow$! (env : Env A)
+           !$\rightarrow$! treeInvariant env !$\wedge$! stackInvariant env
+           !$\rightarrow$! (exit : (env : Env A) !$\rightarrow$! treeInvariant env !$\wedge$! stackInvariant env !$\rightarrow$! t ) !$\rightarrow$! t
+findP env Cond exit = findP-c (vart env) env Cond exit where
+    findP-c : {n m : Level} {A : Set n} {t : Set m} !$\rightarrow$! (tree : bt A) !$\rightarrow$! (env : Env A)
+           !$\rightarrow$! treeInvariant env !$\wedge$! stackInvariant env
+           !$\rightarrow$! (exit : (env : Env A) !$\rightarrow$! treeInvariant env !$\wedge$! stackInvariant env !$\rightarrow$! t ) !$\rightarrow$! t
+    findP-c leaf env Cond exit = exit env Cond
+    findP-c n@(node key-t value ltree rtree) env Cond exit with <-cmp key-t (varn env)
+    ... | tri< a !$\neg$!b !$\neg$!c = findP-c ltree record env {vart = ltree ; varl = (n !$\text{::}$! (varl env))} {!!} exit
+    ... | tri!$\approx$! !$\neg$!a b !$\neg$!c = exit record env {vart = n} {!!}
+    ... | tri> !$\neg$!a !$\neg$!b c = findP-c rtree record env {vart = rtree ; varl = (n !$\text{::}$! (varl env))} {!!} exit
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Paper/src/bt_verif/invariant.agda	Sun Apr 24 23:13:44 2022 +0900
@@ -0,0 +1,14 @@
+treeInvariant : {n : Level} {A : Set n} → (tree : bt A) → Set
+treeInvariant leaf = ⊀
+treeInvariant (node key value leaf leaf) = ⊀
+treeInvariant (node key value leaf n@(node key₁ value₁ t₁ t₂)) =  (key < key₁) ∧ treeInvariant n
+treeInvariant (node key value n@(node key₁ value₁ t t₁) leaf) =  treeInvariant n ∧ (key < key₁)
+treeInvariant (node key value n@(node key₁ value₁ t t₁) m@(node key₂ value₂ t₂ t₃)) = treeInvariant n ∧  (key < key₁) ∧ (key₁ < key₂) ∧ treeInvariant m
+
+stackInvariant : {n : Level} {A : Set n} → (tree : bt A) → (stack  : List (bt A)) → Set n
+stackInvariant {_} {A} _ [] = Lift _ ⊀
+stackInvariant {_} {A} tree (tree1 ∷ [] ) = tree1 ≡ tree
+stackInvariant {_} {A} tree (x ∷ tail @ (node key value leaf right ∷ _) ) = (right ≡ x) ∧ stackInvariant tree tail
+stackInvariant {_} {A} tree (x ∷ tail @ (node key value left leaf ∷ _) ) = (left ≡ x) ∧ stackInvariant tree tail
+stackInvariant {_} {A} tree (x ∷ tail @ (node key value left right ∷ _  )) = ( (left ≡ x) ∧ stackInvariant tree tail) √ ( (right ≡ x) ∧ stackInvariant tree tail)
+stackInvariant {_} {A} tree s = Lift _ ⊥
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Paper/src/bt_verif/invariant.agda.replaced	Sun Apr 24 23:13:44 2022 +0900
@@ -0,0 +1,14 @@
+treeInvariant : {n : Level} {A : Set n} !$\rightarrow$! (tree : bt A) !$\rightarrow$! Set
+treeInvariant leaf = !$\top$!
+treeInvariant (node key value leaf leaf) = !$\top$!
+treeInvariant (node key value leaf n@(node key!$\_{1}$! value!$\_{1}$! t!$\_{1}$! t!$\_{2}$!)) =  (key < key!$\_{1}$!) !$\wedge$! treeInvariant n
+treeInvariant (node key value n@(node key!$\_{1}$! value!$\_{1}$! t t!$\_{1}$!) leaf) =  treeInvariant n !$\wedge$! (key < key!$\_{1}$!)
+treeInvariant (node key value n@(node key!$\_{1}$! value!$\_{1}$! t t!$\_{1}$!) m@(node key!$\_{2}$! value!$\_{2}$! t!$\_{2}$! t!$\_{3}$!)) = treeInvariant n !$\wedge$!  (key < key!$\_{1}$!) !$\wedge$! (key!$\_{1}$! < key!$\_{2}$!) !$\wedge$! treeInvariant m
+
+stackInvariant : {n : Level} {A : Set n} !$\rightarrow$! (tree : bt A) !$\rightarrow$! (stack  : List (bt A)) !$\rightarrow$! Set n
+stackInvariant {_} {A} _ [] = Lift _ !$\top$!
+stackInvariant {_} {A} tree (tree1 !$\text{::}$! [] ) = tree1 !$\equiv$! tree
+stackInvariant {_} {A} tree (x !$\text{::}$! tail @ (node key value leaf right !$\text{::}$! _) ) = (right !$\equiv$! x) !$\wedge$! stackInvariant tree tail
+stackInvariant {_} {A} tree (x !$\text{::}$! tail @ (node key value left leaf !$\text{::}$! _) ) = (left !$\equiv$! x) !$\wedge$! stackInvariant tree tail
+stackInvariant {_} {A} tree (x !$\text{::}$! tail @ (node key value left right !$\text{::}$! _  )) = ( (left !$\equiv$! x) !$\wedge$! stackInvariant tree tail) √ ( (right !$\equiv$! x) !$\wedge$! stackInvariant tree tail)
+stackInvariant {_} {A} tree s = Lift _ !$\bot$!
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Paper/src/cbc-agda.agda	Sun Apr 24 23:13:44 2022 +0900
@@ -0,0 +1,22 @@
+module cbc-agda where
+
+open import Data.Nat
+open import Level renaming ( suc to succ ; zero to Zero )
+
+record Env : Set where
+  field
+    varx : ℕ
+    vary : ℕ
+open Env
+
+plus-com : {l : Level} {t : Set l} → Env → (next : Env → t) → (exit : Env → t) → t
+plus-com env next exit with vary env
+... | zero  = exit (record { varx = varx env ; vary = vary env })
+... | suc y = next (record { varx = suc (varx env) ; vary = y })
+
+{-# TERMINATING #-}
+plus-p : {l : Level} {t : Set l} → (env : Env) → (exit : Env → t) → t
+plus-p env exit = plus-com env ( λ env → plus-p env exit ) exit
+
+plus : ℕ → ℕ → Env
+plus x y = plus-p (record { varx = x ; vary = y }) (λ env → env)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Paper/src/cbc-agda.agda.replaced	Sun Apr 24 23:13:44 2022 +0900
@@ -0,0 +1,22 @@
+module cbc-agda where
+
+open import Data.Nat
+open import Level renaming ( suc to succ ; zero to Zero )
+
+record Env : Set where
+  field
+    varx : !$\mathbb{N}$!
+    vary : !$\mathbb{N}$!
+open Env
+
+plus-com : {l : Level} {t : Set l} !$\rightarrow$! Env !$\rightarrow$! (next : Env !$\rightarrow$! t) !$\rightarrow$! (exit : Env !$\rightarrow$! t) !$\rightarrow$! t
+plus-com env next exit with vary env
+... | zero  = exit (record { varx = varx env ; vary = vary env })
+... | suc y = next (record { varx = suc (varx env) ; vary = y })
+
+{-!$\#$! TERMINATING !$\#$!-}
+plus-p : {l : Level} {t : Set l} !$\rightarrow$! (env : Env) !$\rightarrow$! (exit : Env !$\rightarrow$! t) !$\rightarrow$! t
+plus-p env exit = plus-com env ( !$\lambda$! env !$\rightarrow$! plus-p env exit ) exit
+
+plus : !$\mathbb{N}$! !$\rightarrow$! !$\mathbb{N}$! !$\rightarrow$! Env
+plus x y = plus-p (record { varx = x ; vary = y }) (!$\lambda$! env !$\rightarrow$! env)
Binary file Paper/src/cbc-agda.agdai has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Paper/src/cbc-condition.agda	Sun Apr 24 23:13:44 2022 +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/Paper/src/cbc-condition.agda.replaced	Sun Apr 24 23:13:44 2022 +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/Paper/src/cbc-hoare-SoundnessC.agda	Sun Apr 24 23:13:44 2022 +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/Paper/src/cbc-hoare-SoundnessC.agda.replaced	Sun Apr 24 23:13:44 2022 +0900
@@ -0,0 +1,3 @@
+whileCallwP : (c : !$\mathbb{N}$!) !$\rightarrow$! whileTestPCallwP!$\prime$! 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/Paper/src/cbc-hoare-loop.agda	Sun Apr 24 23:13:44 2022 +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/Paper/src/cbc-hoare-loop.agda.replaced	Sun Apr 24 23:13:44 2022 +0900
@@ -0,0 +1,15 @@
+whileLoopPwP!$\prime$! : {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!$\prime$! zero env refl refl _ exit = exit env refl
+whileLoopPwP!$\prime$! (suc n) env refl refl next _ =
+    next (record env {varn = pred (varn env) ; vari = suc (vari env) }) refl (+-suc n (vari env))
+
+
+loopPwP!$\prime$! : {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!$\prime$! zero env refl refl exit = exit env refl
+loopPwP!$\prime$! (suc n) env refl refl exit
+    = whileLoopPwP!$\prime$! (suc n) env refl refl (!$\lambda$! env x y !$\rightarrow$! loopPwP!$\prime$! n env x y exit) exit
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Paper/src/cbc-hoare-loophelper.agda	Sun Apr 24 23:13:44 2022 +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/Paper/src/cbc-hoare-loophelper.agda.replaced	Sun Apr 24 23:13:44 2022 +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!$\prime$! 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/Paper/src/cbc-hoare-prim.agda	Sun Apr 24 23:13:44 2022 +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/Paper/src/cbc-hoare-prim.agda.replaced	Sun Apr 24 23:13:44 2022 +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/Paper/src/cbc-hoare-soundness.agda	Sun Apr 24 23:13:44 2022 +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/Paper/src/cbc-hoare-soundness.agda.replaced	Sun Apr 24 23:13:44 2022 +0900
@@ -0,0 +1,13 @@
+whileCallwP : (c : !$\mathbb{N}$!) !$\rightarrow$! whileTestPCallwP!$\prime$! c
+whileCallwP c = whileTestPwP {_} {_} c
+  (!$\lambda$! env s !$\rightarrow$! loopPwP!$\prime$! (c10 env) env (sym (pi2 s)) (conv env s) {!!})
+
+
+-- Goal: (env!$\_{1}$! : Envc) !$\rightarrow$!
+--        vari env!$\_{1}$! !$\equiv$! c10 env!$\_{1}$! !$\rightarrow$!
+--        loopPwP!$\prime$! 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/Paper/src/cbc-hoare-while.agda	Sun Apr 24 23:13:44 2022 +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/Paper/src/cbc-hoare-while.agda.replaced	Sun Apr 24 23:13:44 2022 +0900
@@ -0,0 +1,6 @@
+whileTestPCallwP!$\prime$! : (c :  !$\mathbb{N}$! ) !$\rightarrow$! Set
+whileTestPCallwP!$\prime$! c = whileTestPwP {_} {_} c (!$\lambda$! env s !$\rightarrow$! loopPwP!$\prime$! (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/Paper/src/cbc-hoare.agda	Sun Apr 24 23:13:44 2022 +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/Paper/src/cbc-hoare.agda.replaced	Sun Apr 24 23:13:44 2022 +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!$\prime$! : {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!$\prime$! zero env refl refl exit = exit env refl
+loopPwP!$\prime$! (suc n) env refl refl exit  = whileLoopPwP!$\prime$! (suc n) env refl refl (!$\lambda$! env x y !$\rightarrow$! loopPwP!$\prime$! n env x y exit) exit
+
+
+whileTestPCallwP!$\prime$! : (c :  !$\mathbb{N}$! ) !$\rightarrow$! Set
+whileTestPCallwP!$\prime$! c = whileTestPwP {_} {_} c (!$\lambda$! env s !$\rightarrow$! loopPwP!$\prime$! (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/Paper/src/cg1.cbc	Sun Apr 24 23:13:44 2022 +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/Paper/src/codeGearExample.cbc	Sun Apr 24 23:13:44 2022 +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/Paper/src/cong.agda	Sun Apr 24 23:13:44 2022 +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/Paper/src/cong.agda.replaced	Sun Apr 24 23:13:44 2022 +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/Paper/src/context.c	Sun Apr 24 23:13:44 2022 +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/Paper/src/context.h	Sun Apr 24 23:13:44 2022 +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/Paper/src/context1.c	Sun Apr 24 23:13:44 2022 +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/Paper/src/context2.c	Sun Apr 24 23:13:44 2022 +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/Paper/src/contextContinuation.cbc	Sun Apr 24 23:13:44 2022 +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/Paper/src/createCPUWorker.cbc	Sun Apr 24 23:13:44 2022 +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/Paper/src/createTaskManager.cbc	Sun Apr 24 23:13:44 2022 +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/Paper/src/cuLaunchKernel.cbc	Sun Apr 24 23:13:44 2022 +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/Paper/src/cudaTwice.cu	Sun Apr 24 23:13:44 2022 +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/Paper/src/env.agda	Sun Apr 24 23:13:44 2022 +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/Paper/src/env.agda.replaced	Sun Apr 24 23:13:44 2022 +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 Paper/src/env.agdai has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Paper/src/escape_agda.rb	Sun Apr 24 23:13:44 2022 +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/Paper/src/ex_cbc	Sun Apr 24 23:13:44 2022 +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/Paper/src/ex_code1	Sun Apr 24 23:13:44 2022 +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/Paper/src/ex_code2	Sun Apr 24 23:13:44 2022 +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/Paper/src/ex_stack.cbc	Sun Apr 24 23:13:44 2022 +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/Paper/src/ex_stub	Sun Apr 24 23:13:44 2022 +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/Paper/src/excbc.cbc	Sun Apr 24 23:13:44 2022 +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/Paper/src/executorInterface.h	Sun Apr 24 23:13:44 2022 +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/Paper/src/factrial.cbc	Sun Apr 24 23:13:44 2022 +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/Paper/src/function.agda	Sun Apr 24 23:13:44 2022 +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/Paper/src/function.agda.replaced	Sun Apr 24 23:13:44 2022 +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/Paper/src/gears-while.agda	Sun Apr 24 23:13:44 2022 +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/Paper/src/gears-while.agda.replaced	Sun Apr 24 23:13:44 2022 +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!$\prime$!}) ) | suc n =  let open !$\equiv$!-Reasoning  in
+          begin
+             n!$\prime$! + (vari env + 1)
+          !$\equiv$!!$\langle$! cong ( !$\lambda$! z !$\rightarrow$! n!$\prime$! + z ) ( +-sym  {vari env} {1} )  !$\rangle$!
+             n!$\prime$! + (1 + vari env )
+          !$\equiv$!!$\langle$! sym ( +-assoc (n!$\prime$!)  1 (vari env) ) !$\rangle$!
+             (n!$\prime$! + 1) + vari env
+          !$\equiv$!!$\langle$! cong ( !$\lambda$! z !$\rightarrow$! z + vari env )  +1!$\equiv$!suc  !$\rangle$!
+             (suc n!$\prime$! ) + 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/Paper/src/gears.agda	Sun Apr 24 23:13:44 2022 +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/Paper/src/gears.agda.replaced	Sun Apr 24 23:13:44 2022 +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!$\prime$! n1 p2 (!$\lambda$! n2 !$\rightarrow$!  ( vari n2 !$\equiv$! c10 ))))
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Paper/src/gencontext.c	Sun Apr 24 23:13:44 2022 +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 Paper/src/go has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Paper/src/go.go	Sun Apr 24 23:13:44 2022 +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/Paper/src/goto.cbc	Sun Apr 24 23:13:44 2022 +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/Paper/src/initContext.c	Sun Apr 24 23:13:44 2022 +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/Paper/src/interface.cbc	Sun Apr 24 23:13:44 2022 +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/Paper/src/iterateCall.cbc	Sun Apr 24 23:13:44 2022 +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/Paper/src/iteratePargoto.cbc	Sun Apr 24 23:13:44 2022 +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/Paper/src/iteratorInterface.h	Sun Apr 24 23:13:44 2022 +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/Paper/src/metaCodeGearExample.cbc	Sun Apr 24 23:13:44 2022 +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/Paper/src/metaCreateTask.cbc	Sun Apr 24 23:13:44 2022 +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/Paper/src/nat.agda	Sun Apr 24 23:13:44 2022 +0900
@@ -0,0 +1,3 @@
+data ℕ : Set where
+  zero : ℕ
+  suc  : ℕ → ℕ
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Paper/src/nat.agda.replaced	Sun Apr 24 23:13:44 2022 +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/Paper/src/openMP.c	Sun Apr 24 23:13:44 2022 +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/Paper/src/parGotoCreateTask.cbc	Sun Apr 24 23:13:44 2022 +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/Paper/src/putSynchronizedQueue.cbc	Sun Apr 24 23:13:44 2022 +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/Paper/src/queueInterface.h	Sun Apr 24 23:13:44 2022 +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/Paper/src/record.agda	Sun Apr 24 23:13:44 2022 +0900
@@ -0,0 +1,4 @@
+record Env : Set where
+  field
+    varn : ℕ
+    vari : ℕ
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Paper/src/record.agda.replaced	Sun Apr 24 23:13:44 2022 +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/Paper/src/redBlackTreeTest.agda	Sun Apr 24 23:13:44 2022 +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/Paper/src/redBlackTreeTest.agda.replaced	Sun Apr 24 23:13:44 2022 +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/Paper/src/semaphoreInterface.h	Sun Apr 24 23:13:44 2022 +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/Paper/src/sendTask.cbc	Sun Apr 24 23:13:44 2022 +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/Paper/src/singleLinkedQueue.cbc	Sun Apr 24 23:13:44 2022 +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/Paper/src/singleLinkedQueueTest.cbc	Sun Apr 24 23:13:44 2022 +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/Paper/src/singleLinkedQueueTest_script.cbc	Sun Apr 24 23:13:44 2022 +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/Paper/src/singleLinkedStackInterface.cbc	Sun Apr 24 23:13:44 2022 +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/Paper/src/sound-conv.agda	Sun Apr 24 23:13:44 2022 +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/Paper/src/sound-conv.agda.replaced	Sun Apr 24 23:13:44 2022 +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/Paper/src/sound-impl.agda	Sun Apr 24 23:13:44 2022 +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/Paper/src/sound-impl.agda.replaced	Sun Apr 24 23:13:44 2022 +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/Paper/src/sound-loop.agda	Sun Apr 24 23:13:44 2022 +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/Paper/src/sound-loop.agda.replaced	Sun Apr 24 23:13:44 2022 +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/Paper/src/sound-looppsem.agda	Sun Apr 24 23:13:44 2022 +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/Paper/src/sound-looppsem.agda.replaced	Sun Apr 24 23:13:44 2022 +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/Paper/src/sound-pcom.agda	Sun Apr 24 23:13:44 2022 +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/Paper/src/sound-pcom.agda.replaced	Sun Apr 24 23:13:44 2022 +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/Paper/src/sound-psemcom.agda	Sun Apr 24 23:13:44 2022 +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/Paper/src/sound-psemcom.agda.replaced	Sun Apr 24 23:13:44 2022 +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/Paper/src/stack-product.agda	Sun Apr 24 23:13:44 2022 +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/Paper/src/stack-product.agda.replaced	Sun Apr 24 23:13:44 2022 +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!$\prime$!
+  where
+    test01!$\prime$! : {a : Set} !$\rightarrow$! (SingleLinkedStack a !$\times$! Maybe a) !$\rightarrow$! Bool
+    test01!$\prime$! (record { top = Nothing } , _) = False
+    test01!$\prime$! (record { top = Just x } ,  _)  = True
+
+
+test02 : {a : Set} !$\rightarrow$! CodeSegment (SingleLinkedStack a) (SingleLinkedStack a !$\times$! Maybe a)
+test02 = cs test02!$\prime$!
+  where
+    test02!$\prime$! : {a : Set} !$\rightarrow$! SingleLinkedStack a !$\rightarrow$! (SingleLinkedStack a !$\times$! Maybe a)
+    test02!$\prime$! stack = goto popSingleLinkedStack (stack , (cs id))
+
+
+test03 : {a : Set} !$\rightarrow$! CodeSegment a (SingleLinkedStack a)
+test03  = cs test03!$\prime$!
+  where
+    test03!$\prime$! : {a : Set} !$\rightarrow$! a !$\rightarrow$! SingleLinkedStack a
+    test03!$\prime$! 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/Paper/src/stack-subtype-sample.agda	Sun Apr 24 23:13:44 2022 +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/Paper/src/stack-subtype-sample.agda.replaced	Sun Apr 24 23:13:44 2022 +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/Paper/src/stack-subtype.agda	Sun Apr 24 23:13:44 2022 +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/Paper/src/stack-subtype.agda.replaced	Sun Apr 24 23:13:44 2022 +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/Paper/src/stack.agda	Sun Apr 24 23:13:44 2022 +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/Paper/src/stack.agda.replaced	Sun Apr 24 23:13:44 2022 +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!$\prime$! {n} {m} stack cs
+  where
+    pop2SingleLinkedStack!$\prime$! : {n m : Level } {t : Set m }  !$\rightarrow$! SingleLinkedStack a !$\rightarrow$! (Code : SingleLinkedStack a !$\rightarrow$! (Maybe a) !$\rightarrow$! (Maybe a) !$\rightarrow$! t) !$\rightarrow$! t
+    pop2SingleLinkedStack!$\prime$! 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!$\prime$! {n} {m} stack cs
+  where
+    get2SingleLinkedStack!$\prime$! : {n m : Level} {t : Set m } !$\rightarrow$! SingleLinkedStack a !$\rightarrow$! (Code : SingleLinkedStack a !$\rightarrow$! (Maybe a) !$\rightarrow$! (Maybe a) !$\rightarrow$! t) !$\rightarrow$! t
+    get2SingleLinkedStack!$\prime$! 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 Paper/src/stack.agdai has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Paper/src/stackImpl.agda	Sun Apr 24 23:13:44 2022 +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/Paper/src/stackImpl.agda.replaced	Sun Apr 24 23:13:44 2022 +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/Paper/src/stackTest.agda	Sun Apr 24 23:13:44 2022 +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/Paper/src/stackTest.agda.replaced	Sun Apr 24 23:13:44 2022 +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 Paper/src/stackTest.agdai has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Paper/src/stackimpl.cbc	Sun Apr 24 23:13:44 2022 +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/Paper/src/stub.cbc	Sun Apr 24 23:13:44 2022 +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/Paper/src/stubCodeGear.cbc	Sun Apr 24 23:13:44 2022 +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/Paper/src/subtype.agda	Sun Apr 24 23:13:44 2022 +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/Paper/src/subtype.agda.replaced	Sun Apr 24 23:13:44 2022 +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/Paper/src/sync_dequeue.c	Sun Apr 24 23:13:44 2022 +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/Paper/src/sync_enqueue.c	Sun Apr 24 23:13:44 2022 +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/Paper/src/synchronizedQueue.h	Sun Apr 24 23:13:44 2022 +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/Paper/src/taskManagerInterface.cbc	Sun Apr 24 23:13:44 2022 +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/Paper/src/term1.agda	Sun Apr 24 23:13:44 2022 +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/Paper/src/term1.agda.replaced	Sun Apr 24 23:13:44 2022 +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/Paper/src/term2.agda	Sun Apr 24 23:13:44 2022 +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/Paper/src/term2.agda.replaced	Sun Apr 24 23:13:44 2022 +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/Paper/src/term3.agda	Sun Apr 24 23:13:44 2022 +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/Paper/src/term3.agda.replaced	Sun Apr 24 23:13:44 2022 +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/Paper/src/termination.agda	Sun Apr 24 23:13:44 2022 +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/Paper/src/termination.agda.replaced	Sun Apr 24 23:13:44 2022 +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 Paper/src/termination.agdai has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Paper/src/tree.agda	Sun Apr 24 23:13:44 2022 +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/Paper/src/tree.agda.replaced	Sun Apr 24 23:13:44 2022 +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/Paper/src/twice.c	Sun Apr 24 23:13:44 2022 +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/Paper/src/while-test.agda	Sun Apr 24 23:13:44 2022 +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/Paper/src/while-test.agda.replaced	Sun Apr 24 23:13:44 2022 +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/Paper/src/while_loop_impl/init_cg.agda	Sun Apr 24 23:13:44 2022 +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} )
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Paper/src/while_loop_impl/init_cg.agda.replaced	Sun Apr 24 23:13:44 2022 +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} )
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Paper/src/while_loop_impl/while_loop.agda	Sun Apr 24 23:13:44 2022 +0900
@@ -0,0 +1,5 @@
+{-# TERMINATING #-}
+whileLoop : {l : Level} {t : Set l} → Env → (Code : Env → t) → t
+whileLoop env next with lt 0 (varn env)
+whileLoop env next | false = next env
+whileLoop env next | true = whileLoop (record {varn = (varn env) - 1 ; vari = (vari env) + 1}) next
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Paper/src/while_loop_impl/while_loop.agda.replaced	Sun Apr 24 23:13:44 2022 +0900
@@ -0,0 +1,5 @@
+{-!$\#$! TERMINATING !$\#$!-}
+whileLoop : {l : Level} {t : Set l} !$\rightarrow$! Env !$\rightarrow$! (Code : Env !$\rightarrow$! t) !$\rightarrow$! t
+whileLoop env next with lt 0 (varn env)
+whileLoop env next | false = next env
+whileLoop env next | true = whileLoop (record {varn = (varn env) - 1 ; vari = (vari env) + 1}) next
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Paper/src/while_loop_impl/while_loop_c.agda	Sun Apr 24 23:13:44 2022 +0900
@@ -0,0 +1,2 @@
+whileLoopC : ℕ → Env
+whileLoopC n = whileTest n (λ env → whileLoop env (λ env1 → env1 ))
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Paper/src/while_loop_impl/while_loop_c.agda.replaced	Sun Apr 24 23:13:44 2022 +0900
@@ -0,0 +1,2 @@
+whileLoopC : !$\mathbb{N}$! !$\rightarrow$! Env
+whileLoopC n = whileTest n (!$\lambda$! env !$\rightarrow$! whileLoop env (!$\lambda$! env1 !$\rightarrow$! env1 ))
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Paper/src/while_loop_impl/while_loop_dg.agda	Sun Apr 24 23:13:44 2022 +0900
@@ -0,0 +1,5 @@
+record Env  : Set where
+  field
+    varn : ℕ
+    vari : ℕ
+open Env
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Paper/src/while_loop_impl/while_loop_dg.agda.replaced	Sun Apr 24 23:13:44 2022 +0900
@@ -0,0 +1,5 @@
+record Env  : Set where
+  field
+    varn : !$\mathbb{N}$!
+    vari : !$\mathbb{N}$!
+open Env
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Paper/src/while_loop_verif/conversion.agda	Sun Apr 24 23:13:44 2022 +0900
@@ -0,0 +1,10 @@
+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
+          ∎
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Paper/src/while_loop_verif/conversion.agda.replaced	Sun Apr 24 23:13:44 2022 +0900
@@ -0,0 +1,10 @@
+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$!
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Paper/src/while_loop_verif/init_cg.agda	Sun Apr 24 23:13:44 2022 +0900
@@ -0,0 +1,7 @@
+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) -- PostCondition
+    proof2 = record {pi1 = refl ; pi2 = refl}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Paper/src/while_loop_verif/init_cg.agda.replaced	Sun Apr 24 23:13:44 2022 +0900
@@ -0,0 +1,7 @@
+whileTest!$\prime$! : {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!$\prime$! {_} {_} {c10} next = next env proof2
+  where
+    env : Env
+    env = record {vari = 0 ; varn = c10}
+    proof2 : ((vari env) !$\equiv$! 0) !$\wedge$! ((varn env) !$\equiv$! c10) -- PostCondition
+    proof2 = record {pi1 = refl ; pi2 = refl}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Paper/src/while_loop_verif/verif.agda	Sun Apr 24 23:13:44 2022 +0900
@@ -0,0 +1,4 @@
+proofGearsTermS : {c10 :  ℕ } → ⊀
+proofGearsTermS {c10} = whileTest' {_} {_}  {c10} (λ n p →  conversion1 n p (λ n1 p1 →
+    TerminatingLoopS Env (λ env → varn env)
+        (λ n2 p2 loop → whileLoopSeg {_} {_} {c10} n2 p2 loop (λ ne pe → whileTestSpec1 c10 ne pe)) n1 p1 )) 
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Paper/src/while_loop_verif/verif.agda.replaced	Sun Apr 24 23:13:44 2022 +0900
@@ -0,0 +1,4 @@
+proofGearsTermS : {c10 :  !$\mathbb{N}$! } !$\rightarrow$! !$\top$!
+proofGearsTermS {c10} = whileTest!$\prime$! {_} {_}  {c10} (!$\lambda$! n p !$\rightarrow$!  conversion1 n p (!$\lambda$! n1 p1 !$\rightarrow$!
+    TerminatingLoopS Env (!$\lambda$! env !$\rightarrow$! varn env)
+        (!$\lambda$! n2 p2 loop !$\rightarrow$! whileLoopSeg {_} {_} {c10} n2 p2 loop (!$\lambda$! ne pe !$\rightarrow$! whileTestSpec1 c10 ne pe)) n1 p1 )) 
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Paper/src/while_loop_verif/verif_loop.agda	Sun Apr 24 23:13:44 2022 +0900
@@ -0,0 +1,12 @@
+TerminatingLoopS : {l : Level} {t : Set l} (Index : Set ) → {Invraiant : Index → Set } → ( reduce : Index → ℕ)
+   → (loop : (r : Index)  → Invraiant r → (next : (r1 : Index)  → Invraiant r1 → reduce r1 < reduce r  → t ) → t)
+   → (r : Index) → (p : Invraiant r)  → t 
+TerminatingLoopS {_} {t} Index {Invraiant} reduce loop  r p with <-cmp 0 (reduce r)
+... | tri≈ ¬a b ¬c = loop r p (λ r1 p1 lt → ⊥-elim (lemma3 b lt) ) 
+... | tri< a ¬b ¬c = loop r p (λ r1 p1 lt1 → TerminatingLoop1 (reduce r) r r1 (≀-step lt1) p1 lt1 ) where 
+    TerminatingLoop1 : (j : ℕ) → (r r1 : Index) → reduce r1 < suc j  → Invraiant r1 →  reduce r1 < reduce r → t
+    TerminatingLoop1 zero r r1 n≀j p1 lt = loop r1 p1 (λ r2 p1 lt1 → ⊥-elim (lemma5 n≀j lt1)) 
+    TerminatingLoop1 (suc j) r r1  n≀j p1 lt with <-cmp (reduce r1) (suc j)
+    ... | tri< a ¬b ¬c = TerminatingLoop1 j r r1 a p1 lt 
+    ... | tri≈ ¬a b ¬c = loop r1 p1 (λ r2 p2 lt1 → TerminatingLoop1 j r1 r2 (subst (λ k → reduce r2 < k ) b lt1 ) p2 lt1 )
+    ... | tri> ¬a ¬b c =  ⊥-elim ( nat-≀> c n≀j )   
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Paper/src/while_loop_verif/verif_loop.agda.replaced	Sun Apr 24 23:13:44 2022 +0900
@@ -0,0 +1,12 @@
+TerminatingLoopS : {l : Level} {t : Set l} (Index : Set ) !$\rightarrow$! {Invraiant : Index !$\rightarrow$! Set } !$\rightarrow$! ( reduce : Index !$\rightarrow$! !$\mathbb{N}$!)
+   !$\rightarrow$! (loop : (r : Index)  !$\rightarrow$! Invraiant r !$\rightarrow$! (next : (r1 : Index)  !$\rightarrow$! Invraiant r1 !$\rightarrow$! reduce r1 < reduce r  !$\rightarrow$! t ) !$\rightarrow$! t)
+   !$\rightarrow$! (r : Index) !$\rightarrow$! (p : Invraiant r)  !$\rightarrow$! t 
+TerminatingLoopS {_} {t} Index {Invraiant} reduce loop  r p with <-cmp 0 (reduce r)
+... | tri!$\approx$! !$\neg$!a b !$\neg$!c = loop r p (!$\lambda$! r1 p1 lt !$\rightarrow$! !$\bot$!-elim (lemma3 b lt) ) 
+... | tri< a !$\neg$!b !$\neg$!c = loop r p (!$\lambda$! r1 p1 lt1 !$\rightarrow$! TerminatingLoop1 (reduce r) r r1 (!$\leq$!-step lt1) p1 lt1 ) where 
+    TerminatingLoop1 : (j : !$\mathbb{N}$!) !$\rightarrow$! (r r1 : Index) !$\rightarrow$! reduce r1 < suc j  !$\rightarrow$! Invraiant r1 !$\rightarrow$!  reduce r1 < reduce r !$\rightarrow$! t
+    TerminatingLoop1 zero r r1 n!$\leq$!j p1 lt = loop r1 p1 (!$\lambda$! r2 p1 lt1 !$\rightarrow$! !$\bot$!-elim (lemma5 n!$\leq$!j lt1)) 
+    TerminatingLoop1 (suc j) r r1  n!$\leq$!j p1 lt with <-cmp (reduce r1) (suc j)
+    ... | tri< a !$\neg$!b !$\neg$!c = TerminatingLoop1 j r r1 a p1 lt 
+    ... | tri!$\approx$! !$\neg$!a b !$\neg$!c = loop r1 p1 (!$\lambda$! r2 p2 lt1 !$\rightarrow$! TerminatingLoop1 j r1 r2 (subst (!$\lambda$! k !$\rightarrow$! reduce r2 < k ) b lt1 ) p2 lt1 )
+    ... | tri> !$\neg$!a !$\neg$!b c =  !$\bot$!-elim ( nat-!$\leq$!> c n!$\leq$!j )   
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Paper/src/while_loop_verif/verif_term.agda	Sun Apr 24 23:13:44 2022 +0900
@@ -0,0 +1,5 @@
+whileTestSpec1 : (c10 : ℕ) →  (e1 : Env ) → vari e1 ≡ c10 → ⊀
+whileTestSpec1 _ _ x = tt
+
+proofGears : {c10 :  ℕ } → ⊀
+proofGears {c10} = whileTest' {_} {_}  {c10} (λ n p1 →  conversion1 n p1 (λ n1 p2 → whileLoop' n1 p2 (λ n2 p3 → whileTestSpec1 c10 n2 p3 ))) 
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Paper/src/while_loop_verif/verif_term.agda.replaced	Sun Apr 24 23:13:44 2022 +0900
@@ -0,0 +1,5 @@
+whileTestSpec1 : (c10 : !$\mathbb{N}$!) !$\rightarrow$!  (e1 : Env ) !$\rightarrow$! vari e1 !$\equiv$! c10 !$\rightarrow$! !$\top$!
+whileTestSpec1 _ _ x = tt
+
+proofGears : {c10 :  !$\mathbb{N}$! } !$\rightarrow$! !$\top$!
+proofGears {c10} = whileTest!$\prime$! {_} {_}  {c10} (!$\lambda$! n p1 !$\rightarrow$!  conversion1 n p1 (!$\lambda$! n1 p2 !$\rightarrow$! whileLoop!$\prime$! n1 p2 (!$\lambda$! n2 p3 !$\rightarrow$! whileTestSpec1 c10 n2 p3 ))) 
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Paper/src/while_loop_verif/while_loop.agda	Sun Apr 24 23:13:44 2022 +0900
@@ -0,0 +1,24 @@
+{-# TERMINATING #-}
+whileLoop' : {l : Level} {t : Set l} → (env : Env) → {c10 :  ℕ } → ((varn env) + (vari env) ≡ c10)
+   → (Code : (e1 : Env )→ vari e1 ≡ c10 → t) → t
+whileLoop' env proof next with  ( suc zero  ≀? (varn  env) )
+whileLoop' env {c10} proof next | no p = next env ( begin
+       vari env            ≡⟚ refl ⟩
+       0 + vari env        ≡⟚ cong (λ k → k + vari env) (sym (lemma1 p )) ⟩
+       varn env + vari env ≡⟚ proof ⟩
+       c10 ∎ ) where open ≡-Reasoning  
+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
+          ∎
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Paper/src/while_loop_verif/while_loop.agda.replaced	Sun Apr 24 23:13:44 2022 +0900
@@ -0,0 +1,24 @@
+{-!$\#$! TERMINATING !$\#$!-}
+whileLoop!$\prime$! : {l : Level} {t : Set l} !$\rightarrow$! (env : Env) !$\rightarrow$! {c10 :  !$\mathbb{N}$! } !$\rightarrow$! ((varn env) + (vari env) !$\equiv$! c10)
+   !$\rightarrow$! (Code : (e1 : Env )!$\rightarrow$! vari e1 !$\equiv$! c10 !$\rightarrow$! t) !$\rightarrow$! t
+whileLoop!$\prime$! env proof next with  ( suc zero  !$\leq$!? (varn  env) )
+whileLoop!$\prime$! env {c10} proof next | no p = next env ( begin
+       vari env            !$\equiv$!!$\langle$! refl !$\rangle$!
+       0 + vari env        !$\equiv$!!$\langle$! cong (!$\lambda$! k !$\rightarrow$! k + vari env) (sym (lemma1 p )) !$\rangle$!
+       varn env + vari env !$\equiv$!!$\langle$! proof !$\rangle$!
+       c10 !$\blacksquare$! ) where open !$\equiv$!-Reasoning  
+whileLoop!$\prime$! env {c10} proof next | yes p = whileLoop!$\prime$! 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!$\prime$!}) ) | suc n =  let open !$\equiv$!-Reasoning  in begin
+             n!$\prime$! + (vari env + 1)  !$\equiv$!!$\langle$! cong ( !$\lambda$! z !$\rightarrow$! n!$\prime$! + z ) ( +-sym  {vari env} {1} )  !$\rangle$!
+             n!$\prime$! + (1 + vari env ) !$\equiv$!!$\langle$! sym ( +-assoc (n!$\prime$!)  1 (vari env) ) !$\rangle$!
+             (n!$\prime$! + 1) + vari env  !$\equiv$!!$\langle$! cong ( !$\lambda$! z !$\rightarrow$! z + vari env )  +1!$\equiv$!suc  !$\rangle$!
+             (suc n!$\prime$! ) + vari env !$\equiv$!!$\langle$!!$\rangle$!
+             varn env + vari env  !$\equiv$!!$\langle$! proof  !$\rangle$!
+             c10
+          !$\blacksquare$!
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Paper/src/workerRun.cbc	Sun Apr 24 23:13:44 2022 +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/Paper/src/zero.agda	Sun Apr 24 23:13:44 2022 +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/Paper/src/zero.agda.replaced	Sun Apr 24 23:13:44 2022 +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/Paper/tex/.#cbc_agda.tex	Sun Apr 24 23:13:44 2022 +0900
@@ -0,0 +1,1 @@
+soto@Szeleta.local.353
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Paper/tex/.#rbt_verif.tex	Sun Apr 24 23:13:44 2022 +0900
@@ -0,0 +1,1 @@
+soto@Szeleta.local.855
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Paper/tex/abstract.tex	Sun Apr 24 23:13:44 2022 +0900
@@ -0,0 +1,15 @@
+\renewcommand{\abstractname}{\normalsize 芁 æ—š}
+\begin{abstract}
+	圓研究宀にお Continuation based C\cite{cbc-gcc} (以䞋CbC) なるC蚀語の䞋䜍蚀語に圓たる蚀語を開発しおいる。
+	先行研究\cite{ryokka-master}にお Floyd-Hoare Logic\cite{hoare}(以䞋Hoare Logic)を甚いおその怜蚌を行なった。
+	本皿では、先行研究にお実斜されなかった CbC における RedBlackTree の怜蚌を Hoare Logic を甚いお怜蚌するこずを目指す。
+\end{abstract}
+
+\renewcommand{\abstractname}{\normalsize Abstract}
+\begin{abstract}
+	We are developing a language called Continuation based C\cite{cbc-gcc} (CbC), which is a lower language of the C.
+	In a previous study\cite{ryokka-master} , Floyd-Hoare Logic\cite{hoare} (Hoare Logic) was used to validate it.
+	In this paper, we aim to use Hoare Logic to validate the red-black tree in CbC, which was not performed in previous studies.
+\end{abstract}
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Paper/tex/abstract/abstract.tex	Sun Apr 24 23:13:44 2022 +0900
@@ -0,0 +1,9 @@
+\begin{abstract}
+	圓研究宀にお Continuation based C (以䞋CbC) なるC蚀語の䞋䜍蚀語に圓たる蚀語を開発しおいる。
+	倖間による先行研究にお Floyd-Hoare Logic(以䞋Hoare Logic)を甚いおその怜蚌を行なった。
+	本皿では、先行研究にお実斜されなかった CbC における赀黒朚の怜蚌を Hoare Logic を甚いお怜蚌するこずを目指す。
+	\\ \\
+	We are developing a language called Continuation based C (CbC), which is a Subordinate language of the C.
+	M.Eng Hokama verified it by using Floyd-Hoare Logic (Hoare Logic) in a previous study.
+	In this paper, we aim to use Hoare Logic to validate the red-black tree in CbC, which was not performed in previous studies.
+\end{abstract}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Paper/tex/agda.tex	Sun Apr 24 23:13:44 2022 +0900
@@ -0,0 +1,120 @@
+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-term-post} にある \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 ではこのような圢で等匏を倉圢しながら蚌明を行う事ができる。
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Paper/tex/cbc.tex	Sun Apr 24 23:13:44 2022 +0900
@@ -0,0 +1,43 @@
+\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}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Paper/tex/cbc_agda.tex	Sun Apr 24 23:13:44 2022 +0900
@@ -0,0 +1,51 @@
+\section{Continuation based C ず Agda}
+本章では CbC に察応した Agda を蚘述する際の手法を説明する。
+
+\subsection{GearsAgda 圢匏で曞く agda}
+Agdaでは関数の再垰呌び出しが可胜であるが、CbCでは倀が 垰っお来ない。そのためAgda
+で実装を行う際には再垰呌び出しを行わないようにする。
+code \ref{agda-cg}が䟋ずなるコヌドである。
+
+\lstinputlisting[caption= Agdaでの CodeGear の䟋, label=agda-cg, firstline=6]{src/agda/cbc-agda.agda.replaced}
+
+1行目で Data Gear の定矩を行っおいる。
+今回は 2぀の数倀の足し算を行うコヌドを実装するため、
+varx ず vary の二぀の自然数を持぀。
+
+7行目の plus-com が受け取っおいる倀を定矩しおいる。
+Env ず next ず exit を受け取っおいる。
+
+next ず next は Env → t ずなっおいるが、
+これは Env を受け取っお䞍定の型 (t) を返すずいう意味である。
+これで 次の関数遷移先を取れるようにしおいる。
+
+
+9行目から10行目では入っおきた varx で堎合分けを行っおおり、varx が zero ならそのたた vary を返し、次の遷移先ぞ、
+varx が zero 以倖なら varx から1を匕いお、vary に 1 を足しお遷移する。
+
+13行目でxがzero以倖の倀であった堎合の遷移先を指定しおいる。
+ここでは自身である plus-p をルヌプするように指定した。
+CbCでは再起凊理を実装するこずはできないが、自己呌び出しを行うこずはできるので、
+それに合ったようにAgdaでも実装を行なう。
+
+17行目が実際に倀を入れる郚分で、
+Exitが実行の終了になるようにしおいる。
+
+前述した加算を行うコヌドず比范するず、䞍定の型 (t) により継続を行なっおいる郚分が芋える。
+これがAgdaで衚珟された CodeGear ずなり、本論では Gears Agda ず呌ぶ
+
+\subsection{agda による Meta Gears}
+通垞の Meta Gears はノヌマルレベルの CodeGear、 DataGear では扱えないメタレベルの蚈算を扱う単䜍である。
+今回はその Meta Gears をAgdaによる怜蚌の為に甚いる。
+
+\begin{itemize}
+\item Meta DataGear \mbox{}\\
+  Agda 䞊で Meta DataGear を持぀こずでデヌタ構造自䜓が関係を持぀デヌタを䜜るこずができる。
+  これを甚いるこずで、仕様ずなる制玄条件を蚘述するこずができる。
+
+\item Meta CodeGear\mbox{}\\
+  Meta CodeGear は 通垞の CodeGear では扱えないメタレベルの蚈算を扱う CodeGear
+  である。Agda での Meta CodeGear は Meta DataGear を匕数に取りそれらの関係を返
+  す CodeGear である。故に、Meta CodeGear は Agda で蚘述した CodeGear の怜蚌そのものである
+\end{itemize}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Paper/tex/continuation_agda.tex	Sun Apr 24 23:13:44 2022 +0900
@@ -0,0 +1,9 @@
+\section{Code Gearに合わせた Agda}
+怜蚌を行うために、AgdaのコヌドもCbCに合わせお蚘述を行う必芁がある。
+実際に以䞋がコヌドずなる。
+
+CbCの特城である、倉数を継続しお実行するために、必芁な倉数は Envc に栌玍する。
+コヌドに (next : Envc → t) ず (exit : Envc → t) を匕数に受け取っおいる。
+これで次の遷移先を匕数ずしお受け取る事で、実行を継続しおいるこずを瀺す。
+= の埌は next Envc もしくは exit Envc ずなっおいるこずからも
+実行を継続しおいる事が分かる。
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Paper/tex/future.tex	Sun Apr 24 23:13:44 2022 +0900
@@ -0,0 +1,24 @@
+\chapter{たずめ}
+
+本論文では、Agda による CbCの怜蚌方法ず Gears Agda による
+Left Learning Red Black Tree の実装に぀いお述べた。
+したがっお、Gears Agda で再起凊理ず再代入を含んだ
+耇雑なアルゎリズムも蚘述できる事が刀明した。
+今回の研究䞭に耇雑なアルゎリズムを Gears Agda にお実装するこずで
+埗られた知芋は、今埌の研究で倧いに圹立぀ず考える。
+
+今埌の課題ずしお、怜蚌を行う事が挙げられる。
+怜蚌には、Meta Code Gear が Pre / Post Condition の条件を
+満たしおいるのか比范を行い、Hoare Logicに圓おはめる事。
+そしお接続された条件の接続ず健党性の蚌明を行う必芁がある。
+しかし、Imple を甚いた Hoare Logic による蚌明は、
+While Loop でも かなり長いコヌドになっおいた。
+これで Left Learning Red Black Tree の怜蚌を
+行うのは難しいため、別の手法を暡玢するこずも念頭に入れる。
+
+展望ずしおは、Gears Agda コヌドから CbC コヌドの倉換をしたい。
+Gears Agda は Agda の蚘述方法が特殊である事がコヌディングを耇雑にしおいるが、
+CbC はC蚀語ずアセンブラの䞭間に䜍眮しおいるため、コヌディングはさらに困難である。
+そのため、Gears Agdaのコヌドを CbC に倉換できるようにしたい。
+これができるようになれば、CbC での蚘述も Agda での蚌明も容易になるず考えおいる。
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Paper/tex/hoare.tex	Sun Apr 24 23:13:44 2022 +0900
@@ -0,0 +1,38 @@
+
+\section{Hoare Logic}
+Hoare Logic\ref{hoare} ずは C.A.R Hoare、
+R.W Floyd が考案したプログラムの怜蚌の手法である。
+これは、「プログラムの事前条件(P)が成立しおいるずき、コマンド(C)実行しお停止するず事埌条件(Q)が成り立぀」
+ずいうもので、CbCの実行を継続するずいう性質に非垞に盞性が良い。
+Hoare Logic を衚蚘するず以䞋のようになる。
+$$ \{P\}\ C \ \{Q\} $$
+この3぀組は Hoare Triple ず呌ばれる。
+
+Hoare Triple の事埌条件を受け取り、
+異なる条件を返す別の Hoare Triple を繋げるこずでプログラムを蚘述しおいく。
+
+Hoare Logic の怜蚌では、
+「条件がすべお正しく接続されおいる」か぀「コマンドが停止する」こずが必芁である。
+これらを満たし、
+事前条件から事埌条件を導けるこずを怜蚌するこずで Hoare Logic の健党性を瀺すこずができる。
+
+\subsection{Hoare Logic による Code Gear の怜蚌手法 }
+
+\figref{hoare}が agda にお Hoare Logic を甚いお Code Gear を怜蚌する際の流れになる。
+input DataGear が Hoare Logic䞊の Pre Condition(事前条件)ずなり、
+output DataGear が Post Conditionずなる。
+各DataGear が Pre / Post Condition を満たしおいるかの怜蚌は、
+各 Condition を Meta DataGear で定矩し、
+条件を満たしおいるのかをMeta CodeGear で怜蚌する。
+
+\begin{figure}[H]
+  \begin{center}
+    \includegraphics[height=2.4cm]{fig/hoare_cg_dg.pdf}
+  \end{center}
+  \caption{CodeGear、DataGear での Hoare Logic}
+  \label{hoare}
+\end{figure}
+
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Paper/tex/intro.tex	Sun Apr 24 23:13:44 2022 +0900
@@ -0,0 +1,34 @@
+\section{プログラミング蚀語の怜蚌}
+\pagenumbering{arabic}
+
+OSやアプリケヌションの信頌性を高めるこずは重芁な課題である。
+信頌性を高める為にはプログラムが仕様を満たした実装を怜蚌する必芁がある。
+具䜓的には「モデル怜査」や「定理蚌明」などが怜蚌手法ずしおあげられる。
+
+圓研究宀では Continuation based C (CbC) ずいう蚀語を開発しおいる。
+CbC ずは、C蚀語からルヌプ制埡構造ずサブルヌチンコヌルを取り陀き、
+継続を導入した C蚀語の䞋䜍蚀語である。
+その為、それを実装した際のプログラムが正確に動䜜するのか怜蚌を行いたい。
+
+%\section{研究目的}
+仕様に合った実装を実斜しおいるこずの怜蚌手法ずしお Hoare Logic が知られおいる。
+Hoare Logic は事前条件が成り立っおいるずきにある蚈算(以䞋コマンド)を実行した埌に、
+事埌条件が成り立぀こずでコマンドの怜蚌を行う。
+この定矩が CbC の実行を継続するずいう性質ず盞性が良い。
+
+CbCでは実行を継続するため、ある関数の実行結果は事埌条件になるが、
+その実行結果が遷移する次の関数の事前条件になる。
+それを繋げおいくため、個々の関数の
+正圓性を蚌明するこずず接続の健党性に぀いお蚌明するだけでプログラム党䜓の怜蚌を行うこずができる。
+
+CbCではルヌプ制埡構造を取り陀いおいるため、
+CbCにおルヌプが含たれるプログラムを䜜成した際の怜蚌を行う必芁がある。
+先行研究ではCbCにおけるWhileLoopの怜蚌を行なっおいる。
+
+Agdaが倉数ぞの再代入を蚱しおいない為、
+ルヌプが存圚し、か぀再代入がプログラムに含たれる RedBlackTree の怜蚌を行いたい。
+
+% これらのこずから、本皿では Hoare Logic を甚いお CbC を怜蚌するこずを目指す。
+これらのこずから、CbC に察応するように Agda で RedBlackTree を蚘述し、
+Hoare Logic により怜蚌を行うこずを目指す。
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Paper/tex/intro/intro.tex	Sun Apr 24 23:13:44 2022 +0900
@@ -0,0 +1,15 @@
+\section{研究目的}
+	OS やアプリケヌションの信頌性を高めるこずは重芁な課題である。
+	信頌性を高める為には仕様を満たしたプログラムが実装されおいるこずを怜蚌する必芁がある。
+	具䜓的には「モデル怜査」や「定理蚌明」などが怜蚌手法ずしお挙げられる。
+
+	研究宀で CbC ずいう蚀語を開発しおいる。
+	CbC ずは、C蚀語からルヌプ制埡構造ずサブルヌチンコヌルを取り陀き、継続を導入した C蚀語の䞋䜍蚀語である。
+	この蚀語の信甚性を怜蚌したい。
+	
+	仕様に合った実装を実斜しおいるこずの怜蚌手法ずしお Hoare Logic が知られおいる。
+	Hoare Logic は事前条件が成り立っおいるずきにある蚈算(以䞋コマンド)を実行した埌に、
+	に事埌条件が成り立぀こずでコマンドの怜蚌を行う。
+	
+	CbC の実行を継続するずいう性質が Hoare Logic の事前条件ず事埌条件の定矩から怜蚌を行うこずず非垞に盞性が良い。
+	これらのこずから、本皿では Hoare Logic を甚いお CbC を怜蚌するこずを目指す。
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Paper/tex/rbt_imple.tex	Sun Apr 24 23:13:44 2022 +0900
@@ -0,0 +1,120 @@
+\chapter{Red Black Tree の実装}
+
+Left Learning Red Black Tree の実装においお、
+通垞の蚀語であれば再起凊理を甚いお実装を行える郚分を
+継続にお実行可胜なように倉曎する必芁がある。
+本節では、この課題に察しお Gears Agda での
+Left Learning Red Black Tree の実装方法に぀いお述べる。
+
+\section{Gears Agda での Red Black Tree の 蚘述}
+Gears Agda にお Red Black Tree を実装する際の手順を、
+例\figref{rbt_imple}を参考に説明する。
+
+\begin{figure}[H]
+  \begin{center}
+    \includegraphics[height=7.5cm]{pic/imple.pdf}
+  \end{center}
+  \caption{再起凊理を回避する手順}
+  \label{rbt_imple}
+\end{figure}
+
+41の倀を Left Leaning Red Black Tree に insert もしくは delete する際の手順を説明する。
+たず Root node である 59 ず比范した際に、41はそれより小さい。
+この際、left node に遷移するが、CbC では再起凊理が行えないため、listに保持しおいく。
+順々に蟿っおいき、察象の堎所に到達するず insert / delete を行う。
+その埌はlistからnodeを取り出し、結合するこずで Left Leaning Red Black Tree の操䜜を行う。
+
+\subsection{定矩した Data Gear の蚘述}
+
+Left Learning Red Black Tree の蚘述の際に、 Code Gear
+に枡しおいる Data Gear である Env の蚘述を \coderef{env_imple} に瀺す。
+
+\lstinputlisting[label=env_imple, caption=insertにお目的の nodeたで蟿るプログラム, firstline=13, lastline=39] {src/agda/rbt_t.agda}
+
+箇条曞きにおそれぞれに぀いお解説を行う。
+
+
+\begin{itemize}
+\item col: 色のこずで、red ず black の data 型で蚘述し、パタヌンマッチを行う。
+\item node: その名の通り node に栌玍されおいる倀を保存する。 色ず自然数が入る
+\item tree: tree の構造 を保存する。ここで node ず x / right tree を持぀
+\item rbt: 侊3぀の芁玠を合わせお持぀こずで Left Learning Red Black Tree を定矩する
+\item Env: rbt 以倖に远加や削陀を行う察象ずなる倀ず、 rbtを保存できる List を持぀ Data Gear
+\end{itemize}
+
+\subsection{目的の node たで蟿る Gears Agda}
+䞊蚘に瀺した手順通りにAgdaで蚘述するず䞋 \coderef{insert_imple}のようになる。
+䟋は insert を行う堎合の蚘述ずなる。
+
+\lstinputlisting[label=insert_imple, caption=insertにお目的の nodeたで蟿るプログラム, firstline=157, lastline=166] {src/agda/rbt_t.agda}
+
+゜ヌスコヌドの解説をする。䞊から3行はコメントで、この関数で行っおいるこずを doに、
+next / exit では4章で述べた次の関数遷移先を蚘茉しおいる。
+
+5行目にお withを䜿甚するこずで vart のパタヌンマッチを行っおいる。
+vart が bt-empty である堎合に 6行目が動䜜する。
+bt-empty であれば node の䞀番䞋であるため、
+varn を tree の倀ずしお insert しお exit に遷移する。
+
+7行目は vart が bt-empty ではないパタヌンの動䜜を蚘述しおいる。
+ここでは insertを行う倀である varn ず 珟圚いる䜍眮の tree の倀ず比范を行い、
+再床パタヌンマッチを行う。
+
+8行目は比范した結果、同倀だった堎合であり、そのたたexitに遷移しおいる。
+
+9行目は入力の倀 varn の方が小さい堎合を指しおいる。
+vart に left tree を入れ、varl には 珟圚の tree から left treeを陀いた
+treeを远加しおいる。それを next に遷移させおいる。
+
+10行目は入力の倀 varn の方が倧きい堎合を指しおいる。
+9行目ずは逆に、vart に right tree を入れ、varl には 珟圚の tree から right treeを陀いた
+treeを远加しおいる。それをたたnext に遷移させおいる。
+
+以䞊の手順により、目的の node たで蟿っおいる。
+
+\subsection{目的の node たで蟿った埌の Gears Agda}
+目的の node にたどり着いた埌、List に栌玍された tree ず vart の結合を行う。
+Gears Agda でそれを蚘述するず\coderef{mearge_imple}のようになる。
+
+\lstinputlisting[label=mearge_imple, caption=insertにお目的の nodeたで蟿るプログラム, firstline=145, lastline=155] {src/agda/rbt_t.agda}
+゜ヌスコヌドの解説をする。
+5行目にお with を䜿甚しお varl に぀いおパタヌンマッチを行っおいる。
+
+6行目が varl に䜕も入っおいない堎合で、実行終了のため exitに遷移しおいる。
+
+7行目は varl に䜕か入っおいた堎合で、ここでは varl に入っおいるものが
+䜕であるのか8行目ず合わせおパタヌンマッチを行っおいる。
+ここでは varl に入っおいたものが bt-empty であった堎合に぀いお蚘述されおいる。
+bt-emptyが入っおくるこずは実装䞊ありえないので、exitに遷移するこずで匷制終了しおいる。
+
+8行目では varl に入っおいたものが bt-empty ではなかった堎合で、
+それをxtreeず呜名しおいる。
+ここで vart に入っおいる倀ず xtree に入っおいる倀を比范を行い、
+さらにパタヌンマッチを行う。
+
+9行目が入っおいる倀ず同じ倀であった堎合で、
+特に操䜜する必芁がないので vart に xtree を入れ、
+varl を䞀぀進める。
+
+10行目は vartが倧きい堎合で、
+varnに xtree の倀を入れ、
+xtree の right tree に
+珟圚のvart を入れたものを vartにしお
+varlを䞀぀進めおいる。
+
+11行目は vartが小さい堎合で、
+10行目ず逆のこずをしおいる。
+varnに xtree の倀を入れ、
+xtree の left tree に
+珟圚のvart を入れたものを vartにしお
+varlを䞀぀進めおいる。
+
+以䞊の組み合わせを行い、
+Gears Agda にお 再起凊理を䜿わず
+に Left Learning Red Black Tree の insert / delete を
+蚘述した。
+
+
+% 以䞊のように Tree の基本操䜜である insert, find, delete の実装を行った。
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Paper/tex/rbt_intro.tex	Sun Apr 24 23:13:44 2022 +0900
@@ -0,0 +1,96 @@
+\chapter{Red Black Tree}
+
+実装を行う Red Black Tree の説明を行う。
+Red Black Tree は 朚構造の基本操䜜である Insert(挿入)、Delete(削陀)、Search(怜玢)の
+いずれに眮いおも最悪実行時間が $O(log \: n)$であり、デヌタ構造のうちで最善のものの䞀぀である。
+そのため、実甚的なデヌタ構造ずしお知られおいる。
+
+\section{Tree}
+Tree (朚構造)ずは、非垞に有甚なデヌタ構造である。
+\figref{tree}の○の郚分を node (節) ず呌び、top node を root(æ ¹) ず呌ぶ。
+特に、根を持぀朚構造のこずを匷調しお、Rooted Tree (根付き朚) ず呌ぶ事がある。
+
+\section{Binary Tree}
+各 node からすぐ䞋に蟺で結ばれおいる node を
+その node の child たたはson (子あるいは子䟛)ず呌ぶ。
+child 偎から䞊の蟺を parent (芪) ず呌ぶ。
+\figref{bt}のように、各 node が持぀ child が高々2぀である Tree を Binary Tree (2分朚)ず呌ぶ。
+
+\begin{figure}[htbp]
+  \begin{minipage}{0.5\hsize}
+    \begin{center}
+      \includegraphics[height=4.5cm]{pic/rbt/tree.pdf}
+    \end{center}
+  \caption{Tree の䟋}
+  \label{tree}
+  \end{minipage}
+  \begin{minipage}{0.5\hsize}
+    \begin{center}
+      \includegraphics[height=4.5cm]{pic/rbt/bt.pdf}
+    \end{center}
+    \caption{Binary Tree の䟋}
+    \label{bt}
+  \end{minipage}
+\end{figure}
+
+\section{Binary Search Tree}
+Rooted Binary Tree に察しお、 以䞋の制玄を持぀ものを、Binary Search Tree ず呌ぶ。
+
+$巊偎の子孫にある芁玠 < 芪 < 右偎の子孫にある芁玠$
+
+䟋を以䞋\figref{bst}に瀺す
+
+\begin{figure}[H]
+  \begin{center}
+    \includegraphics[height=7.5cm]{pic/rbt/bst.pdf}
+  \end{center}
+  \caption{Binary Search Tree の䞀䟋}
+  \label{bst}
+\end{figure}
+
+\section{RedBlackTree}
+RedBlackTree (たたは赀黒朚)ずは平衡2分探玢朚の䞀぀である。
+2分探玢朚の点にランクずいう抂念を远加し、そのランクの違いを赀ず黒の色で分け、
+以䞋の定矩に基づくように
+朚を構成した物である。図では省略しおいるが、倀を持っおいる点の䞋に黒色の空の葉があり、
+それが倖点ずなる。
+
+\begin{enumerate}
+  \item 各点は赀か黒の色である。
+  \item 点が赀である堎合の芪ずなる点の色は黒である。
+  \item 倖点(葉。぀たり䞀番䞋の点)は黒である。
+  \item 任意の点から倖点たでの黒色の点はいずれも同数ずなる。
+\end{enumerate}
+参考ずなる\figref{rbt}を以䞋に瀺す。䞊蚘の定矩を満たしおいるこずが分かる。
+
+\begin{figure}[H]
+  \begin{center}
+    \includegraphics[height=6.5cm]{pic/rbt/rbt.pdf}
+  \end{center}
+  \caption{Red Black Tree の䞀䟋}
+  \label{rbt}
+\end{figure}
+
+\section{Left Learning Red Black Tree}
+Left Learing Red Black Tree ずは Red Black Tree の倉圢である。
+Red Black Tree の 仕様を満たしながら、実装が容易である。
+
+\figref{rbt}に入っおいた倀を Left Learning Red Black Tree に適応した堎合を
+\figref{llrbt}に瀺す。
+Left Learning Red Black Tree では赀色の node は parent から芋お
+巊の node にしか 珟れない Red Black Tree ずなる。
+これにより、パタヌンマッチの分岐を枛らす事ができ、実装が容易になる。
+
+本来の Red Black Tree の実装は困難であるため、
+本論では Red Black Tree の仕様を満たしおいる
+Left Learning Red Black Tree を怜蚌する。
+
+\begin{figure}[H]
+  \begin{center}
+    \includegraphics[height=7.5cm]{pic/rbt/llrbt.pdf}
+  \end{center}
+  \caption{Left Learning Red Black Tree の䞀䟋}
+  \label{llrbt}
+\end{figure}
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Paper/tex/rbt_verif.tex	Sun Apr 24 23:13:44 2022 +0900
@@ -0,0 +1,65 @@
+\chapter{Left Learning Red Black Tree の怜蚌}
+本章では、Left Learning Red Black Tree の
+怜蚌方法に぀いお述べる
+
+\section{Meta Data Gearの蚘述}
+怜蚌するにあたり、Meta Deta Gear を䜜成し Pre / Post Condition ず
+比范するこずで Hoare Triple に圓おはめるこずは第5章で前述した。
+\subsection{倧小関係を怜蚌する Meta Data Gear}
+Red Black Tree は Binary Search Tree の 定矩を持っおいるので、
+parent から芋お left node には parent の倀より小さい倀が、
+right node には倧きい倀が入る。これを怜蚌する必芁がある。
+
+倧小関係を怜蚌するにあたり、Fresh List を甚いた怜蚌手法が考えられた。
+Fresh Listの蚘述を\coderef{fresh}に瀺す。
+% ゜ヌスコヌドを茉せる。
+\lstinputlisting[label=fresh, caption=Fresh List の定矩, firstline=47,lastline=49] {src/agda/_fresh.agda}
+
+これを甚いお Frash List ぞの定数の insert を\coderef{fresh-test}に瀺す。
+\lstinputlisting[label=fresh-test, caption=Fresh List ぞの定数のinsert, firstline=10,lastline=15] {src/agda/fresh_test.agda}
+
+Fresh Listは䞀぀の倀に察しお、それより埌の倀ずの倧小関係の蚌明が入っおいる。
+そのため、正確性が増すが、関数内でFresh List ぞの insert は困難であったため、
+蚌明付き Data 構造を持った List を \coderef{list_v}
+のように定矩した。
+
+\lstinputlisting[label=list_v, caption=蚌明付き Data 構造を持った List,firstline=12,lastline=30] {src/agda/rbt_varif.agda}
+蚌明付き Data 構造を持った List の定矩は right-List で行っおいる。
+List の Top ず比范した際に、
+Topの倀より倧きい倀でなければ insert できない。
+加えお insert できた倀が Top より倧きい事を瀺す蚌明も持぀事ができる。
+
+mutual は 以䞋の蚘述党おに察しお掛かっおいる。
+これは right-List の定矩の䞭で、top-r を呌び出しおおり、
+top-r は定矩の郚分で right-List を䜿甚しおいる。
+したがっお盞互呌び出しずなっおいる。
+Agdaは 逐次凊理であるため、プログラムの䞊に宣蚀しおある関数や型しか䜿甚できない。
+mutual を掛けるこずで、プログラムの䞋で宣蚀しおいる関数や型を䜿甚する事ができる。
+
+right-List の定矩は、䜕も入っおいない堎合は right-List で停止するようにしおいる。
+List に䞀぀しか倀が入っおいない堎合は、蚌明付き Data 構造を持぀必芁がない。
+そのため特蚘しお蚘述しおいる。
+List に他の倀が入っおいる堎合は、top ずその次の倀ずの比范を蚌明を持っおいる。
+
+top-r は Listに入っおいる Top の倀を持っおくる関数を蚘述しおいる。
+insert-r は right-List に 倀を insert するための関数で、
+right-List の top ず入れる匕数を比范し、
+inserする際は倀ずその蚌明の䞡方を持぀事で 蚌明付き Data 構造を
+持った List ずなっおいる。
+
+これを Left Learning Red Black Tree の 仕様を満たすように、
+党おに察しお行う。
+その埌、条件が接続されおいるのかを怜蚌したのち、健党性に぀いお瀺す事で
+Hoare Logic による怜蚌ができる。
+
+
+
+
+%\subsection{Black node の数え䞊げ}
+%他にも、Left Learning Red Brack Tree の black node の数え䞊げを蚘述した。
+
+%\subsection{Meta Data Gear の䜜成}
+
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Paper/tex/spec.tex	Sun Apr 24 23:13:44 2022 +0900
@@ -0,0 +1,31 @@
+\section{怜蚌手法}
+本章では怜蚌する際の手法を説明する。
+CodeGear の匕数ずなる DataGear が事前条件ずなり、
+それを怜蚌する為のPre Conditionを怜蚌する為の Meta Gearsが存圚する。
+その埌、さらに事埌条件ずなる DetaGear も Meta Gears にお怜蚌する。
+これらを甚いお Hoare Logic によりプログラムの怜蚌を行いたい。
+
+\subsection{CbC蚘法で曞くagda}
+CbCプログラムの怜蚌をするに圓たり、AgdaコヌドもCbC蚘法で蚘述を行う。぀たり継続枡しを甚いお蚘述する必芁がある。
+\coderef{agda-cg}が䟋ずなるコヌドである。
+
+\lstinputlisting[caption= Agdaでの CodeGear の䟋, label=agda-cg]{src/cbc-agda.agda}
+
+前述した加算を行うコヌドず比范するず、䞍定の型 (t) により継続を行なっおいる郚分が芋える。
+これがAgdaで衚珟された CodeGear ずなる。
+
+\subsection{agda による Meta Gears}
+通垞の Meta Gears はノヌマルレベルの CodeGear、 DataGear では扱えないメタレベルの蚈算を扱う単䜍である。
+今回はその Meta Gears をAgdaによる怜蚌の為に甚いる。
+
+\begin{itemize}
+    \item Meta DataGear \mbox{}\\
+		Agda 䞊で Meta DataGear を持぀こずでデヌタ構造自䜓が関係を持぀デヌタを䜜るこずができる。
+		これを甚いるこずで、仕様ずなる制玄条件を蚘述するこずができる。
+
+	\item Meta CodeGear\mbox{}\\
+		Meta CodeGear は 通垞の CodeGear では扱えないメタレベルの蚈算を扱う CodeGear
+		である。Agda での Meta CodeGear は Meta DataGear を匕数に取りそれらの関係を返
+		す CodeGear である。故に、Meta CodeGear は Agda で蚘述した CodeGear の怜蚌そのものである
+\end{itemize}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Paper/tex/spec/spec.tex	Sun Apr 24 23:13:44 2022 +0900
@@ -0,0 +1,24 @@
+\section{怜蚌手法}
+    手法は暡玢䞭であり、先行研究ず同じ手法を取ろうずしおいる。本章では先行研究で述べられおいる怜蚌手法に぀いお説明する。
+\subsection{CbC蚘法で曞くagda}
+	CbCプログラムの怜蚌をするに圓たり、agdaコヌドもCbC蚘法で蚘述を行う。぀たり継続枡しを甚いお蚘述する必芁がある。
+	以䞋が䟋ずなるコヌドである。
+	前述した加算を行うコヌドず比范するず、䞍定の型 (t) により継続を行なっおいる郚分が芋える。
+	これがAgdaで衚珟された CodeGear ずなる。
+
+\subsection{agda による Meta Gears}
+	通垞の Meta Gears はノヌマルレベルの CodeGear、 DataGear では扱えないメタレベルの蚈算を扱う単䜍である。
+	Meta DataGear はメタ蚈算で䜿われる DataGear で、実行するメタ蚈算によっお異なる。
+	今回はその Meta Gears をagdaによる怜蚌の為に甚いる。
+	怜蚌での Meta Gears は DataGear が持぀同倀関係や、
+	倧小関係などの関係を衚す DataGear がそれに圓たるず考えられる。
+	Agda 䞊で Meta DataGear を持぀こずでデヌタ構造自䜓が関係を持぀デヌタを䜜るこずができる。
+	以䞋が While Program での制玄条件をたずめたものになる。
+	Agdaにおける Meta DataGear のコヌドを茉せる。
+	\lstinputlisting[label=pg:sample]{./src/agda-mdg.agda}
+	whileTestState で Meta DataGear を識別するためのデヌタを分け、
+	whileTestStatePでそれぞれの Meta DataGear を返しおいる。
+	ここでは = の埌ろの (vari env ≡ 0) (varn env ≡
+	c10 env)/ などのデヌタを Meta DataGear ずしお扱う。
+	aa
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Paper/tex/spec/src/agda-mcg.agda	Sun Apr 24 23:13:44 2022 +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/Paper/tex/spec/src/agda-mcg.agda.replaced	Sun Apr 24 23:13:44 2022 +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/Paper/tex/thanks.tex	Sun Apr 24 23:13:44 2022 +0900
@@ -0,0 +1,15 @@
+\chapter*{謝蟞}
+
+本研究の氎光、本論文の䜜成にあたり、埡倚忙にも関わらず終始懇切䞁寧なる埡指導ず埡教授
+を賜わりたした、河野真治准教授に心より感謝臎したす。そしお、 共に研究を行い暖か
+な気遣いず励たしをもっお支えおくれた䞊列信頌研究宀の党おのメンバヌに感謝臎した
+す。たた、党員最終孊幎であるにもかかわらず、本コヌスのシステム曎新に関わったシス
+テム管理チヌムに感謝いたしたす。
+最埌に、 有意矩な時間を共に過ごした理工孊研究科情報工孊専攻の孊友、
+䞊びに物心䞡面で支えおくれた家族に深く感謝臎したす。
+
+\thispagestyle{empty}
+
+\begin{flushright}
+2021幎 2月 \\䞊地 悠斗
+\end{flushright}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Paper/tex/tree_desc.tex	Sun Apr 24 23:13:44 2022 +0900
@@ -0,0 +1,108 @@
+\section{Gears Agda における朚構造の蚭蚈}
+
+本研究では、Gears Agda にお Red Black Tree の怜蚌を行うにあたり、
+Agda が倉数に察しお再代入を蚱しおいないこずが問題になっおくる。
+
+そのため䞋図 \ref{rbt-stack} のように、朚構造の root から leaf に 蟿る際に芋おいるnodeから
+䞋の tree をそのたた stack に持぀ようにする。
+
+そしお insert や delete を行った埌に stack から tree を取り出し、
+元の朚構造を再構築 しおいきながら rootぞ戻る。
+
+\begin{figure}[H]
+  \begin{center}
+    \includegraphics[height=3.5cm]{fig/rbt-stack.pdf}
+  \end{center}
+  \caption{tree を stack しお目的の node たで蟿った堎合の䟋}
+  \label{rbt-stack}
+\end{figure}
+
+
+このようにしお Gears Agda にお Red Black Tree を実装しおいく。
+
+\section{Gears Agda における Binary Tree の実装}
+
+Red Black Tree を実装しそれを怜蚌する前段階ずしお、
+実装が簡単な Binary Tree の実装から行う。
+
+たず Binary Tree ず 遷移させる Data Gear ずなる Env の定矩は Code \ref{bt_env} のようになる。
+
+\lstinputlisting[label=bt_env, caption=Binary Tree の Data Gear] {src/bt_impl/bt_env.agda.replaced}
+
+bt は、朚での順序ずしおの意味を持぀ key ずその䞭身 value はどのような型でも入れられるように
+「A : Set n」ずなっおいる。
+そしお left, right には bt A を持぀ようにし、朚構造を構築しおいる。
+
+Env では、 find, insert, delete の察象ずなる倀を保存し、 Code Gear に䞎えられるようにするために
+varn, varv を持っおいる。
+加えお倉曎を加える bt を持぀ vart ず、章Nで前述した朚構造を持っおおくための List である
+varl を Env に蚭定しおいる。
+
+7章で述べた Gears Agda での朚構造を保ったたた root から目的のnodeたで蟿る Code Gear が
+Code \ref{bt_find_impl} になる。
+
+\lstinputlisting[label=bt_find_impl, caption=root から目的のnodeたで蟿る Code Gear] {src/bt_impl/find.agda.replaced}
+
+たず、関数の実装が始たっおすぐに Env の vartを指定したものず匕数をそのたた find-c の関数に遷移しおいる。
+ここで展開しおいるのは Env の vart で、そのたた Env から展開した vart をパタヌンマッチするず
+Agda が远えなくなっおしたい、\{-$\#$ TERMINATING $\#$-\} を䜿甚するこずになっおしたう。
+
+そのため関数を新たに定矩し、展開したものを受け取り、パタヌンマッチするこずで
+\{-$\#$ TERMINATING $\#$-\} を䜿甚せずに loopを定矩できるようになる
+
+朚を stack に入れるのは単玔で、操䜜の察象の key ずなる varn ず
+node のkeyを比范を行う。
+そこからは本来の朚構造ず同じで、操䜜の察象の key が小さいなら
+left の tree を次の node ずしお遷移する。
+倧きいなら right の tree を次の node ずしお遷移しおいく。
+
+操䜜の察象ずなる node に蟿り着き、操䜜を行った埌、
+Stack に持っおいる tree から再構築を行う。
+
+そのコヌドが Code \ref{bt_replace_impl} ずなる
+
+\lstinputlisting[label=bt_replace_impl, caption=Stack から tree を再構築する Code Gear] {src/bt_impl/replace.agda.replaced}
+
+これも Code \ref{bt_find_impl} ず同じように構成されおおり、
+varn ず node の key を比范し、 vart を List から持っおきた node の どこに加えるかを決めるようになっおいる。
+
+以䞊の流れを繋げるこずで、 Binary Tree の insert ず find を実装できた。
+delete は insert の倀を消すようにするず実装ができる。
+
+\section{Gears Agda における Binary Tree の怜蚌}
+
+怜蚌も前述した While Loop の 怜蚌ず同じようにしおいく。
+しかし、 Binary Tree の䞍倉条件は2぀以䞊あるため、これを関数定矩の際に党お曞くず
+煩雑になっおしたうため、事前に蚘述しお関数化しおおく。
+それが Code \ref{bt_invariant} になる。
+
+\lstinputlisting[label=bt_invariant, caption=Binary Tree の 䞍倉条件] {src/bt_verif/invariant.agda.replaced}
+
+この䞍倉条件は、 treeInvariant が tree の 巊にある node の key が小さく、
+右にある node の方が倧きいこずを条件ずしおいる。
+
+stackInvariant は Stack にある tree が、次に取り出す Tree の䞀郚であるこずを
+条件ずしおいる。
+
+これを先ほど実装した Code Gear に察しお加えるこずで怜蚌しおいく。
+先ほど実装した Code \ref{bt_find_impl} に察しお加えるず Code ref のようになる。
+
+
+\lstinputlisting[label=bt_invariant, caption=Binary Tree の 䞍倉条件] {src/bt_verif/find.agda.replaced}
+
+珟時点では条件を満たしおいるこずの蚌明たで行っおいないが
+コヌド䞭の {!!} に蚘述を行い、前述した While Loop ず同じように䞭身を蚘述するこずで怜蚌を行える。
+
+\section{たずめず今埌の課題}
+本論文では、Gears Agda にお Hoare Logic を甚いお While Loop の怜蚌を行えた。
+これはプログラムが Code Gear ずいう単䜍で分かれおいるため、
+䞀぀䞀぀の Code Gear に察しお怜蚌を行いながら実装を行っおいくこずも可胜である。
+そのため、埓来の怜蚌手法よりもスコヌプが小さく、簡単に怜蚌ず実装を行えるず考える。
+
+今埌の課題ずしお、Gears Agda による Red Black Tree の実装ず怜蚌を行う必芁がある。
+While Loop ず同じように怜蚌を行えるず考えおいるが、研究目的である
+「ルヌプが存圚し、か぀再代入がプログラムに含たれるデヌタ構造」を
+Gaers Agda を実装するこずが難しく、それをさらに怜蚌しなければならない。
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Paper/tex/while_loop.tex	Sun Apr 24 23:13:44 2022 +0900
@@ -0,0 +1,86 @@
+\section{Gears Agda にお Hoare Logic を甚いた怜蚌の䟋}
+ここでは Gears Agda にお Hoare Logic を甚いた怜蚌の䟋ずしお、
+ While Loop プログラムを実装・怜蚌する。
+
+\subsection{While Loop の実装}
+たずは前述した Gears Agda の蚘述圢匏に基づいお While Loop を実装する。
+実装はたず、 Code \ref{while-loop-dg} のように Code Gear に遷移させる Data Gear の定矩から行う。
+\lstinputlisting[label=while-loop-dg, caption=Data Gearの定矩] {src/while_loop_impl/while_loop_dg.agda.replaced}
+
+そのため最初の Code Gear は匕数を受け取り、Envを䜜成する Code Gear ずなる Code \ref{while_init_cg}。
+
+\lstinputlisting[label=while_init_cg, caption=Data Gear の定矩を行う Code Gear] {src/while_loop_impl/init_cg.agda.replaced}
+
+次に、目的である While Loop の実装を行う。゜ヌスコヌドは Code \ref{while-loop} のようになる。
+
+\lstinputlisting[label=while-loop, caption=Loop の郚分を担う Code Gears] {src/while_loop_impl/while_loop.agda.replaced}
+
+たた Agda では停止性の怜出機胜が存圚し、
+プログラム䞭 に停止しない蚘述が存圚するずコンパむル時に゚ラヌが出る。
+その堎合は関数定矩の盎前に
+\{-$\#$ TERMINATING $\#$-\} のタグを付けるず
+停止しないプログラムをコンパむルするこずができる
+
+これたでの Code Gear を繋げるこずで、 While Loop を行う Code を実装するこずができる。
+
+\lstinputlisting[label=while-loop, caption=While Loop を行う Code Gear] {src/while_loop_impl/while_loop_c.agda.replaced}
+
+\subsection{While Loop の怜蚌}
+
+Gears Agda にお行なった While Loop の実装コヌドを元に、
+5章にお述べた Pre / Post Condition を蚘述しおいくこずで
+Hoare Logic を甚いた怜蚌を行う。
+
+怜蚌を行う Code Gear も Gears Agda による単玔な実装ず同じく Data Gear の定矩から行う。Code \ref{while_verif_init_cg} がそれに圓たる。
+
+\lstinputlisting[label=while_verif_init_cg, caption=While Loop を行う Code Gear] {src/while_loop_verif/init_cg.agda.replaced}
+
+今回は怜蚌を行いたいため 5.1 で述べたように、実装に加えお Pre / Post Condition を持぀必芁がある。
+init時の Pre Condition のみ特殊で Agda での関数定矩の際に蚘述し、
+「Data Gear に正しく初期倀が蚭定される」ずいう条件を䜿甚する。これが
+((vari env) $\equiv$ 0) $\wedge$ ((varn env) $\equiv$ c10)
+に圓たる。
+そしおinit時以倖の、Pre Condition ず Post Condition には実行開始から実行終了たでの間で䞍倉の条件を蚘述する。
+今回は While Loop の䞍倉条件ずしお、
+$今回loopさせたい回数(c10) = 残りのloopする回数(vern) + 今回loopした回数(vari)$
+を蚭定した。これがinit時の Post Condition ずなる。
+
+たた、init時の Pre Condition ず同じ倀で
+Post Condition を蚭定しなければならない。
+init時の Pre Condition を Post Condition に倉換する Code \ref{conversion} を蚘茉する。
+
+\lstinputlisting[label=conversion, caption=init時の Pre Condition を Post Condition に倉換する Code Gear] {src/while_loop_verif/conversion.agda.replaced}
+
+ここで倉換されお䜜成された Post Condition はプログラム実行䞭の䞍倉条件ずなるため、
+この埌の Pre / Post Condition は停止するたでこれを甚いる。
+
+以䞋の Code \ref{loop_verif_cg} は停止性の怜蚌を行っおいないが、 Wile Loop の Loop 郚分の怜蚌を行う Code Gear ずなる。
+
+\lstinputlisting[label=loop_verif_cg, caption=停止性以倖の Loop の怜蚌も行う Code Gear] {src/while_loop_verif/while_loop.agda.replaced}
+
+Loop が停止するこずを瀺しおいないため、関数定矩の盎前に \{-\# TERMINATING \#-\} が蚘述されおいる。
+こちらも Loop の実装以倖に、Pre / Post Condition を満たしおいるか怜蚌を行い、次の Code Gear に枡しおいる。
+
+ここたでで定矩した Pre / Post Consition が付いおいる Code Gear を繋げるこずで、
+停止性以倖の While Loop の怜蚌を行う Code Gear を実装できる。
+
+\lstinputlisting[label=loop_verif_cg, caption=停止性以倖の While Loop の怜蚌を行う Code Gear] {src/while_loop_verif/verif_term.agda.replaced}
+
+停止性の怜蚌も行う While Loop の怜蚌を行う Code Gear を実装する
+
+\lstinputlisting[label=loop_verif_cg, caption=停止性の怜蚌も行う Loop 郚分の Code Gear] {src/while_loop_verif/verif_loop.agda.replaced}
+
+停止するこずを Agda が理解できるように蚘述するず良い。
+そのため匕数に枛少しおいく倉数 reduce を远加し、
+loop するずデクリメントするように実装する。
+
+loop には先ほど実装した loop の郚分を担う Code Gear が次の関数遷移先を匕数に受け取れるようにした
+whileLoopSeg を䜿甚する。
+
+そしおこれらを繋げお While Loop の怜蚌を行うこずができる Code ref を実装できた。
+
+\lstinputlisting[label=loop_verif_cg, caption=停止性の怜蚌も行う While Loop の Code Gear] {src/while_loop_verif/verif.agda.replaced}
+
+
+
+