If I have the following line:
Definition Foo : Set := list nat.
then I compile with no problems.
However, suppose I want to do the same with Coq.Lists.ListSet
, a library representing finite sets as lists:
(*Section first_definitions.
Variable A : Type.
Definition listset := list A.*)
Definition Bar : Set := listset nat.
I get the following error:
The term "listset nat" has type "Type" while it is expected to have type
"Set" (universe inconsistency).
- Is there a way to "cast"
listset
so that it lives inSet
instead ofType
? i.e. If I know I'm going to be usinglistset
with parameters of typeSet
, is there a way to make it live in theSet
heirarchy somehow? - Why does the error happen for
listset
, but not forlist
, whenlistset
is defined to belist
?
Note: The actual type is called set
, but I've renamed it to listset
to avoid confusion with the sort Set
.
EDIT: =
replaced with :=