お知らせ connpassではさらなる価値のあるデータを提供するため、2024年5月23日(木)を以ちましてイベントサーチAPIの無料での提供の廃止を決定いたしました。
2024年5月23日(木)以降より開始予定の「connpass 有料API」の料金プランにつきましてはこちらをご覧ください。

お知らせ connpassをご利用いただく全ユーザーにおいて健全で円滑なイベントの開催や参加いただけるよう、イベント参加者向け・イベント管理者向けのガイドラインページを公開しました。内容をご理解の上、イベント内での違反行為に対応する参考としていただきますようお願いいたします。

このエントリーをはてなブックマークに追加

4月

11

プログラムの正しさを数学的に証明する形式検証への招待

定理証明支援ツール Isabelle を使って形式検証を体験するセミナーです。

主催 : 株式会社 PRINCIPIA

プログラムの正しさを数学的に証明する形式検証への招待
募集内容

一般

8000円(前払い)

先着順
9/9

申込者
takuhiro matsuyama
tacke_jp
tatarou1986
もといけ
dora-gt
RyosukeNakagawa
TakeshiHori
tkokamo
shigemi1014
申込者一覧を見る
開催日時
2020/04/11(土) 12:10 ~ 17:50
募集期間

2020/02/23(日) 00:00 〜
2020/04/11(土) 12:00まで

会場

アクセア神保町店5F 第3会議室

東京都千代田区神田神保町2-13-1 西遊ビル4F

マップで見る 会場のサイトを見る
前払いについて

前払いについての連絡先:

(参加者にのみ公開されます)

キャンセル・参加費用の払い戻しについて主催者からの説明:

お申込み後のキャンセルはできません.セミナーについての説明をよくお読みいただき,十分ご検討の上お申し込みください.セミナー当日に不参加であったとしても参加費用は返却されません.

領収データの発行:

発行しない (詳しくはこちら)

イベントの説明

セミナーの内容

プログラムの正しさを数学的に証明する技術を体験するセミナーです。プログラミングやテストに携わる人が対象です。基本的なプログラミングの知識だけで理解できる構成です。単に話を聞くだけでなく、頭と手を動かして体験していただきます。数学を使う部分はほとんどツールがやってくれるので、数学の知識不足を心配する必要はありません。

数学を使う

オペレーティングシステムの研究やダイクストラ法で有名なダイクストラさんはいいました:「テストでバグがあることをは示せるが、バグがないことは証明できない!」

なぜ証明できないのでしょうか? テストケースの数が多すぎて網羅できないからです。ではどうしたら証明できるのでしょうか? ひとつの方法は数学を使うことです。数学は有限の記号と有限の手続きで無限を扱うことができるからです。

初等幾何学には「二等辺三角形の2つの底角は等しい」という有名な定理があります。二等辺三角形の種類は無限にあります。この定理は無限にあるどのような二等辺三角形でも2つの底角は等しいと主張しています。このような証明ができるのが数学の力です。底辺の長さが 10 cm のものだけとか、頂角の大きさが 10° の倍数のものだけとか、そういった制限はありません。

無限のバリエーションを持つ図形に対して証明ができる幾何学と同じように、プログラムの正しさを証明することができる理論があります。クイックソートの発明や並行システムの理論で有名なホーアさんが発明したホーア論理というものです。これを使うと無限にあるテストケースをすべてテストしたのと同等の結果を得ることができます。このセミナーで紹介するのはこの技術です。

数学の論文にも間違いがあることはありますし、ツールにバグがあることもあるでしょう。しかしそれでもテストと比較すれば圧倒的に高い精度でプログラムの正しさを確かめることができます。

証明技術を学ぶ意義

プログラムの正しさを証明する技術を学ぶと、加えて2つのよい効果が得られます。1つは仕様を明確にしたりテストの精度を高めたりする力がつく点です。証明というトレーニングで考える力や可能性に気づくセンスが鍛えられるからです。もう1つはプログラムがもっている性質を深く理解できるようになるという点です。直感的にしか理解していなかったプログラムの動きを数学的に分析できるようになると、正しさを支えているプログラムの性質に気づくようになります。このような経験と知識は普段のプログラミングにもよい効果を与えるでしょう。

プログラムが持つ性質を深く掘り下げる例として、このセミナーでは2分探索の証明をゴールにします。これは挑戦的なゴールです。2分探索は決して簡単なアルゴリズムではありません。事実、アルゴリズムの教科書には間違ったコードが載せられていたという話があります。このセミナーの最終段階では、理論とツールの力を使って2分探索を徹底的に研究します。

ツール

Isabelle という定理証明支援ツールを使います。ケプラー予想という数学の問題を証明するために使われたり、オペレーティングシステムの性質を検証するために使われたりと実績のあるツールです。

ツールの効果は3つあります。1つ目はもちろん証明そのものを支援してくれることです。現在のツールはとても賢くなっていて、かなりの証明を自動で行ってくれます。2つ目は証明のチェックです。十分な数学的訓練を積んだ人でも間違うことはあります。ツールは数学の規則を正しく使っているかすべてチェックしてくれるので誤りを防ぐことができます。最後の3つ目は証明の管理です。証明するプログラムが大きくなってくると、証明しなければならない項目も増えていきます。紙の上で証明していると証明しなければいけない項目を見落とすことがあります。ツールは何をどこまで証明したのか管理してくれるので、このような見落としをすることはありません。

