Submit Search
Upload
証明プログラミング超入門
•
28 likes
•
11,090 views
Kyoko Kadowaki
Follow
20150124若手の会@明治大学中野キャンパス
Read less
Read more
Science
Report
Share
Report
Share
1 of 21
Download now
Download to read offline
Recommended
自動定理証明の紹介
自動定理証明の紹介
Masahiro Sakai
2011-09-25 に行われた ProofSummit でのLTの発表資料。
定理証明支援系Coqについて
定理証明支援系Coqについて
Yoshihiro Mizoguchi
数学ソフトウェアとフリードキュメントXXI 講演資料 (2015/9/12)
SAT/SMTソルバの仕組み
SAT/SMTソルバの仕組み
Masahiro Sakai
Proof Summit 2015 <http: /> で発表した、SAT/SMTソルバの仕組みです。 Proofということで、論理学的側面からの面白さを出来るだけ紹介しています。
証明プログラミング入門2
証明プログラミング入門2
Kyoko Kadowaki
Agda で論理学
暗号文のままで計算しよう - 準同型暗号入門 -
暗号文のままで計算しよう - 準同型暗号入門 -
MITSUNARI Shigeo
introduction to homomorphic encryption
研究法(Claimとは)
研究法(Claimとは)
Jun Rekimoto
暦本研(東京大学情報学環)の研究法ガイダンス資料です claimとは アイデア生産の三要素 天使度/悪魔度
デキるプログラマだけが知っているコードレビュー7つの秘訣
デキるプログラマだけが知っているコードレビュー7つの秘訣
Masahiro Nishimi
SonicGarden Study #11で放送された資料から一部スライドを抜いたものになります。 http://sonicgarden.doorkeeper.jp/events/13229 ----- 優れたプログラマだけが優れたソースコードを書くことができます。 では優れたプログラマになるにはどうすれば良いでしょうか。 自分の書いたコードを、優れたプログラマに指摘してもらうことが一番の近道です。それがコードレビューです。たった一人でコードレビューも受けずに、ただ書き続けてもクソコードはクソコードのままなのです。 そこで今回は、良いコードが書けるプログラマになるための、コードレビューを上手に実践する秘訣を話します。
ブラックボックス最適化とその応用
ブラックボックス最適化とその応用
gree_tech
『CCSE2019』で発表された資料です。 https://ccse.jp/2019/
Recommended
自動定理証明の紹介
自動定理証明の紹介
Masahiro Sakai
2011-09-25 に行われた ProofSummit でのLTの発表資料。
定理証明支援系Coqについて
定理証明支援系Coqについて
Yoshihiro Mizoguchi
数学ソフトウェアとフリードキュメントXXI 講演資料 (2015/9/12)
SAT/SMTソルバの仕組み
SAT/SMTソルバの仕組み
Masahiro Sakai
Proof Summit 2015 <http: /> で発表した、SAT/SMTソルバの仕組みです。 Proofということで、論理学的側面からの面白さを出来るだけ紹介しています。
証明プログラミング入門2
証明プログラミング入門2
Kyoko Kadowaki
Agda で論理学
暗号文のままで計算しよう - 準同型暗号入門 -
暗号文のままで計算しよう - 準同型暗号入門 -
MITSUNARI Shigeo
introduction to homomorphic encryption
研究法(Claimとは)
研究法(Claimとは)
Jun Rekimoto
暦本研(東京大学情報学環)の研究法ガイダンス資料です claimとは アイデア生産の三要素 天使度/悪魔度
デキるプログラマだけが知っているコードレビュー7つの秘訣
デキるプログラマだけが知っているコードレビュー7つの秘訣
Masahiro Nishimi
SonicGarden Study #11で放送された資料から一部スライドを抜いたものになります。 http://sonicgarden.doorkeeper.jp/events/13229 ----- 優れたプログラマだけが優れたソースコードを書くことができます。 では優れたプログラマになるにはどうすれば良いでしょうか。 自分の書いたコードを、優れたプログラマに指摘してもらうことが一番の近道です。それがコードレビューです。たった一人でコードレビューも受けずに、ただ書き続けてもクソコードはクソコードのままなのです。 そこで今回は、良いコードが書けるプログラマになるための、コードレビューを上手に実践する秘訣を話します。
ブラックボックス最適化とその応用
ブラックボックス最適化とその応用
gree_tech
『CCSE2019』で発表された資料です。 https://ccse.jp/2019/
ウェーブレット木の世界
ウェーブレット木の世界
Preferred Networks
2013/1/9に統数研チャンネルにて、ウェーブレット木の解説をしました。岩波書店より出版されました「高速文字列解析の世界」の解説になっています。
ホモトピー型理論入門
ホモトピー型理論入門
k h
ホモトピー型理論(HoTT)
グラフィカルモデル入門
グラフィカルモデル入門
Kawamoto_Kazuhiko
最適輸送入門
最適輸送入門
joisino
IBIS 2021 https://ibisml.org/ibis2021/ における最適輸送についてのチュートリアルスライドです。 『最適輸送の理論とアルゴリズム』好評発売中! https://www.amazon.co.jp/dp/4065305144 Speakerdeck にもアップロードしました: https://speakerdeck.com/joisino/zui-shi-shu-song-ru-men
メタプログラミングって何だろう
メタプログラミングって何だろう
Kota Mizushima
「型の理論」と証明支援システム -- COQの世界
「型の理論」と証明支援システム -- COQの世界
maruyama097
機械学習のためのベイズ最適化入門
機械学習のためのベイズ最適化入門
hoxo_m
db analytics showcase Sapporo 2017 発表資料 http://www.db-tech-showcase.com/dbts/analytics
ゼロから始めるQ#
ゼロから始めるQ#
Takayoshi Tanaka
福岡.NET Conf 2018のセッション資料
オブジェクト指向できていますか?
オブジェクト指向できていますか?
Moriharu Ohzu
協働ロボットCOROの開発における形式的仕様記述KMLの開発と適用
協働ロボットCOROの開発における形式的仕様記述KMLの開発と適用
Life Robotics
PPL2017でのポスター発表資料
最適化超入門
最適化超入門
Takami Sato
TokyoWebMining #40のトーク3の資料です
動的計画法を極める!
動的計画法を極める!
HCPC: 北海道大学競技プログラミングサークル
2016年7月28日 HCPC勉強会
遺伝的アルゴリズム(Genetic Algorithm)を始めよう!
遺伝的アルゴリズム(Genetic Algorithm)を始めよう!
Kazuhide Okamura
2014年11月度 AITC クラウド・テクノロジー活用部会 勉強会資料 遺伝的アルゴリズム(Genetic Algorithm)を始めよう!
数学カフェ 確率・統計・機械学習回 「速習 確率・統計」
数学カフェ 確率・統計・機械学習回 「速習 確率・統計」
Ken'ichi Matsui
2017/4/22(土)【第18回数学カフェ】【確率・統計・機械学習回】 https://connpass.com/event/54301/ 「速習 確率・統計」 本講演では、主に確率、統計の初心者の方や、プログラマ、エンジニアの方でデータ分析に興味を持っている方が確率統計のエッセンスを数理的に理解できることを目標に、データの集約方法から、大数の法則や中心極限定理など、確率・統計で利用される非常に重要な数学の定理などを紹介します。
冬のLock free祭り safe
冬のLock free祭り safe
Kumazaki Hiroki
競技プログラミングのためのC++入門
競技プログラミングのためのC++入門
natrium11321
2012/12/01,久留米高専にて. 主に1~2年生向けのスライド.
GiNZAで始める日本語依存構造解析 〜CaboCha, UDPipe, Stanford NLPとの比較〜
GiNZAで始める日本語依存構造解析 〜CaboCha, UDPipe, Stanford NLPとの比較〜
Megagon Labs
Universal Dependencies シンポジウム発表資料 @ 国立国語研究所 松田寛 - Megagon Labs
Pythonによる黒魔術入門
Pythonによる黒魔術入門
大樹 小倉
Pythonによる(Rubyでも大体適用可能)黒魔術へ入門するための案内書
充足可能性問題のいろいろ
充足可能性問題のいろいろ
Hiroshi Yamashita
2019年3月のJOI春合宿で行った講義のスライドです
よくわかるCoqプログラミング
よくわかるCoqプログラミング
Real_analysis
SlideShareを使うためのテスト. 私がこの間ゼミで発表したスライドを試しにあげてみるなど.
すごいCoq入門
すごいCoq入門
真一 北原
第4回 #LT駆動 の発表スライドです
Anomaly Detector で遊ぼう♪ with Azure Time Series Insights
Anomaly Detector で遊ぼう♪ with Azure Time Series Insights
Kazumi IWANAGA
Cogbot 勉強会! #26 - 新春 LT Night ! での LT 資料です。 https://cogbot.connpass.com/event/159422/
More Related Content
What's hot
ウェーブレット木の世界
ウェーブレット木の世界
Preferred Networks
2013/1/9に統数研チャンネルにて、ウェーブレット木の解説をしました。岩波書店より出版されました「高速文字列解析の世界」の解説になっています。
ホモトピー型理論入門
ホモトピー型理論入門
k h
ホモトピー型理論(HoTT)
グラフィカルモデル入門
グラフィカルモデル入門
Kawamoto_Kazuhiko
最適輸送入門
最適輸送入門
joisino
IBIS 2021 https://ibisml.org/ibis2021/ における最適輸送についてのチュートリアルスライドです。 『最適輸送の理論とアルゴリズム』好評発売中! https://www.amazon.co.jp/dp/4065305144 Speakerdeck にもアップロードしました: https://speakerdeck.com/joisino/zui-shi-shu-song-ru-men
メタプログラミングって何だろう
メタプログラミングって何だろう
Kota Mizushima
「型の理論」と証明支援システム -- COQの世界
「型の理論」と証明支援システム -- COQの世界
maruyama097
機械学習のためのベイズ最適化入門
機械学習のためのベイズ最適化入門
hoxo_m
db analytics showcase Sapporo 2017 発表資料 http://www.db-tech-showcase.com/dbts/analytics
ゼロから始めるQ#
ゼロから始めるQ#
Takayoshi Tanaka
福岡.NET Conf 2018のセッション資料
オブジェクト指向できていますか?
オブジェクト指向できていますか?
Moriharu Ohzu
協働ロボットCOROの開発における形式的仕様記述KMLの開発と適用
協働ロボットCOROの開発における形式的仕様記述KMLの開発と適用
Life Robotics
PPL2017でのポスター発表資料
最適化超入門
最適化超入門
Takami Sato
TokyoWebMining #40のトーク3の資料です
動的計画法を極める!
動的計画法を極める!
HCPC: 北海道大学競技プログラミングサークル
2016年7月28日 HCPC勉強会
遺伝的アルゴリズム(Genetic Algorithm)を始めよう!
遺伝的アルゴリズム(Genetic Algorithm)を始めよう!
Kazuhide Okamura
2014年11月度 AITC クラウド・テクノロジー活用部会 勉強会資料 遺伝的アルゴリズム(Genetic Algorithm)を始めよう!
数学カフェ 確率・統計・機械学習回 「速習 確率・統計」
数学カフェ 確率・統計・機械学習回 「速習 確率・統計」
Ken'ichi Matsui
2017/4/22(土)【第18回数学カフェ】【確率・統計・機械学習回】 https://connpass.com/event/54301/ 「速習 確率・統計」 本講演では、主に確率、統計の初心者の方や、プログラマ、エンジニアの方でデータ分析に興味を持っている方が確率統計のエッセンスを数理的に理解できることを目標に、データの集約方法から、大数の法則や中心極限定理など、確率・統計で利用される非常に重要な数学の定理などを紹介します。
冬のLock free祭り safe
冬のLock free祭り safe
Kumazaki Hiroki
競技プログラミングのためのC++入門
競技プログラミングのためのC++入門
natrium11321
2012/12/01,久留米高専にて. 主に1~2年生向けのスライド.
GiNZAで始める日本語依存構造解析 〜CaboCha, UDPipe, Stanford NLPとの比較〜
GiNZAで始める日本語依存構造解析 〜CaboCha, UDPipe, Stanford NLPとの比較〜
Megagon Labs
Universal Dependencies シンポジウム発表資料 @ 国立国語研究所 松田寛 - Megagon Labs
Pythonによる黒魔術入門
Pythonによる黒魔術入門
大樹 小倉
Pythonによる(Rubyでも大体適用可能)黒魔術へ入門するための案内書
充足可能性問題のいろいろ
充足可能性問題のいろいろ
Hiroshi Yamashita
2019年3月のJOI春合宿で行った講義のスライドです
よくわかるCoqプログラミング
よくわかるCoqプログラミング
Real_analysis
SlideShareを使うためのテスト. 私がこの間ゼミで発表したスライドを試しにあげてみるなど.
What's hot
(20)
ウェーブレット木の世界
ウェーブレット木の世界
ホモトピー型理論入門
ホモトピー型理論入門
グラフィカルモデル入門
グラフィカルモデル入門
最適輸送入門
最適輸送入門
メタプログラミングって何だろう
メタプログラミングって何だろう
「型の理論」と証明支援システム -- COQの世界
「型の理論」と証明支援システム -- COQの世界
機械学習のためのベイズ最適化入門
機械学習のためのベイズ最適化入門
ゼロから始めるQ#
ゼロから始めるQ#
オブジェクト指向できていますか?
オブジェクト指向できていますか?
協働ロボットCOROの開発における形式的仕様記述KMLの開発と適用
協働ロボットCOROの開発における形式的仕様記述KMLの開発と適用
最適化超入門
最適化超入門
動的計画法を極める!
動的計画法を極める!
遺伝的アルゴリズム(Genetic Algorithm)を始めよう!
遺伝的アルゴリズム(Genetic Algorithm)を始めよう!
数学カフェ 確率・統計・機械学習回 「速習 確率・統計」
数学カフェ 確率・統計・機械学習回 「速習 確率・統計」
冬のLock free祭り safe
冬のLock free祭り safe
競技プログラミングのためのC++入門
競技プログラミングのためのC++入門
GiNZAで始める日本語依存構造解析 〜CaboCha, UDPipe, Stanford NLPとの比較〜
GiNZAで始める日本語依存構造解析 〜CaboCha, UDPipe, Stanford NLPとの比較〜
Pythonによる黒魔術入門
Pythonによる黒魔術入門
充足可能性問題のいろいろ
充足可能性問題のいろいろ
よくわかるCoqプログラミング
よくわかるCoqプログラミング
Similar to 証明プログラミング超入門
すごいCoq入門
すごいCoq入門
真一 北原
第4回 #LT駆動 の発表スライドです
Anomaly Detector で遊ぼう♪ with Azure Time Series Insights
Anomaly Detector で遊ぼう♪ with Azure Time Series Insights
Kazumi IWANAGA
Cogbot 勉強会! #26 - 新春 LT Night ! での LT 資料です。 https://cogbot.connpass.com/event/159422/
JaSST'16 Tokyo モバイルセッション
JaSST'16 Tokyo モバイルセッション
mirer
2016年3月8日、9日に開催された JaSST'16 Tokyo のモバイルセッションで使用した発表用資料です。
20151021 cookpad talk_test_engineer
20151021 cookpad talk_test_engineer
Kazuaki Matsuo
presentation at http://connpass.com/event/21247/
読書会Vol6
読書会Vol6
Mari Takahashi
社内読書会用の資料です。 アジャイルサムライを皆で読んでいます。
20120529 アジャイルサムライ読書会第6回
20120529 アジャイルサムライ読書会第6回
株式会社コネクトスター(ConnectStar Co., Ltd.)
アジャイルサムライ読書会、第6回はイテレーション(固定した期間)の回し方ついてです。 私達の読書会は、サービス開発に関わる人(プランナー/プログラマー/デザイナーなど誰でも)がよりよいサービス開発のあり方について、お題になった本を通じて、共通認識をもったり知識を交換したり、建設的に議論したりする場です。 2012年4月からは「アジャイルサムライ」を読んでいます。
プログラマ人生論
プログラマ人生論
ymmt
挫折だらけのプログラマー人生を振り返ってみました。
Similar to 証明プログラミング超入門
(7)
すごいCoq入門
すごいCoq入門
Anomaly Detector で遊ぼう♪ with Azure Time Series Insights
Anomaly Detector で遊ぼう♪ with Azure Time Series Insights
JaSST'16 Tokyo モバイルセッション
JaSST'16 Tokyo モバイルセッション
20151021 cookpad talk_test_engineer
20151021 cookpad talk_test_engineer
読書会Vol6
読書会Vol6
20120529 アジャイルサムライ読書会第6回
20120529 アジャイルサムライ読書会第6回
プログラマ人生論
プログラマ人生論
証明プログラミング超入門
1.
証明プログラミング超入門 2015/01/24 情報科学若手の会冬の陣 門脇 香子(@kdxu)
2.
自己紹介 • 門脇 香子
(@kdxu) • お茶の水女子大学 浅井研 M1 • 好きなもの : 型と自転車と音楽 • http://kodoku.tokyo
3.
概要 • 証明プログラミングとは? • Agda
による例(布教) 目標 : 高校数学レベルの簡単な証明 • (時間が余れば)ライブコーディング
4.
証明プログラミングとは? • ある種の性質を保障したプログラムが書ける 数学の定理を証明したり,停止性などの性質が保障された コンパイラなどを実装できる • コードの停止性,正当性などを証明できる 活用例
: OpenSSLの脆弱性の発見 CompCert(安全性が保証されたCコンパイラ) • テストではなく証明で正しさを保証する! • 安全,COOL,AWESOME !
5.
Agda について • もっとも有名な定理証明支援系の1つ •
依存型という型を使用できる • Coq より「プログラミング言語」寄り • Syntax としては Haskell に近い • 証明を項として表し直接操作する
6.
インストール&セットアップ • 要 Haskell-Platform •
$ cabal install agda • $ agda-mode setup • 推奨エディタはAquamacsだそうです
7.
書いてみよう • まずA1.agdaというファイルを作り module A1
agda と先頭に書く.(ファイル名と同じにする) • C-c C-l でloadできます
8.
まずは型定義 • data で新しい型を定義できる •
indent に注意しましょう • Set の部分集合としてのBool型という意味
9.
まずは型定義 • 自然数の型 • ペアノの公理による定義 •
zeroがNat型ということと,xがNat型ならsuc x もNat型だということを示している
10.
関数定義 • 普通の足し算の定義 • (suc
m) + n = (suc (m + n)) • C-c C-n で関数を評価できます
11.
関数定義 • 中値記法もできます
12.
関数定義
13.
何か証明してみよう • Nat 型と
Bool 型の簡単な定義はできた • ここでなにか簡単な定理を証明してみます • 同値性の証明をするならば同値関係のデータ型が必 要(equality) -> どのように定義するのか?
14.
同値性 • 2つのものが同じということは,以下のように定義できる • 例
: zero (suc zero) はダメ x x の形をしていない.型はあるが,値が存在しない なので,reflという型にならない • reflにハマる値が存在するか で定義できる
15.
定理 = 関数 •
例えば 0 + n n を示したい -> 返り値がreflとなるように関数を書ければよい • 関数の型は (n : Nat) -> (0 + n n) となる • ここで suc 関数に対する再帰的処理が必要になる
16.
定理 = 関数 •
これを Agda は 型が等しい と判断してくれない • ここで suc 関数に対する再帰的処理が必要になる • 一般的に定理を再帰的に示す関数 cong を定義
17.
証明完了! • zero と
suc nで場合分けしている (C-c C-c n) zero の場合は zero + zero は zeroなので直ちにrefl suc n の場合は n に関して再帰的に証明をする
18.
Tips : 依存型 •
Agda では依存型(Dependent Types)という型が使えます • 「値に依存する型」を作ることができる型 • 例 Vec N 型 • 型の段階で長さの比較や空リスト判定を保証できる
19.
おすすめ教材 • Ulf Norell
氏の Dependently Typed Programming in Agda (http://www.cse.chalmers.se/ ulfn/darcs/AFP08/ LectureNotes/AgdaIntro.pdf) • Brutal [Meta]Introduction to Dependent Types in Agda (http://oxij.org/note/BrutalDepTypes/) • お茶大製「みんなのAgda wiki」 (http://agda.wiki.fc2.com/)
20.
研究紹介 • 私は今日紹介した Agda
という言語を用いて安全 な型推論器を構成しています • 依存型の性質を用いて型変数の番号をうまく管理す ることで,セルの書き換えを用いずにUnification を行うことにより実装しています • https://github.com/kdxu/InferAgda
21.
おわり 証明ができると世界が開けます. 証明プログラミングを楽しみましょう!
Download now