summaryrefslogtreecommitdiff
path: root/test-suite/bugs/closed/HoTT_coq_025.v
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.