タイプに対してポリモーフィックな可変ファンアウトを持つ加重ツリーを定義したいと考えています。私はこれを思いつきました:
(* Weighted tree with topological ordering on the nodes. *)
Inductive wtree (A : Type) : Type :=
LNode : A->wtree A
| INode : A->list (R*wtree A) -> wtree A.
ただし、次のようなタイプに重みを格納することをお勧めします。
Inductive Wtype (A : Type) : Type := W : R->A->Wtype A.
Inductive wtree (A : Wtype) : Type :=
LNode : A->wtree A
| INode : A->list (wtree A) -> wtree A.
ここR
で、標準ライブラリからの実数のセットです。
はではなく であるため、これは機能しませんWtype
が、これを行う方法がわかりません。残念ながら、私はまだオブジェクト指向の世界に住んでおり、より制限的なスーパータイプを に与えたいだけなのですが、Coq でそれを行う方法がわかりません。Type->Type
Type
A
Type