Skip to Content.
Sympa Menu

coq-club - Re: [Coq-Club] finite data types

coq-club AT inria.fr

Subject: The Coq mailing list

List archive

Re: [Coq-Club] finite data types


Chronological Thread 
  • From: Maximilian Wuttke <s8mawutt AT stud.uni-saarland.de>
  • To: coq-club AT inria.fr
  • Subject: Re: [Coq-Club] finite data types
  • Date: Mon, 18 Mar 2019 15:36:33 +0100
  • Authentication-results: mail3-smtp-sop.national.inria.fr; spf=None smtp.pra=s8mawutt AT stud.uni-saarland.de; spf=None smtp.mailfrom=s8mawutt AT stud.uni-saarland.de; spf=None smtp.helo=postmaster AT thyone.hiz-saarland.de
  • Autocrypt: addr=s8mawutt AT stud.uni-saarland.de; prefer-encrypt=mutual; keydata= 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
  • Ironport-data: A9a23:qvnpKq0+De8MDbPLOfbDix16xYloqk9dZeB8lSREDTx0pzGU2Wnw6G Jv4oT9i630KUXRwGDPiTqtDxNlbWHK44GJeu+qT5JkGUutJUE+uhrd1cBVw5jziVlI1SZbcm x+cvuCOXjfUkqzaQ63QGSey+vXlZMXMJTpNFxMsIAjUibGxSUgk7MZjYNNDk6E6ZUm54NbCb PeJalM6du5nG5dEBmzTZRL0J3Tz7WBAfOhEgEC0XDTmnXPZiIkLJ07vV8E3b15LDiB64CV+i ys8Jtf1MDw/++HsllvZ7gLRHTg/q0GMaJs9XyqSJDxrFsH/hGOtkPVNgwSZ+v2cdaqtxbUpz 6cOeeXzcKmqEdn+AmEPM3mt4huWjO8vR9ZV9JA8AigfDFOa1RKnj0AQcefGu/ZzEfpsuS+oA rez3MXuSoLzprRHR3GcGQO1lim4sx81NRgfnnft1EOxOtgyRIIYjx0SLTNept13ntw5KMkOd cD836FQxOZRkyVfqNhvG8frryDJlsOIQpDQlw7Yo271wmVXaKa2v81juAK32zVqutUM8W3fH MDULC3Fe5cZrgB9SCJjcrUM2ASIzzHZzXWdap0TbCgrwB1LRLW8qXlYf2lSjXLtwHh2qy1ls Pbi94hCsSy0L1VbDAIDJCfh6p9NU3O9XcN44/oZj2dqviqYdpI52exUmHQLK4/j1uLgGqeis iVQHhylp/MByQYvuMWmSgOqiJjGLFRuxXdwCj8nfsw4Ugu2nK2G1FhSztnjAZe7QYwQIsB8w 8ZrcVDH7ykNoWuUDe9WgwcobNTOjz/RqyYVRfirrP6vWqGbePPU8Qw0ihd1/FiO4kVVM5KIP +UR/l8f5tki3ozH8L2J/U5t7KqnZFYYfQIq1OEmrGGcCCHhOCjbplotBeDFGD5VeUx9ONKDC e7
  • Ironport-phdr: 9a23:S3EQHBL0VgfecBMG/9mcpTZWNBhigK39O0sv0rFitYgeK/3xwZ3uMQ Tl6Ol3ixeRBMOHsqoC07OempujcFRI2YyGvnEGfc4EfD4+ouJSoTYdBtWYA1bwNv/gYn9yNs 1DUFh44yPzahANS47xaFLIv3K98yMZFAnhOgppPOT1HZPZg9iq2+yo9JDffhlEiCChbb9vMR 67sRjfus4KjIV4N60/0AHJonxGe+RXwWNnO1eelAvi68mz4ZBu7T1et+ou+MBcX6r6eb84Ta FDAzQ9L281/szrugLdQgaJ+3ART38ZkhtMAwjC8RH6QpL8uTb0u+ZhxCWXO9D9QLYpUjqg8q hrUgflhjoZOT438G/ZicJ+g6xUrx2juxNy2IHUbJ2POfR5Yq/Qc9EXSGxcVchRTSxBBYa8Yp MIAeUbMudYroz9p1oKrRu/HwasAv7kxT9Vhn/qwa060PouGhzB0Qw7HN8OtW7brdvoNKcOTe C417LIzSneb/xLwzv99Y7IchE4rfGXR71/a9DRyU01GAPDk1qcs5HqMC2M2+kLrmOV4e1gVe e1hG4mrQF8ujmvxsE2ionInI0Z0F7E9T9/zY0oJtO4UFZ2bcOqHZZfrS2XM4p7TtkgTm1ypi o3xKMKtYamcCUEx5kr3RrSZv2df4WJ7B/vTvidLSt4iX9jZbmxnQy98VK6xe35TsS00EhFri 5CktTUqnAN1xzS6s+BSvRj5Euh2TeP1gHK5uFfO087j7DbK5o7zb42i5Ufq1nMETHulEX3iq +ZaFkk9/C15+npbbjqvJuROo5uhgz8KKgihMKyDfogPggLRWeb+OC81LP5/U3+RbVHluY2n6 rcsJ/AK8Ubu7K5AxNO34Y49xa/Eiqp3M4FnXkBLVJJYQmHgJLzNFHUJPD3F/G/jEm2nDh22f /KJqfhDYnVLnjfjLfheq5w5FJbyAoq1NxQ+5ZUCqwaL//oQU/wtNnYDgcjPACuwubnDs991o IEVm6VDK+ZKvCajVjd7eU2ZuKIeYU9uTDnKvFj6eS9o2U+nAo4dLmo2JoTaXm+Vst7P1mabD K4mYcEGHgXohYWV/D3hBufVz8WfH+7RaY14D19BI/wXtSLfZyknLHUhHTzJZZRfG0TUgnRQ0 etTJ2NXrI3UAzXIsJllWZYB6ShWogn2FeutR2/0LNuNO7d/CFeuZ+xjIEktd2Wrgk78HlPN+ rY1miMS29umWZSHW0twL1z51F7yxKY2KFih/VeGZpf6qERC1toBdvn1+V/TuvKdEfZZN7TEg S9XsiqRyw3T5cqytYUZ097F5Oug0Kb0g==
  • Openpgp: preference=signencrypt

