aboutsummaryrefslogtreecommitdiff
path: root/test-suite/bugs/opened/HoTT_coq_093.v
blob: 029a0caf7658e6094b8a235b331a868ddece0f5e (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
30
31
32
33
34
35
36
37
(** It would be nice if we had more lax constraint checking of inductive types, and had variance annotations on their universes *)
Set Printing All.
Set Printing Implicit.
Set Printing Universes.
Set Universe Polymorphism.

Inductive paths {A : Type} (a : A) : A -> Type := idpath : paths a a.
Arguments idpath {A a} , [A] a.

Notation "x = y" := (@paths _ x y) : type_scope.

Section lift.
  Let lift_type : Type.
  Proof.
    let U0 := constr:(Type) in
    let U1 := constr:(Type) in
    let unif := constr:(U0 : U1) in
    exact (U0 -> U1).
  Defined.

  Definition Lift : lift_type := fun A => A.
End lift.

Goal forall (A : Type) (x y : A), @paths A x y -> @paths (Lift A) x y.
intros A x y p.
compute in *.
Fail exact p. (* Toplevel input, characters 21-22:
Error:
In environment
A : Type (* Top.15 *)
x : A
y : A
p : @paths (* Top.15 *) A x y
The term "p" has type "@paths (* Top.15 *) A x y"
while it is expected to have type "@paths (* Top.18 *) A x y"
(Universe inconsistency: Cannot enforce Top.18 = Top.15 because Top.15
< Top.18)). *)