Skip to Content.
Sympa Menu

coq-club - Re: [Coq-Club] Universe Polymorphism

coq-club AT inria.fr

Subject: The Coq mailing list

List archive

Re: [Coq-Club] Universe Polymorphism


Chronological Thread 
  • From: Gaëtan Gilbert <gaetan.gilbert AT skyskimmer.net>
  • To: coq-club AT inria.fr
  • Subject: Re: [Coq-Club] Universe Polymorphism
  • Date: Wed, 16 Nov 2022 23:35:09 +0100
  • Authentication-results: mail3-smtp-sop.national.inria.fr; spf=None smtp.pra=gaetan.gilbert AT skyskimmer.net; spf=Pass smtp.mailfrom=gaetan.gilbert AT skyskimmer.net; spf=None smtp.helo=postmaster AT relay6-d.mail.gandi.net
  • Ironport-data: A9a23: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 aMJqayoja11pYMd0SqtRpKNJCwkgQ==
  • Ironport-hdrordr: A9a23:QWkbvK3lthL0QpWTQEQHmgqjBL8kLtp133Aq2lEZdPUnSK2lfq eV7ZMmPH7P+VIssR4b9OxoVJPwI080sKQFhLX5Xo3PYOCFggGVxehZhOOI/9SjIVycygc378 ldmsZFaOEYQWIUsfrH
  • Ironport-phdr: A9a23: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 BgZ2rD5KIEeLMv91lAwMjFH
  • Ironport-sdr: 637565a4_2S6vayIkirpYmL/+A8nYRyzuv5uVYZebr1954mY1UqAw8hY Da2vILEfm7FxgJFjAKNEW1wAyRc8lQryzGG3RyA==


> However my construction of the inductive type ‘lst’ which is an inhabitant
of exactly that type is rejected. Why is it possible to construct a function of
that type but not an inductive definition?

That specific inductive is not allowed.

The rules for inductives
https://coq.github.io/doc/master/refman/language/core/inductive.html#theory-of-inductive-definitions
basically every argument of a constructor must be at a smaller or equal
universe to the output universe of the inductive. The first argument of cons
fails this.

Gaëtan Gilbert

On 16/11/2022 22:32, Helmut Brandl wrote:


On 16 Nov 2022, at 22:06, Helmut Brandl <helmut.brandl AT gmx.net
<mailto:helmut.brandl AT gmx.net>> wrote:



On 16 Nov 2022, at 21:23, Gaëtan Gilbert <gaetan.gilbert AT skyskimmer.net
<mailto:gaetan.gilbert AT skyskimmer.net>> wrote:


I.e. the argument type of a function type can live in a higher universe than
the result type.

Yes, but "lst" is an _inhabitant_ of the function type, it's not the function
type itself.

Similarly "(fun A:Type@{u+1} => A) : Type@{u+1} -> Type@{u}" is rejected

In that case the rejection is clear to me. The term ‘A’ has type
’Type@{u+1}’. Therefore the function returns a result of type ’Type@{u+1}’
and not ’Type@{u}’ as required by the type annotation. I.e. the function on
the left hand side of the colon is not an inhabitant of the type on the right
hand side of the colon. The compiler must reject it.

Are you saying that the type ’Type@{u+1} -> Type@{u}’ is not allowed to be
inhabited? Is there such a typing rule? If there is such a typing rule, I would
like to understand why it is there. Does the violation of such a typing rule
create any inconsistencies like an inhabitant of the type ‘forall A: Type, A’?

According to coq the type ’Type@{u+1} -> Type@{u}’ can have inhabitants. E.g.
the following is accepted by coq:

Check (fun A: Type@{u+1} => nat): Type@{u+1} -> Type@{u}.


However my construction of the inductive type ‘lst’ which is an inhabitant of
exactly that type is rejected. Why is it possible to construct a function of
that type but not an inductive definition?



— Helmut




On 16/11/2022 21:02, Helmut Brandl wrote:
I’d like to understand universes and universe polymorphism better. Therefore
I have some questions:
The following term is well typed in coq:
  Universe u.
  Check forall A:Type@{u+1}, Type@{u}.
I.e. the argument type of a function type can live in a higher universe than
the result type. If I try the same with an inductive type, I get an error.
  Inductive lst (A: Type@{u+1}): Type@{u} :=
  | nil: lst A
  | cons: A -> lst A -> lst A.
  *Error:*Universe inconsistency. Cannot enforce u = max(Set, u+1).
What is the theoretical background of this consistency error. The type of
‘lst’ is exactly the type I have checked above as well typed. I suspect that
if it were well typed, then I could ‘hide’ an object from the universe ‘u+1’
in the list which resides in the universe ‘u’. Can anybody help to give a
more precise explanation.
Regards
Helmut





Archive powered by MHonArc 2.6.19+.

Top of Page