File: HoTT_coq_025.v

package info (click to toggle)
coq 8.20.1%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 44,116 kB
  • sloc: ml: 234,160; sh: 4,301; python: 3,270; ansic: 2,644; makefile: 882; lisp: 172; javascript: 63; xml: 24; sed: 2
file content (29 lines) | stat: -rw-r--r-- 850 bytes parent folder | download | duplicates (2)
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 {_} _.

  #[export] 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 {_} _.

  #[export] 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.