2014-06-26 21:00:20 +00:00
|
|
|
inductive nat : Type :=
|
|
|
|
| zero : nat
|
|
|
|
| succ : nat → nat
|
|
|
|
|
|
|
|
inductive list (A : Type) : Type :=
|
2014-06-28 20:57:36 +00:00
|
|
|
| nil {} : list A
|
|
|
|
| cons : A → list A → list A
|
2014-06-26 21:00:20 +00:00
|
|
|
|
|
|
|
check nil
|
|
|
|
check nil.{1}
|
|
|
|
check @nil.{1} nat
|
|
|
|
check @nil nat
|
|
|
|
|
|
|
|
check cons zero nil
|
|
|
|
|
|
|
|
inductive vector (A : Type) : nat → Type :=
|
2014-06-28 20:57:36 +00:00
|
|
|
| vnil {} : vector A zero
|
|
|
|
| vcons : forall {n : nat}, A → vector A n → vector A (succ n)
|
2014-06-26 21:00:20 +00:00
|
|
|
|
|
|
|
check vcons zero vnil
|
|
|
|
variable n : nat
|
|
|
|
check vcons n vnil
|
|
|
|
|
|
|
|
check vector_rec
|
|
|
|
|
|
|
|
definition vector_to_list {A : Type} {n : nat} (v : vector A n) : list A
|
|
|
|
:= vector_rec nil (fun n a v l, cons a l) v
|