blob: b81b454d06e0d86cdc9d99bbd450df1fa8c1354e (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
Module monomorphic.
Class Inhabited (A : Type) : Prop := populate { _ : A }.
Arguments populate {_} _.
Instance prod_inhabited {A B : Type} (iA : Inhabited A)
(iB : Inhabited B) : Inhabited (A * B) :=
match iA, iB with
| populate x, populate y => populate (x,y)
end.
(* Error: In environment
A : Type
B : Type
iA : Inhabited A
iB : Inhabited B
The term "(A * B)%type" has type "Type" while it is expected to have type
"Prop". *)
End monomorphic.
Module polymorphic.
Set Universe Polymorphism.
Class Inhabited (A : Type) : Prop := populate { _ : A }.
Arguments populate {_} _.
Instance prod_inhabited {A B : Type} (iA : Inhabited A)
(iB : Inhabited B) : Inhabited (A * B) :=
match iA, iB with
| populate x, populate y => populate (x,y)
end.
End polymorphic.
|