Skip to Content.
Sympa Menu

coq-club - Re: [Coq-Club] Interesting uses of Second order theorems in Coq proofs

coq-club AT inria.fr

Subject: The Coq mailing list

List archive

Re: [Coq-Club] Interesting uses of Second order theorems in Coq proofs


Chronological Thread 
  • From: Qinshi Wang <qinshiw AT cs.princeton.edu>
  • To: coq-club AT inria.fr
  • Subject: Re: [Coq-Club] Interesting uses of Second order theorems in Coq proofs
  • Date: Thu, 9 Jun 2022 14:03:41 -0400
  • Authentication-results: mail2-smtp-roc.national.inria.fr; spf=None smtp.pra=qinshiw AT cs.princeton.edu; spf=Pass smtp.mailfrom=qinshiw AT cs.princeton.edu; spf=Pass smtp.helo=postmaster AT violeteyes.cs.princeton.edu
  • Ironport-data: A9a23:6VJcaq2DdHLxJXNiJfbD5Qx3kn2cJEfYwER7XKvMYLTBsI5bpzIFy GMYDGiFP/jcZDD8e410Otiy9UpSu5DXmoQxTlY93Hw8FHgiRejtVY3IdB+oV8+xBpSeFxw/t 512hv3odp1coqr0/0/1WlTZhSAgk/nOHNIQMcacUsxLbVYMpBwJ1FQywobVvqYy2YLjW13V6 YupyyHiEAbNNwBcYjp8B52r80sHUMTa4Fv0aXRjDRzjlAa2e0g9VPrzF4npR5fLatU88tqBe gr25OrRElU1UPsaIojNfr7TKiXmS1NJVOSEoiI+t6OK2nCuqsGuu0o2HKJ0VKtZt9mGt91R4 /FyqZOxdSQsG+7oh9xMejkGAT4raMWq+JefSZS+mdKSyEnLb3b9zu4oB1pwJZcZ/O16HWZIs /EUNVjhbDja3bLwmevhDLA32IJ+caEHP6tH0p1k5SjYC+0mQI/rSL6M/cVZ2jw9msdIW/vSe qL1bBIzNE6QM0UUYz/7DroerraFhlzadgd4pUiujrdnvEqJ7yNuhe2F3N39J4zbHp0I9qqCn UrN+H28CRUHPvSE2D+d+zStgPXOlGX1Quov+KaQ6P9thFCPy30eE1sdTh2ju/i/gUOiXNQZJ kAJksYzkUQs3EGLZf3CQxK5nF2Bm104ROIBOs1k+h7Yn8I4/D2lLmQDSzdAbvkvu8k3WSEm2 ze1oj/5OdB8mOHNEi/Grt94uRv3ZnRLcDNbDcMRZVJdi+QPtr3fmf4mojxLKLS0iNb4BTb2q 9xhhHBu2ulP5SLn/4O24hjljii3q4mhc+LYzhvWWWao8g5oaZXjbJfu8ULa6/1NMIGfCFSNo RDoevRyDshSXPlhdwTUHo3h+Y1FAN7fblXhbaZHRcVJythU0yfLkXpsyD9/Plx1Fc0PZCXkZ kTe0SsIusIPYyLxNfEpP97uYyjP8UQGPYi5PhwzRoYTCqWdiCfdlM2TTRfLgDyyyiDAb4llY cvznTmQ4YYyVPQ2l2LrLwvs+acxxyY1yH/UQ9jmyRW53KCFZWKEIYrpw3PTBt3VGJis+V2Pm /4Gbpvi40gPAYXWP3iImbP/2HhQchDX87iq9J0HHgNCSyI6cFwc5wj5kOh4IdE/wvQK/goKl 1nkMnJlJJPErSWvAW23hrpLMdsDhL5z8iA2OzICJ1Gt1yRxaIqj9v5BJZAsO6E99epowOJzS b8Id9jZWqZDTTHO+jI8a5jhrdE+KEjz217WZyf1MiIie5NARhDS/o62dwTiwyACEy6ruJZsu LanzA7aHcIOSl06XsbbYf6i1X2run0ZlL4gVkfEOIANKk73tpBwKir6g+MwJYcBJQianmmW0 AOfABE5o+jRotJprIWR2/zc94rwSrlwBEtXGWXf/I2aDyiC8zrx25JEXcaJYSvZBTH996iVb OlIy+3xba8cl1FQvosgS7tmwP5s59broLMGnA1oEG+RMAa1C7RkL2WLzMRU8KZWgKdDuA29V 16I/J9XNajQYJHpF1sYJQwEaOWf1KxIxmWKs6hteEiqtjVq+LenUFlJO0jegSNQG7J5LYc5z Lpzo8UR8QG+1kInP4rUlCxS7GjQfHUMX7996cMEAYjvhxYm21xZJ5fHTDfs4ZeEZslLNA8nL iLN3PjOgLFVx0zjdXsvFCWRgbYF28hW4B0ankUfI1mpm8begq5l1RJcxj07UwBJw0gVyOl0I GVqaxV4KKjmE+2EXySfs71A2j2tBSF1PmTvylwNmXHUXkSzEGfWanUnOOCG8Vwe9SRRciUzE HSw1jP+STizFC3u9nJaZKKng6WLoR9NGsnqk9vhB96EGZI3fT3jxKKieALkbjP5VNgpihSvS fZCpY5NhG6SCcLUi6YgTZGA1LIbRQyDIipPTewJEGbl243DUGna5AVi4Hxdti+AyzImPKN45 wFTyhpzaimD
  • Ironport-hdrordr: A9a23:4y3ti6+JwaiO/1lj2Xluk+D4I+orL9Y04lQ7vn2ZKCYlC/Bw+P re/sjzuSWE6wr5HUtBpTniAse9qBHnhPpICOAqVN/INjUO+lHIEGgI1/qE/9SPIVyZygef78 pdWpk7Jtn5DV0/q9377gm+G9Nl5NWc6qiniaP/4h5WPGRXgm1bgzuRwzz1LnFL
  • Ironport-phdr: A9a23:HOPLORAzkcXX5qvcBFc4UyQUMUkY04WdBeb1wqQuh78GSKm/5ZOqZ BWZua82ygaRDM6CsqkMotGVmpioYXYH75eFvSJKW713fDhBt/8rmRc9CtWOE0zxIa2iRSU7G MNfSA0tpCnjYgBaF8nkelLdvGC54yIMFRXjLwp1Ifn+FpLPg8it2O2+5ZPebx9ViDahZb5+I wi6oRjfu8ILnYZsN6E9xwfTrHBVYepW32RoJVySnxb4+Mi9+YNo/jpTtfw86cNOSL32cKskQ 7NWCjQmKH0169bwtRbfVwuP52ATXXsQnxFVHgXK9hD6XpP2sivnqupw3TSRMMPqQbwoXzmp8 qFmQwLqhigaLT406G7YisJyg6xbrhyvpAFxzZDIb4yOLvVyYrnQcMkGSWZdXMtcUTFKDIOmb 4sICuoMJf1Wr4j7p1sVrRu+BBSnC+P1xT9OiX/9wKo30/0gEQHAxwwgH9MOsXrPodrpL6ceS /i1zLPJzTXFc/xZxyv96I/Ochw7v/6DQK9wfNPXxEIyGAzLkk+eppb5PzOJyOsNqW6b4vJvW ++xl2IqrwF/rySgyMoihITEmo0bx1PE+yll3os5O8G0RU14bNOmDpZdqy+UOoR3T88+X21mt zs2x6MbtZO6eiUB1ZcpxwbHZvCabYSF4QjvWPuMLTtmnn5pZbyyiheo/UWgyuDwTte43EpOo yZfkdTBtmoB2wHS58WGUPdw8Vmt1DCS3A7J8O5EO1o7la/DJp4h3LEwkp0TvFzdHi/3n0X2i LGZdlk69emo9evnea/qqYOHN4NukgH+KKUumsqjDusmLggOWG6b9f6i27L+4E31WLRKjvson anFqJ3WONoXq62jDwNIz4ov9QyzAyqo3dkZh3UKLFJIdAqCj4fzOlHOJP74De24g1SpiDpr3 vHGPrv6ApXNL3jCnqzscqpm60JG0Aoz19Ff55RIBb4fPPLzXUnxuMbGARAkLgy42+DnB85l2 YMERW2PGrOZML/VsVKQ++4jO/OMa5MNuDbhN/gl4ObjgmM+mV8EZKWmwZ8XaG2jEfl9OEWYY X/sgs8bHmsQvwo+SvbqiFyYXjJJaXayRfF02jZuA4W/SIzHW4qFgbqb3S79EIcFSHpBDwW1E HHzd4TMZP4KZ2rGO85niTwFSpCqUMk5zxCovwLmzLwhI+bJrH5L/an/3cR4srWA3So58iZ5W pz1OwClSmh1mjlNXDoqxOVlpkc7zF6f0K9+ivgeFNpJ5voPXB1pfYXEwblcDNb/EhnEYs/PU EyvF8ynByoxT80ZyMRIe1x8Hd6vkhfFmSemHuxdjKSFUaQ96bmUxH3tP4B4wnfC2rMmigw/Q 81UNWy5rqVksRDJBojCnlmekeCneblPlDXV+jK7xHGV9FpdTBY2UajBWiUHYVDKqN3i+k7YZ 6GvDrAqLgZQxNXEIbAMcsfoi15LWPDlftnSfgpdgk+WAhCFjvOJZYvuISAG2TnFTVIDmEYV9 GqHMg43AmGgpXjfBXpgDwCnZUSk6uR4pH6hKy18hwiXc01s0aa08R8JlLSdTf0UxLcNpCYmr X19Al+829vcD9fIqRBmee1QZtY04VEP0my81UQ1J52mNKBjmXYVaEJvpULo3BhrDYMGnMQ37 TsrwAd0NaOEwQZZbTrLuPK4crbTK2T04FWuc/uPgAGYiY/MvP5UtrJl9gaG3knhDEcp/nR53 sMA1nKd4s+PFw8OSdfrVU1x8RFmprbcay175oXO1HQqP7Pn112Kk98vGuYhzQ6tOtlFN6bRX hbzFdYaBteGI/dsg0KoaBkJIOdUsqM4Ion1EpnOkL7uJ+tmkD+82C5e4YZm0kOT3yFnDPbS3 pAOzu2f2E2KWyq23zLD+ojn3ItDYz8VBG+2zyPpUZVQaqNFdoEOEW6yIsezy72SnrbVUmVDv B6mDlICgoqyfAaKKkb61ktW3FgWpnqunW25ySZ1mncntPjX0CvLyuXkPB0JXwwDDHBji0zsI JechMtcRFKpaQMkiByjo0v22uBXqb9+IG/aXUpTN3Gsfyc7C/H27+HcJZMSoJoz1EcfGPyxe 1WbVqLwr1MB3iXvEnEfjDE3eje2u4noyhlziWaTNnF2/x+7MYl7wRbS4sCZROYEh2BWAnAh0 3+OXQb6YoT6mLfc343Oue2/SW+7A5hacC2xiJiFqDP+/2phRxu2g/G0nNTjVwk8yy7ykddwB kCq5F7xZJfm06OiPKdpZE5tURXl6sxhGoBhuoArwokK2H4Ri4mS+zwKnXq5YrA5keruKWEAQ zIG2Yuf+Qnjw01iMVqC3MThTHSbycZ9YN/8b28LkHFYjYgCGOKf67pKmjFwq1yzoFfKYPRzq TwazOMn9H8Qh+xa8Bpo1CiWBaoeWFVJJSG53Qrd9Miw9e8EAQTnOaj1zkd1msqtSa2Psh0JE misYY8sRGd1/o1+KA6eiSejrNi9Ip+JNoxV7lrOyHKix6BULpk1i/YH1zJ9OGT2sGEizag2g QEmy5i+uMLvx3xFxKuiGVYYMzT0Y5lW4TTxleNEmc3Q2YmzH5JnEzFNXZ3yTPvuHihA/fjgM g+PFnU7pBL5UfLHGhSD7U59s3/VO46qMHWaOHQIwM4kTwLbPFZehgsZQDI82JM1C0imydfgf 0Fw+j0Kgzyw4kIWmqQxbkO5CzyB4lr1Ij4vAICSNh9X8h1P6w/OPMqS4/gyVyBU85u9rRCcf 2yWYwMbaANBEkeABl3lIvyv/YyZqbjeX7PkaaKVP/PT9L87Nb/A35+k34p48izZM8yOOiMnF Pgnwg9ZWns/Hc3FmjIJQihRliTXbsfdqg3vn08/5s257vnvXxrioIWVDL4He8xu/Qu2gLirP PXWnDx4Lz1VypQKg3LE1fJMuTxawzErbDSrHbka4GTVS7nMn6ZMExMBQz1yM89F868t0xILM tWdksn00LV1kvkzTVpJSBay/6PhLdxPKGa7OlTdAU+NP7nTPjzHzfb8ZqakQKFRhuFZ5FWg/ CyWGEj5MnGfhiHkAlqxZPpUgnjRb3k88MmtNwxgAm/5QJf6Zw2nZZVp2CYuz+R8jzuPPGoYe 1CUlmtGtfuI9yJeifhjHGoH43Z4f7Hsc8ex8ejfLpsKvOpmGWJ/jKRC+nU8wLZJ6ycCSfBoy nK6RjFGqErgivOOzDFqTB1I7DtHmdDS1Xg=
  • Ironport-sdr: a3Rxw06fs2RyWVFOtEMZEG/O8VFNAWSxD2LnhBAh36asxkmk8154/Rb7pksE7gJArpl1fOWrwm autT3ckuNHJmO7lOVppnOu/1HZVMVLgvMRLEly00wE+IEsFC40DPuuv7Q2F/N2Ml1juGY0CNme LoDBpOmZ3+w6oYU0WOCI0cRCJZx/h1gq1CqXK7VXNUjp3fzxIUceVDoLKtkBb32kg5PmKRAWBY 1g0ED+LjsHyEP/WrJ8W9yfW72AqbCakYIcISwD13WTcJVRwpYwTjyIQFyxbPGJkNRZ7mp3Hwz/ lXsQ7rGvABZax4nC5JCzgF9k

