Comment by aatd86

3 months ago

Why doesn't it seem exactly true?

It is an integer. It is in the definition. And any value should be equal to nine. By construction Nine could have been given the same representation as int, at first. Except this is not enough to express the refinement/proposition.

One could represent it as a fat pointer with a space allocated to the set of propositions/predicates to check the value of.

That allows to check for equality for instance.

That information would not be discarded.

This is basically a subtype of int.

As such, it is both a dependent type and a refinement type. While it is true that not all refinement types are dependent types, because of cardinality.

I think Maxatar response in the same thread puts it in words that are possibly closer to the art.

When does the predicate get tested?

Also, it's not a dependent type. The type does not depend on the value. The value depends on the type.

  • The predicate gets tested every time we do type checking? It is part of the type identity. And it is a dependent type. Just like an array type is a dependent type, the actual array type depending on the length value argument.

    edit: I think I am starting to understand. In the implementations that are currently existing, Singleton types may be abstracted. My point is exactly to unabstract them so that the value is part of their identity.

    And only then we can deal with only types i.e. everything from the same Universe.

    • > The predicate gets tested every time we do type checking? It is part of the type identity.

      When does type checking happen?

      I think it happens at compile time, which means the predicate is not used for anything at all at run time.

      > edit: I think I am starting to understand. In the implementations that are currently existing, Singleton types may be abstracted. My point is exactly to unabstract them so that the value is part of their identity.

      I am not sure what you mean by "to unabstract them so that the value is part of their identity", sorry. Could you please explain it for me?

      > And only then we can deal with only types i.e. everything from the same Universe.

      If you mean avoiding the hierarchy of universes that many dependently typed languages have, the reason they have those is that treating all types as being in the same universe leads to a paradox ("the type of all types" contains itself and that gets weird - not impossible, just weird).

      1 reply →