coq-club AT inria.fr
Subject: The Coq mailing list
List archive
- From: Arthur Azevedo de Amorim <arthur.aa AT gmail.com>
- To: Coq Club <coq-club AT inria.fr>
- Subject: [Coq-Club] What is a successor universe?
- Date: Thu, 17 Jan 2019 10:18:38 -0500
- Authentication-results: mail3-smtp-sop.national.inria.fr; spf=None smtp.pra=arthur.aa AT gmail.com; spf=Pass smtp.mailfrom=arthur.aa AT gmail.com; spf=None smtp.helo=postmaster AT mail-oi1-f169.google.com
- Ironport-phdr: 9a23:ULtRjxYJB6YIcnikLjyVqff/LSx+4OfEezUN459isYplN5qZoMuybnLW6fgltlLVR4KTs6sC17KG9fi4EUU7or+5+EgYd5JNUxJXwe43pCcHRPC/NEvgMfTxZDY7FskRHHVs/nW8LFQHUJ2mPw6arXK99yMdFQviPgRpOOv1BpTSj8Oq3Oyu5pHfeQpFiCa+bL9oMBm6sRjau9ULj4dlNqs/0AbCrGFSe+RRy2NoJFaTkAj568yt4pNt8Dletuw4+cJYXqr0Y6o3TbpDDDQ7KG81/9HktQPCTQSU+HQRVHgdnwdSDAjE6BH6WYrxsjf/u+Fg1iSWIdH6QLYpUjm58axlVAHnhzsGNz4h8WHYlMpwjL5AoBm8oxBz2pPYbJ2JOPZ7eK7WYNEUSndbXstJWCNPAo2yYYgSAeQfIelVtJPyq0cUoBakGQWgGOHixzlVjXH2x6061OEhHBna0Qw6A9IOsGnUrM/oP6oOUOG60rfIwiveYPNRxDzy9ZbHeQ09rPGJWrJwa8vRyUwyHA7ClFqQs5DlPzOI1uQXqWSU9fBvWPmgi24isQ5xozyvyt0whYnOg4IY01bJ/jh6zoYtPdC0VlJ3bNq+HJZTtyyWLZZ6T8IgTm1ypSo3y7kLtJimdyYQ0psn3QTQa/mffoiI/B3jUOGRLC99hH1/ebK/gw++8U+hyuHhT8W03ktGoytBn9XWuXAN0BvT6seDSvRj5EuuxTGP1wXL5uFFJ0A7i7bbJoY/zrIskpcfq0fOEy/slEnrjaKbdF8o9vWp5unjernmo4WTN45wigHwKKQuncm/DPwiPQgUQ2ib+fm81Kf58ULjWrpHlfI2kqzDv5DbIcQXvLK2AwhQ0oo78RawEy+m0MgEnXkANF9KZBWHj5HwN17SJPD4EOywjk+3kDZrwvDGJqfuDo/MLnjFirfhfKxy51RSyAopnphj4Md/DahJC/buUAelv9vBSxQ9LgacwuD9Cdw72JlICkyVBarMGbnOsUKSrss9LveBaIhdtDu1Av0i/f/rxSswg0MdYLPv1JI/Z3WxH/AgKEKcNym/yuwdGHsH61JtBNfhj0ePBHsKPy7rDvAMowojAYfjNr/tA4WkgbiPxiC+R8QEaWVPC1TKGnDtJdzdB6U8LRmKK8okqQQqEKC7QtZ4hx6rvQ7+jbFgK7iMo3BKhdfYzNFwotbru1Qy+DhzVZrP1miMSyRznzpNSWZojeZwpktyzlrF2q990aRV
Coq accepts the following snippet, which declares a universe-polymorphic type that lives in a successor universe:
Polymorphic Inductive pack@{i} : Type@{i+1} :=
Pack { sort : Type@{i}; elt : sort }.
However, if I try to take the successor of a universe level elsewhere, I get a parse error:
Polymorphic Definition pack2@{i} (T : Type@{i}) (x : T) : pack@{i+1} :=
Pack pack@{i} (Pack@{i} T x).
(* Toplevel input, characters 65-66: *)
(* > Polymorphic Definition pack2@{i} (T : Type@{i}) (x : T) : pack@{i+1} := Pack pack@{i} (Pack@{i} T x). *)
(* > ^ *)
(* Error: Syntax error: [constr:universe_level] or '}' expected (in [instance]). *)
If I omit the annotation, Coq complains that I haven't declared the universe where the definition should live:
Polymorphic Definition pack2@{i} (T : Type@{i}) (x : T) :=
Pack pack@{i} (Pack@{i} T x).
(* Toplevel input, characters 61-65: *)
(* > Polymorphic Definition pack2@{i} (T : Type@{i}) (x : T) := Pack pack@{i} (Pack@{i} T x). *)
(* > ^^^^ *)
(* Error: Universe {Top.72} is unbound. *)
Is there any way of convincing Coq that pack2's codomain is pack@{i+1}?
Thanks!
Best,
Arthur
- [Coq-Club] What is a successor universe?, Arthur Azevedo de Amorim, 01/17/2019
- Re: [Coq-Club] What is a successor universe?, Gaëtan Gilbert, 01/17/2019
- Re: [Coq-Club] What is a successor universe?, Gaëtan Gilbert, 01/17/2019
- Re: [Coq-Club] What is a successor universe?, Arthur Azevedo de Amorim, 01/17/2019
- Re: [Coq-Club] What is a successor universe?, Gaëtan Gilbert, 01/17/2019
- Re: [Coq-Club] What is a successor universe?, Arthur Azevedo de Amorim, 01/17/2019
Archive powered by MHonArc 2.6.18.