I know a class of second-order properties more general than induction principles. There is a kind of types called (generic) container types. A container type is (Container : Type -> Type) that the type parameter is only used in strictly positive positions. For example, lists, trees and association lists (with the index type fixed and the content type as parameter) are container types. A more sophisticated example is that we can define a generic value type to represent values of programming languages, including basic values, lists and structs. The type of basic value can be a parameter, so the value type is a container type.

In order to define relations between containers, we define a Forall relation whose type is (Forall : forall A B (P : A -> B -> Prop), Container A -> Container B -> Prop). Forall is defined as the two containers have the same structure and each pair of corresponding elements satisfies P. For example, Coq.Lists.List.Forall2 is the Forall relation for lists. For each particular relation on interest, we parametrize Forall with a particular P. In order to prove lemmas about these relations, we prove a bunch of general second-order lemmas, for example,
Forall2_impl:
  forall {A B : Type} (P Q : A -> B -> Prop),
  (forall (a : A) (b : B), P a b -> Q a b) ->
  forall (l1 : list A) (l2 : list B), Forall2 P l1 l2 -> Forall2 Q l1 l2

Forall2_refl :
  forall {A : Type} (f : A -> A -> Prop),
  (forall x : A, f x x) -> forall v : list A, Forall2 f v v

Forall2_sym :
  forall {A B : Type} (f : A -> B -> Prop) (g : B -> A -> Prop),
  (forall (a : A) (b : B), f a b -> g b a) ->
  forall (v1 : list A) (v2 : list B), Forall2 f v1 v2 -> Forall2 g v2 v1

Forall2_trans :
  forall {A B C : Type} (f : A -> B -> Prop) (g : B -> C -> Prop) (h : A -> C -> Prop),
  rel_trans f g h ->
  forall (v1 : list A) (v2 : list B) (v3 : list C),
  Forall2 f v1 v2 -> Forall2 g v2 v3 -> Forall2 h v1 v3

Using these general lemmas, the task of proving lemmas about Forall relations is reduced to proving lemmas about pointwise relations.

Thanks,
Qinshi

On Thu, Jun 9, 2022 at 12:14 AM kirang <kirang AT comp.nus.edu.sg> wrote:
Hi Coq Club,

For various reasons, I'm currently doing a light survey of examples of
interesting uses of second order properties/lemmas in Coq proof scripts.

Currently, the main examples I've found in the wild have mostly been
using various induction principles for custom datatypes and the such
(found through searching Github/using Coq's search mechanism).

I've seemingly exhausted searching through Github for now and so I
thought I might reach out to the magnanimous wisdom and experience of
the Coq club community in this search.

Do you have any interesting examples of other classes of second order
properties (i.e other than induction principles) you have seen/used in
your own proofs?


Thanks,
Kiran.



Archive powered by MHonArc 2.6.19+.

Top of Page