File: WithDefUBinders.v

package info (click to toggle)
coq 8.12.0-3
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 36,468 kB
  • sloc: ml: 210,451; sh: 3,345; python: 3,008; ansic: 2,482; makefile: 793; lisp: 224; javascript: 63; xml: 24; sed: 2
file content (17 lines) | stat: -rw-r--r-- 460 bytes parent folder | download | duplicates (5)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

Set Universe Polymorphism.
Module Type T.
  Axiom foo@{u v|u < v} : Type@{v}.
End T.

Module M : T with Definition foo@{u v} := Type@{u} : Type@{v}.
  Definition foo@{u v} := Type@{u} : Type@{v}.
End M.

Fail Module M' : T with Definition foo := Type.

(* Without the binder expression we have to do trickery to get the
   universes in the right order. *)
Module M' : T with Definition foo := let t := Type in t.
Definition foo := let t := Type in t.
End M'.