For the finite type of numbers `0,...,n-1` there already is `Fin.t n` in
Coq's standard library. [1]
It is a classical example for a dependent inductive type.
However, this type can be quite tricky for beginners.

I have heard of implementations of machine integers (like unsigned 8),
but I currently don't have a link.


For general *finite types*, you can do something like

```
Require Import List.

Class finite (X:Type) :=
{
enum : list X;
enum_complete : forall (x:X), In x enum;
}.

Instance finite_unit : finite unit :=
{| enum := cons tt nil |}.
Proof. abstract now intros []; constructor. Defined.
```


[1] https://coq.inria.fr/distrib/current/stdlib/Coq.Vectors.Fin.html


Sincerely
Maximilian


On 18/03/2019 15:10,
fritjof AT uni-bremen.de
wrote:
> Hi,
>
> I want to create a finite data type, like *Unsinged 8*,
> which containes values from 0 to 2^8 -1.
> I came up with an idea like:
>
> Definition unsigned (max:Z) : Set :=
> { x : Z | x >= 0 /\ x < max}.
>
> Definition unsigned_8 := unsigned (2^8).
>
> But I'm not sure, if this is the right way.
>
> Does someone know if there is a better way to define
> finite types?
>
> --f.
>

Attachment: signature.asc
Description: OpenPGP digital signature




Archive powered by MHonArc 2.6.18.

Top of Page