summaryrefslogtreecommitdiff
path: root/test-suite/bugs/closed/4450.v
blob: ecebaba8127c3e20e1ae19143307403bcc74d3d1 (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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
Polymorphic Axiom inhabited@{u} : Type@{u} -> Prop.

Polymorphic Axiom unit@{u} : Type@{u}.
Polymorphic Axiom tt@{u} : inhabited unit@{u}.

Polymorphic Hint Resolve tt : the_lemmas.
Set Printing All.
Set Printing Universes.
Goal inhabited unit.
Proof.
  eauto with the_lemmas.
Qed.

Universe u.
Axiom f : Type@{u} -> Prop.
Lemma fapp (X : Type) : f X -> False.
Admitted.
Polymorphic Axiom funi@{i} : f unit@{i}.

Goal (forall U, f U) -> (*(f unit -> False) ->  *)False /\ False.
  eauto using (fapp unit funi). (* The two fapp's have different universes *)
Qed.

Hint Resolve (fapp unit funi) : mylems.

Goal (forall U, f U) -> (*(f unit -> False) ->  *)False /\ False.
  eauto with mylems. (* Forces the two fapps at the same level *)
Qed.

Goal (forall U, f U) -> (f unit -> False) -> False /\ False.
  eauto. (* Forces the two fapps at the same level *)
Qed.

Polymorphic Definition MyType@{i} := Type@{i}.
Universes l m n.
Constraint l < m.
Polymorphic Axiom maketype@{i} : MyType@{i}.

Goal MyType@{l}.
Proof.
  Fail solve [ eauto using maketype@{m} ].
  eauto using maketype.
  Undo.
  eauto using maketype@{n}.
Qed.

Axiom foo : forall (A : Type), list A.
Polymorphic Axiom foop@{i} : forall (A : Type@{i}), list A.

Universe x y.
Goal list Type@{x}.
Proof.
  eauto using (foo Type). (* Refreshes the term *)
  Undo.
  eauto using foo. Show Universes.
  Undo.
  eauto using foop. Show Proof. Show Universes.
Qed.