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