プログラムの証明はツールと対話をするような感じで進みます。まず証明したいプログラムと仕様をツールに入れます。ツールに証明を指示すると「ここまでできました」と返ってきます。そのレポートを見て Isabelle にアドバイスを与えます。このように共同作業をして証明を完成させます。

プログラムが間違っていると証明できない結果が残ります。これを分析するとプログラムの間違いについての情報が得られます。それを元にプログラムを修正して、証明できるまで繰り返します。時に分析は難しくなることがありますが、それを乗り越えると力がつきます。

最高に楽しい知的ゲームへようこそ!

以下のような人にぜひ参加していただきたいと思います:

  • プログラムをもっと深く理解したい人
  • テストよりも高い品質保証を目指したい人
  • 定理証明支援ツールとはどのようなものか知りたい人
  • 2分探索を極めたい人

なによりもプログラムの正しさを証明すること自体が最高に面白いゲームです! ぜひご参加ください。

プログラム

形式検証への招待

  • 正当性:仕様とは何か? プログラムが正しいとは?
  • 数理論理学:なぜ数学を使うのか?
  • 定理証明支援ツール Isabelle
  • Isabelle による仕様分析

プログラムの正しさを数学的に証明するための理論

  • 事前条件・事後条件
  • 契約によるプログラミング
  • Hoare 論理

Isabelle によるプログラムの正当性証明

  • 条件文の証明:最大値・絶対値
  • ループの証明:掛け算・べき乗
  • 探索とは何か?:線型探索
  • 2分法:自然数の平方根の近似値
  • 2分探索

講師について

株式会社 PRINCIPIA 代表取締役 初谷 久史

CSP 理論に基づいたモデリング・検査ツール SyncStitch 開発者

国立情報学研究所トップエスイープロジェクト「並行システムの設計検証」講師

Isabelle 歴17年

セミナー参加の前提条件

前提知識

必要な知識は変数、代入文、条件文、ループといった基本的なプログラミングの知識です。「~でない・かつ・または」といった高校で習う程度の論理の知識を仮定します。条件文やテストを書くときに使う範囲で十分です。

必要なもの

  • 定理証明支援ツール Isabelle がインストールされたノート PC

配布物

セミナーの約1週間前にスライド資料(PDF)と理論ファイルを配布します。

CONNPASS と PayPal に登録されているメールアドレスを今一度ご確認ください。

使用するツール

以下のサイトからダウンロードできます。

注意事項

  • 配布スライド資料の公開は禁止です。配布理論ファイルはご自由にお使いください。
  • 録画・録音は禁止です。スチル写真撮影はかまいませんが、参加者が写る場合はご自分で許可を得てください。
  • 飲食は可能ですが、ゴミはお持ち帰りください。
  • 不測の事態によりセミナーが開催できなかった場合は、参加費用の返却にて対応させていただきます。
  • CONNPASS ではなく PayPal に登録されているメールアドレスにご連絡を差し上げる場合があります。異なるメールアドレスを登録されている方はお見逃しがないようご注意ください。

連絡先

ご質問等がありましたら isaac@principia-m.com までお気軽にご連絡ください。

画像で引用した文献

(参考文献ではありません)

  • An Axiomatic Basis for Computer Programming, C. A. R. Hoare, 1969
  • Textbook Errors in Binary Searching, Richard E. Pattis, 1988
  • Introduction to the Theory of Programming Languages, Bertrand Meyer, 1990

資料 資料をもっと見る/編集する

資料が投稿されると、最新の3件が表示されます。

フィード

プログラムの正しさを数学的に証明する形式検証への招待 が中止されました。このイベントにはもう参加できません。
主催者への質問などは、イベント詳細ページのフィードをご利用ください。

2020/03/27 21:02

hatsugai

hatsugai さんが プログラムの正しさを数学的に証明する形式検証への招待 を公開しました。

2020/02/23 21:11

プログラムの正しさを数学的に証明する形式検証への招待 を公開しました!

中止

2020/04/11(土)

12:10
17:50

開催日時が重複しているイベントに申し込んでいる場合、このイベントには申し込むことができません

募集期間
2020/02/23(日) 00:00 〜
2020/04/11(土) 12:00

会場

アクセア神保町店5F 第3会議室

東京都千代田区神田神保町2-13-1 西遊ビル4F

管理者

参加者(9人)

takuhiro matsuyama

takuhiro matsuyama

よろしくお願いします!!プログラムの正しさを数学的に証明する形式検証への招待に参加を申し込みました!

tacke_jp

tacke_jp

プログラムの正しさを数学的に証明する形式検証への招待に参加を申し込みました!

tatarou1986

tatarou1986

I joined プログラムの正しさを数学的に証明する形式検証への招待!

もといけ

もといけ

プログラムの正しさを数学的に証明する形式検証への招待 に参加を申し込みました!

dora-gt

dora-gt

よろしくお願いします。

RyosukeNakagawa

RyosukeNakagawa

プログラムの正しさを数学的に証明する形式検証への招待 に参加を申し込みました!

TakeshiHori

TakeshiHori

状況によっては会場での受講ができないかもしれませんが、よろしくお願い致します。

tkokamo

tkokamo

プログラムの正しさを数学的に証明する形式検証への招待に参加を申し込みました!

shigemi1014

shigemi1014

I joined プログラムの正しさを数学的に証明する形式検証への招待!

参加者一覧(9人)