## シンデレラ 1.2への序文

1999年のマニュアルの序文を、歴史的な意味あいでここに再掲します。
Cinderella はコンピュータで幾何学の作図ができるソフトウェアです。 現在の製品は、1993年から1998年の間に製作された3つのプロジェクトの総決算です。 私たちは、19世紀の幾何学者たちの知恵から最新の数学的発見まで、実に様々な数学理論の結晶としてこのソフトウェアを開発しました。
これらのプロジェクトの最初の構想は、1992年に、スウェーデンのミッターク-レフラー研究所において組合せ論の国際会議が開かれ、そこで、 Henry Crapoと Jürgen Richter-Gebert がCinderellaという名の船で旅をしたときに生まれました。 そのころ、Richter-Gebert は幾何学の定理をコンピュータによって証明するための 記号的方法について研究しており( [RG95])、ふたりは、だれでもが簡単なマウス操作で幾何学の図形を操れたり、できた図にどのような性質があるかをコンピュータに尋ねることができるようなソフトウェアを夢みたのでした。
Henryと Jürgen はNeXTコンピュータでこのプロジェクトをスタートさせました。 というのはNeXTには当時ソフトウェア構築の道具がたくさんそろっていたからです。 Cinderella は、このプロジェクトの名前となり、いつしかこのプロジェクトとは切っても切れない名前になっていったのです。
数週間後、最初の試作品ができ上がりました。 プログラムは射影幾何学と不変理論の原理に基づいて作られていました。 この新しいシンデレラでは、点、直線、2次曲線についての射影幾何学の多くの定理について、画面上で代数的な証明を見ることができるようになっていました([CrRG95])。
しかし、NeXTは次第に人気がなくなってしまい、それとともに Cinderellaへの最初の情熱も冷めていきました。 1995年の夏以降、このソフトウェアの進歩はほとんどありませんでした。 マサチューセッツ・サウスハドレイのマウントホリオークカレッジでの計算幾何学の会議の時には、NeXTコンピュータやそのOSはほとんど姿を消しており、Cinderellaのデモンストレーションを行うこと自体ほとんど不可能でした。
1996年の8月、そのマウントホリオークでの会議の後、私たち(Ulli Kortenkampと Jürgen Richter-Gebertは、当時ベルリン工科大学でGünter M. Zieglerのグループで研究をしていました) は新しいプロジェクトを始めることにしました。 それはまったく別のプラットフォームであるJavaで開発するというものでした。 そのころ、Javaは比較的新しい言語で、私たちは二人とも、リアルタイムで大量の計算が必要なプログラムにインタープリタ系の言語が適しているのか懐疑的でした。 しかし、ともかく私たちは始めてみました。
この２回目のプロジェクトの最終目的は、昔の機能(NeXT版で使えたものについて)を本質的にユークリッド幾何、非ユークリッド幾何の両方に拡張することでした。 私たちは、幾何の軌跡についての機能も増やそうと思っていました。 さらに、Java言語がインターネット対応であることから、新しくでき上がるソフトウェアはインターネットのブラウザの上で動くように作る必要がありました。 とくに、ウェブ用の学生向け練習問題を作ることが可能になるようなものにしたかったのです。 学生の解答があっているかを自動的にチェックすることができるようにするためには、定理自動証明機能をプログラムに実装する必要がありました。
国際会議やコンペの締め切りが近づくたび、私たちはピッチをあげて開発にとりくみました。 作り直したあとの最初のバージョンは1996年9月のチューリッヒでの「CGALスタートアップ会議」で公開されました。 1996年の次のバージョンは1997年の1月にカールスルーエでのマルチメディアトランスファーで「マルチメディア革新賞」を受賞しました。
1997年に、Richter-Gebertはチューリッヒ工科大学で助教授となりました。 この変化が開発にも新展開をもたらしました。 Ulli Kortenkampも9月にチューリッヒに移りました。
同時に私たちは Cinderellaの出版に向けて交渉をはじめました。もともとはこの第２のプロジェクトに磨きをかけて完成させてしまうつもりでした。しかし、事態はさらに違う方向へと向かったのです。
この1996年のバージョンは、ほかの幾何のソフトウェア同様、明らかな数学的な矛盾を避けられなかったのです。 この矛盾は、たとえば「円と直線の交点を求める」という操作において現れる任意性のことです。 交点は二つかもしれないし、一つかもしれないし、あるいはまったく交点がないかもしれない． それは円と直線の位置関係によって決まるものです。 円と直線の交点を用いて得られた図をマウスでドラッグしている間にも、プログラムはどの交点を作図に利用するかを決定しなければいけません． この、無害のように思われる任意性が図の振舞いに重大な矛盾を引き起こしてしまうこともあるのです。 一点をほんのちょっと動かしただけでも図全体がはじけ飛んでしまうこともあるのです。
1998年の初頭、この「ジャンプする点」の問題が実際問題として解決可能なことがわかりました。 しかし、それを実装するのは容易ではないことは明らかでした。 すべての作図を複素ベクトル空間へ埋め込まなければいけなかったのです。 「図がつぶれたりジャンプしたりする特異な状況」を避けるために、関数論の定理を用いなければいけなかったのです。 この新しい方法を用いるために、私たちはプログラムの数学的な中心部分を一から書き直さなければなりませんでした。 このプログラムはおよそ20〜100倍もの計算が必要で、私たちにとってもJavaにとっても難問となります。
私たちはこの方法を用いることに決め、そしてこの第３のプロジェクトを完成させることができました。それが現在のバージョンです。 信じられないほど集中して作業し(この期間、私たち、そして私たちの家族は限界まで忍耐しなければなりませんでした)、 私たちはプログラム全体を書き直したのです。 そうして、このプログラムはどんな状況下においても高いパフォーマンスを示すことができるようになりました。
このような努力が報われました。新しく開発したこのプログラムはもともと私たちが考えていたよりもずっと役に立つことがわかったのです。 この新しい考え方に基づいて、私たちは乱数を用いた信頼性の高い自動定理確認機能を実装することができたのです。 図上の性質をみつける方法として、これは記号的な方法よりかなり有用であることが示されました。 また、一般的な方法で完全な幾何的軌跡を生成することも可能です。 それは私たちの知る限り斬新なことです。
現在のプログラムは19世紀の古典的幾何学だけでなく、複素解析、私たちの開発した新しい手法、そして現代のソフトウェア技術の融合なのです。 私たちは皆さんがこのソフトウェアを私たち以上に楽しんでくださることを望んでいます。
Jürgen Richter-Gebert, Ulli Kortenkamp
Zurich, December 1998

Page last modified on Friday 02 of March, 2012 [23:26:00 UTC].
The original document is available at http://doc.cinderella.de/tiki-index.php?page=Preface%20to%20Cinderella%201.2J