More Related Content
PDF
Rubyの御先祖CLUのお話(OSC 2011 Shimane LT 資料) PDF
PDF
PPT
PDF
Rubyの御先祖CLU(くるう)のお話(OSC2013 Hamamatsu 発表資料) PDF
effective modern c++ chapeter36 ODP
PDF
What's hot
PDF
PPT
Javascriptで無限ループを実現する5つの方法 PDF
PDF
Hello Dark-Side C# (Part. 1) PDF
PDF
PDF
KEY
PDF
AWS は形式手法の夢を見るか? - モデル検査器 Alloy によるインフラ設計 PPT
PDF
PDF
PDF
ジェネリック関数の呼び出され方 #cocoa_kansai PPTX
PDF
Async design with Unity3D PPTX
PPTX
PDF
Effective Modern C++ 勉強会#3 Item16 PDF
PDF
Viewers also liked
PPTX
PDF
PDF
PPTX
PPTX
PPTX
PPTX
joi2012-sp-day2-broadcasting PDF
Proving Decidability of Intuitionistic Propositional Calculus on Coq PDF
PDF
PPTX
Similar to Coqでsprintf
PDF
PPTX
PDF
PPTX
PDF
PPTX
PDF
KEY
How wonderful to be (statically) typed 〜型が付くってスバラシイ〜 PDF
PDF
Adding simpl GVN path into GHC PDF
PPT
PPTX
MISRA-C2012とISO/IEC 9899:2011 at OSCNagoya2013 PPT
PDF
PDF
PPTX
Ocaml lecture slides 01 at axsh PDF
関数型都市忘年会『はじめての函数型プログラミング』 KEY
PDF
“Adoption and Focus: Practical Linear Types for Imperative Programming”他の紹介@P... Recently uploaded
PDF
エンジニアが選ぶべきAIエディタ & Antigravity 活用例@ウェビナー「触ってみてどうだった?Google Antigravity 既存IDEと... PDF
Machine Tests Benchmark Suite. Explain github.com/alexziskind1/machine_tests #2 PDF
Machine Tests Benchmark Suite. Explain github.com/alexziskind1/machine_tests #1 PPTX
楽々ナレッジベース「楽ナレ」3種比較 - Dify / AWS S3 Vector / Google File Search Tool PDF
流行りに乗っかるClaris FileMaker 〜AI関連機能の紹介〜 by 合同会社イボルブ PDF
20251210_MultiDevinForEnterprise on Devin 1st Anniv Meetup Coqでsprintf
- 1.
- 2.
- 3.
Coqでsprintf
• printf(“%s : %dn”, “Coq”, strlen(“Coq”));
• 第二引数以降の型が、第一引数に依存!
• 依存型のわかりやすい例
• sprintf “Hello”
– (string)型を返して欲しい
• sprintf “There are %d pens.”
– (Z -> string)型を返して欲しい
• 引数によって戻り値の型が異なる
- 4.
- 5.
- 6.
関数定義の命令
証明モードを併用しな 証明モードを併用する
い
単なる定義 Definition Program Definition
構造帰納法による定義 Fixpoint{struct x} Program Fixpoint{struct x}
停止性証明による定義 Function{wf lt x} Program Fixpoint{wf lt x}
(1)
停止性証明による定義 Function{measure f x} Program Fixpoint{measure f x}
(2)
※1 Functionでは、定義直後に停止性証明の証明モードに入る。証明終了後に
余帰納法
実際に関数が定義される。 CoFixpoint Program CoFixpoint
※2 Programでは、定義後にObligation命令(Obligation 1 や Next Obligation) を使っ
てプレースホルダーの証明をするモードに入る。証明終了後に実際に関数が定
義される。場合によっては全て自動で証明されてしまう。
※3 Fixpoint{struct x}では、引数xの構造について単調減少な再帰呼び出しのみ許
可される。CoFixpointでは、戻り値の構造について単調減少な再帰呼び出しの
み許可される。
- 7.
- 8.
- 9.
- 10.
- 11.
- 12.
- 13.
- 14.
sprintfの実装
• 実行例
• sprintf“Hello, world!”
– → “Hello, world!”
• sprintf “%d + %d = %d” (1) (2) (1+2)
– → “1 + 2 = 3”
• sprintf “Hello, %s!” “Masaki”
– → “Hello, Masaki”
- 15.
- 16.
- 17.
- 18.