coq-club AT inria.fr
Subject: The Coq mailing list
List archive
Re: [Coq-Club] Experience with formalising projects with length indexed vector (Vector.t) and finite type (Fin.t)
Chronological Thread
- From: jtm <me AT jtm.cx>
- To: coq-club AT inria.fr
- Subject: Re: [Coq-Club] Experience with formalising projects with length indexed vector (Vector.t) and finite type (Fin.t)
- Date: Mon, 16 May 2022 11:08:06 -0400
- Authentication-results: mail2-smtp-roc.national.inria.fr; spf=None smtp.pra=me AT jtm.cx; spf=Pass smtp.mailfrom=me AT jtm.cx; spf=None smtp.helo=postmaster AT mail.jtm.cx
- Domainkey-signature: a=rsa-sha1; c=nofws; d=jtm.cx; h=message-id:subject :from:to:date:in-reply-to:references:content-type:mime-version :content-transfer-encoding; q=dns; s=dkim-2021-04-12; b=TDTcc46Z BqfZzqZ1vouCcdaSEmHk+73O+3D2O83QnoZs17h2uUUJx7TghJZu0kZRM1TKp5fn fUwi6EHYFD/WVZvnGOrS3j1tMa+LIMx+dQc/z+ZmAWpJbtPCVz4RTZW8/Cr1xEBQ ey5JsVj+nYPAEkcaiPIdGBU9GVEbVixUZnY=
- Ironport-data: A9a23:+n1J8KradXNT5Wqp36cbrFH5DGxeBmLtYhIvgKrLsJaIsI4StFCzt garIBnQO6uCNzb9Kox0bdy3pkpUuZTVzNdgSgRopHg9RXhH8+PIVI+TRqvSF3PLf5ebFCqLz O1HN4KedJhsJpP4jk3wWlQ0hSAkjclkfpKlVKicfHoZqTZMEE/Nszo68wICqtMu0IHR7z+l4 4uo+ZWCYQH9glaYD0pNg069gEM31BjNkGhA1rAOTagjUIj2yhH5pLpGTU2AByOQrrt8RoZWd M6fpF2NxV41yj92Yj+TfhkXRWVRKlLaFVDmZnO7wMFOiDAazsA5+v5T2Pbx9S67hh3R9+2dx umhurShalgxBYGUld0NSiFKPwgmbaFr6q/udC3XXcy7lyUqclPpyvRqSkMqOMsT6o6bA0kXr aBecmtdKEnZ1qTsmejTpupE3qzPKOHuMasdpnQmxiGx4fMOGs6eGPyStI4wMDEYq/oJFufQR cEgWz9vMhnpaS9VIHgmB8dr9AuvriKjKmMGwL6PnoI85HGWxwhs2pD2Id/Nc5qLQ99UlwCWv Ar7E3/RBxgbMJqd1T/D+WLEavLzcT3TSaFNDIaUrvNTkESr1EA6UE0aeEmriKzs4qKhYO6zO 3D46wJ38/VoqRL2FYKlN/GriCXb5UNNA7K8B8V/sVvXkvqKvW51E0BdFmYZAOHKovPaUtDDO rWhu9TyTRVrrLqOIZ523ubI9WnuUcT5wGlrWMPlcefmy4CzyG3LpkiTJuuP6Ybs5jA1cBmpq 9xwkAAwhq8IkekA3Lih8FbMjlqE/8aUFFBut1mMBD35s2uVgbJJgaT2uTA3Ct4ec+6koqWp5 SNsdzW2tbhVUsrVxURhvs1UQe7wup5pzwEwcXY0Q8B/qVxBClaofYdX+Dg6bENtOa45lczBP yfuVMI4zME7AUZGmoctONLsV5VzlPW/fTknP9iNBudzjlFKXFfv1ElTiYS4hQgBSWAgzvMyP 4m1a8GpASpIAKhr1mTkRfsYl7Q7n3hsyWTWTJH97hKmzbvHOSDJFOdUaATSY7Br9r6ArSXU7 81bZpmDxBhoWeHjZjXarNwIJlcQIHlnXZ378pQFduOKLgd8NnsmDvvdneEod4B/wfZXiuKO9 WHkAh1Uz1/2hHvmLwSWayk+Nu+yDccn8i42ZHV+M0yp1n4vZZeUwJ0eL5ZnL6M68OFDzOJvS 6hXcsqNNf1DVzDb9mlPdpL6toFjKEymiA/SbSqoZD8zI8xpSwDTo4a2ewLu8G8MEi/xvttn+ ++s0QbSQJwiQQV+DZ+LNq7ynwLp4iQQyLBoQk/FAthPY0G9ooFlJhv4guIzP8xRew7IwSGX1 lrODBpE9/PBpZQ5rIvAiaye9t77FuJ/GgxYA2yd5qbvbXvW+W+qwIlhVueUfGmACj+pqPT6O rlYn6PmLfkKvFdWqI4tQb9kwJU368bru7IHnB9vG2/GbgjzB75tSpVcMRKjakGQKn5lVQqKt oan/9BbPfOLJMajG055yM/JqAic/al8p9UQxa1dzIbGCOtf/qaCF05CV/VJoDIIN6N7aevJ3 s940PP7KGWDZt4CMMqDyCtEn4hJwrrsTI1/3qwn7ETXZsbHB72MjVEwysM73X1XV+hxDw==
- Ironport-hdrordr: A9a23:HxCNs6xUP0jcGqZ5EHC3KrPwKb1zdoMgy1knxilNoHtuA7Wlfq GV7ZAmPHrP4gr5N0tQ+uxoSJPsfZqxz/9ICMwqTNWftWrdyQ2VxeNZgrcKqgeIc0aTygce79 YET0EUMrPN5DZB7foSrDPIdOod/A==
- Ironport-phdr: A9a23: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
- Ironport-sdr: ctvTvahV+QY1KedO/oSSLf9EIHO11yZKB+YXpohVSIwf7wP73xgFMDf1TlJHQMvYDdCY4mxEqK jKsDQbou7tiFAw07AGmHid4lA4O4dhruCHAD08ge9b6vRwTWrJWvf5FblBrWQYllHGw67whuVJ q+xRcdiP6IZJpMp7mlFCfncSGlDrzUx7Q6czapUUHlC2MlBUt8+s/0tTvUaHzmoVayV+vTmZsF wcS8jNykxp+mFw+bryxAaw8XCIr8pxeM/4zAIyMPit/qwaGArQWqxg6yhcoJoqF+5YMjjdNYlr T9s6LyG6BjP1d49CaESpdmaq
On Sun, 2022-05-15 at 19:40 +0100, mukesh tiwari wrote:
> Hi everyone,
>
> Have you formalised some non-trivial project using vectors, and
> finite type [1]? If yes, then what was your experience? What did you
> like and what did you not like about it? Also, could you point me
> towards your project?
I don't have much experience working with [1], but in the couple
instances where I have, I found it very difficult to do dependent
pattern matching (i.e. `match x return y ...`). I found the following
definition to be much easier to work with:
Definition vector a n :=
{ xs : list a | length xs = n }.
I prefer this definition for a couple reasons, First, you can write
functions in terms of plain old lists, and then prove things about
their lengths later. Second, a lot of proofs regarding length can
be solved using `lia`. A big disadvantage is that some functions
regarding vectors need to be defined inside proof blocks to deal
with propositions regarding vector length.
An example of defining vector concatenation:
Definition vector_append : forall a m n,
vector a m -> vector a n -> vector a (m + n).
Proof.
intros a m n [xs P] [ys Q].
exists (xs ++ ys).
rewrite List.app_length.
subst. reflexivity.
Defined.
Best,
jtm
> [1] https://coq.inria.fr/library/Coq.Vectors.VectorDef.html
- [Coq-Club] Experience with formalising projects with length indexed vector (Vector.t) and finite type (Fin.t), mukesh tiwari, 05/15/2022
- Re: [Coq-Club] Experience with formalising projects with length indexed vector (Vector.t) and finite type (Fin.t), Dominique Larchey-Wendling, 05/16/2022
- Re: [Coq-Club] Experience with formalising projects with length indexed vector (Vector.t) and finite type (Fin.t), jtm, 05/16/2022
- Re: [Coq-Club] Experience with formalising projects with length indexed vector (Vector.t) and finite type (Fin.t), Qinshi Wang, 05/17/2022
- Re: [Coq-Club] Experience with formalising projects with length indexed vector (Vector.t) and finite type (Fin.t), Dominique Larchey-Wendling, 05/17/2022
- Re: [Coq-Club] Experience with formalising projects with length indexed vector (Vector.t) and finite type (Fin.t), D. Ben Knoble, 05/16/2022
- <Possible follow-up(s)>
- Re: [Coq-Club] Experience with formalising projects with length indexed vector (Vector.t) and finite type (Fin.t), Weijer, W. de (Wessel), 05/17/2022
Archive powered by MHonArc 2.6.19+.