coq

    2

    1答えて

    私は、本体を書き直したい機能を持つ目標を持っていますが、 いくつかの関数引数が書き換えの途中にあります。 アイデンティティ関数を使って状況を再現しました。 機能がDefinedであれば、それは動作しますが、機能 はパラメータであり、私が書き換えする方法を述べる公理を持っているとき、私は書き換えることができ ありませんよ。 機能的な拡張性を前提として動作させることができます。 機能的な拡張性を前提と

    2

    1答えて

    いくつかの証明では、カウンタの例として2つのInductive定義を使用しています。私はこれらの定義をSectionで囲んでカプセル化したいと思います。通常のDefinitionsはLetを使用して非表示にできますが、これはInductiveの定義でも可能ですか?そして、Theoremさんはどうですか? 私が達成しようとしている実際のことを私に教えてください。私はそれを最初から間違った方法で行って

    0

    2答えて

    Reset <sectionname>.でもReset <globalconstant>.でもReset Initial.もCoqIDEインタラクティブセッションで動作しません。メッセージは、私が仕事に見てきた Error: Use CoqIDE navigation instead のみReset sがReset Extraction Blacklist.とReset Extraction

    0

    2答えて

    私は非常に短時間Coqを使用していましたが、私はまだいくつかのことで壁にぶつかります。私はレコードの構築でセットを定義しました。今私はそれを使用するいくつかのパターンマッチングを行う必要がありますが、私はそれを正しく使用する問題があります。まず、これらは私の要素です。 Inductive element : Set := | empty : element . . . | fun_m :

    7

    1答えて

    はProgram Fixpointのための戦術simplようなものはありますか? 特に、次のような些細な声明をどのように証明できますか?明らかに Program Fixpoint bla (n:nat) {measure n} := match n with | 0 => 0 | S n' => S (bla n') end. Lemma obvious: forall n, bla

    2

    2答えて

    Software Foundations Coqの書籍(http://www.cis.upenn.edu/~bcpierce/sf/current/toc.html)を調べようとしていますが、Induction.v(http://www.cs.uml.edu/~rhenniga/coq/sf_induction.htmlのように見える)をコンパイルすると、メッセージ "Error:現在の環境で参照

    0

    2答えて

    私はCoqを学習しており、練習としてタイプFnArity (N:nat)をすべてのN引数をエンコードするように定義したいと考えています。それは次のとおりです。 Check FnArity 3 : (forall A B C : Set, A -> B -> C). 作業をする必要がありますが Check FnArity 2 : (forall A B C D : Set, A -> B ->

    5

    1答えて

    私は、Haskellでよく使われるCoqの非決定性(MonadPlusや一般的なリストよりもあまり知られていない)のあまり知られていないモナド符号化をモデル化しようとしました。例えば、リストのエンコーディングは、Coqの対応する定義が以下のようになるのに対して、リストのエンコーディングは、 data List m a = Nil | Cons (m a) (m (List m a)) のように

    2

    1答えて

    私はこの問題の簡単な例を与えるだけで、私は証明したいと思うと思いますforall f : nat -> bool, exists i j, i<>j /\ f i = f j.明白なことはf 0, f 1, f 2,の値をチェックし、それに応じて進んでください。しかし、単にdestruct (f 0)と言うと、f 0は下位には出現しないため、Coqは目標を変更しません。そのため、私は現在、f 0の

    0

    2答えて

    以下の3つの引数の否定と定義を与えて、簡単に異なるケースを証明することができますが、 Coqを使用します。 Forall b1 b2 b3:boolのうちの1つがfalseであればtrueを返し、3つが真であればfalseを返します。どのように私はCoqでこの前提を書くのですか?私は分割などの戦術を使用して連結などを分割することができますか? Definition negb (b:bool) :