Estoy en el siguiente ejercicio en Fundamentos de software :
(** **** Exercise: 2 stars (baz_num_elts) *)
(** Consider the following inductive definition: *)
Inductive baz : Type :=
| x : baz -> baz
| y : baz -> bool -> baz.
(** How _many_ elements does the type [baz] have?
(* FILL IN HERE *)
[] *)
Todas las respuestas que he visto en Internet dicen que la respuesta es 2 y que los elementos son x e y. Si ese es el caso, entonces no me queda claro qué se entiende por elementos . Ciertamente hay dos constructores, pero es imposible crear un valor de tipo baz .
Es imposible crear un valor de tipo bazporque xtiene tipo baz -> baz. ytiene tipo baz -> bool -> baz. Para obtener un valor de tipo baz, necesitamos pasar un valor de tipo baza cualquiera xo y. No podemos obtener un valor de tipo bazsin tener ya un valor de tipo baz.
Hasta ahora he estado interpretando elementos como valores medios . Por lo tanto (cons nat 1 nil), y (cons nat 1 (cons nat 2 nil))ambos serían elementos de tipo list naty no habría un número infinito de elementos de tipo list nat. Habría dos elementos de tipo bool, que son truey false. Según esta interpretación, diría que hay cero elementos de tipo baz.
¿Estoy en lo cierto, o alguien puede explicar lo que estoy entendiendo mal?

baz.baz.Respuestas:
Estoy de acuerdo contigo. Hay una biyección entre
bazyFalse.fuente