私は使っている:
$ coqtop -v
The Coq Proof Assistant, version 8.4pl5 (February 2015)
compiled on Feb 06 2015 17:44:41 with OCaml 4.02.1
次のCoInductive
タイプを定義しましたstream
:
$ coqtop
Welcome to Coq 8.4pl5 (February 2015)
Coq < CoInductive stream (A : Type) : Type :=
Coq < | Cons : A -> stream A -> stream A.
stream is defined
Coq < Check stream.
stream
: Type -> Type
Coq < Check Cons.
Cons
: forall A : Type, A -> stream A -> stream A
次に、次のCoFixpoint
定義を定義しようとしましたzeros
。
Coq < CoFixpoint zeros : stream nat := Cons 0 zeros.
ただし、代わりに次のエラーが発生しました。
Toplevel input, characters 38-39:
> CoFixpoint zeros : stream nat := Cons 0 zeros.
> ^
Error: In environment
zeros : stream nat
The term "0" has type "nat" while it is expected to have type
"Type".
変数を明示的にインスタンス化する必要があることがわかりましたA
:
Coq < CoFixpoint zeros : stream nat := Cons nat 0 zeros.
zeros is corecursively defined
A
Coq が の型を単独で推測しないのはなぜですか? の型を推測するにはどうすればよいA
ですか?