から私は、オンラインソフトウェア財団ブックを通じて働くことによってコックを習得しようとしています:http://www.cis.upenn.edu/~bcpierce/sf/coqエラーが発生しました。例ソフトウェア財団帳
私は対話型のコマンドラインコックインタプリタcoqtop
を使用しています。
誘導の章(http://www.cis.upenn.edu/~bcpierce/sf/Induction.html)では、指示に正確に従っています。私はcoqc Basics.v
を使ってBasics.vをコンパイルします。私はその後、coqtop
を起動して、正確に入力します。
Require Export Basics.
Theorem andb_true_elim1 : forall b c : bool,
andb b c = true -> b = true.
Proof.
intros b c H.
destruct b.
Case "b = true".
すべてが、私は次のエラーを取得するその時点でその最後の行まで動作します:
Toplevel input, characters 5-15:
> Case "b = true".
> ^^^^^^^^^^
Error: No interpretation for string "b = true".
私は理由を解凍するために開始するコックにあまりにも新たなんですこれは動作していません。私はRequire String.
を最初にやる必要があると提案した何かをオンラインで見つけましたが、これはうまくいきませんでした。誰かがこの本を読んだりこの問題に遭遇しましたか?コードを正しく動作させるにはどうすればよいですか?
このCaseキーワード(戦術?)は、SFの本が明らかにしていないものに依存しているように見えますが、何が分かりません。
これは完璧に機能します。 induction.vファイルに私を指摘すると、HTMLにはないコードが存在することは間違いありませんでした。だから私は、これは、ケースは言語に組み込まれたものではないが、証拠に注釈を付けるSF作家によって追加されたものであるということを推測するだろうか?これは一般的なプラクティスか、SFのやり方に特有のものですか?また、なぜ「ケース」のものが(*ケースb =真*)のような単純なコメントより優れているのか分かりません。 – jcb
@quadelirus 'Case'はエラーが発生し、何かが変わった場合にデバッグを容易にします。例: 'nat'sとあなたのベース(' O')ケースの戦術が変更後に解決しなくなった場合、継続する代わりに 'Case" n = S n '"'にエラーを投げます(まだ完成していない) 'O'ケースに' S'ケースのものを適用することです。 – nobody
@quadelirusこれらの 'Case'マーカーは、ソフトウェアファンデーション以外の開発でも見つかりますが、他のスタイルもあります。個人的には、私は "Chlipalaスタイル"の証明を好む(つまり、証明が短くて、単に 'Case'マーカーが不要な点まで自動化する) - http://adam.chlipala.net/cpdt/を参照してください。さらにもう1つのCoqブック。 – nobody