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: Castéran Pierre <pierre.casteran AT gmail.com>
  • To: coq-club AT inria.fr
  • Subject: Re: [Coq-Club] Interesting uses of Second order theorems in Coq proofs
  • Date: Thu, 9 Jun 2022 22:48:43 +0200
  • Authentication-results: mail2-smtp-roc.national.inria.fr; spf=None smtp.pra=pierre.casteran AT gmail.com; spf=Pass smtp.mailfrom=pierre.casteran AT gmail.com; spf=None smtp.helo=postmaster AT mail-wm1-f49.google.com
  • Ironport-data: A9a23:1rhKea+mM5pl5EM/QkarDrUDvXiTJUtcMsCJ2f8bNWPcYEJGY0x3z 2MeWTiBOPmMN2H2L4hza4Sz9EMO7MXXyYNmSAo9+CxEQiMRo6IpJ/zJdxaqZ3v6wu7rFR88s Z1GMrEsCOhuExcwcz/0auCJQUFUjP3OHvymYAL9EngZqTVMEU/Nsjo+3b9g6mJUqYLhWVnV5 4uj+5e31GKNglaYDEpEs8pvlzs05JweiBtA1rDpTa0jUPf2zhH5PbpHTU2DByOQrrp8QoZWc 93+IISRpQs1yfuC5uSNyd4XemVSKlLb0JPnZnB+A8BOiTAazsA+PzpS2Pc0MS9qZzu1c99Zz /hurriVZwoVYorWwbQwTgBTQg1kBPgTkFPHCSDXXc27ykTHdz7zxqwrAh1ne4If/elzDCdF8 vlwxDIlNEjSwbLrhuvhGq8w16zPL+GzVG8bkmlhwCvDALAtSIvfTr/D4/dX2T4xgoZFGvO2i 88xNWI1PUSfOkMn1lE/Vs4lnvyMvFXDaRZGjXzWrvsXxGTP9VkkuFTqGIONJobiqd9utk2fv yfN+3nzKgoLMcSWjzuD6HOlwOHV9R4XQ6oXHby8s+Fv2Ridmj1VBxoRWl+25/K+jyZSRu6zN WQT1wk1iY0c+XD3acOkDzCluXXVkgQlDo84//IB1CmBza/d4gC8D2cCTyJcZNFOiCPQbWx6v rNut4O5bQGDoIF5WlrGqejJ9WLa1Tw9aD5dNXVdHGPp9vG6+Nlr5i8jWOqPB0JcszEYMTT5w jTPsy1nwrtP3IgE0KK0+V2BiDWpznQocuLXzlWINo5GxlkhDGJAW2BOwQaDhRqnBNjAJmRtR FBex6CjABkmVPlhbhClTuQXB62O7P2YKjDailMHN8B/qmjyqi//JtgPv20WyKJV3iAsKW+Bj Kj76VM52XOvFCbCgVJfON7tUZtyk8AM6/y8BqmFN7KinaSdhCfepH00DaJh92/ql0conMkC1 WSzIK6R4YIhIf0/llKeHr9DuZdyn3xW7T6NGPjTkkv/uZLDNSb9YepUazOmM7FphIva+lm92 4gEbKOilU4PONASlwGNrub/23hRfSZlbX03wuQLHtO+zv1OQTtxUa+JmelwK+SIXc19z4/1w 510YWcAoHKXuJENAVzihqlLZOy9UJBhg2g8OCBwb1+k12JyM4mq5aYbMZAweOB/puBkyPd1S dgDetmBUqwfEGSZp2xFYMmvtpFmeTSqmRmKYHiobT05SJhqGF7E99riSQ3w+XRcFSGwr8Y// +at21qDE5oOTghvFujMb/erww/jtHQRgrMgUE7BI90Vc0LpqdA4Jyv0h/4xAscNNRSTnmvAh 1jKWU8V/LCfrZU0/d/FgbG/g72oS+YuTFBHG2T77KqtMXaI82emx7hGWrnacD3YUlTy5/z+N +hYyvfLMMoHkkxPhIxyHus51qk5/dbu++ZXwwk4TnXGa1OnVuFpLnWch5Ids6RMwvpGvFLzV B7evNZdPrqNNYXuF1tIfFgpaeGK1Pc1nDjO7KRqfB+runcvpLfXA19POxSsiTBGKOcnOo0Sx +p86tUd7Bayi0Z3P9va3DpY8X+Aci4JX6k97MpIBYbqjk80zwgHb8CNTCDx556LZpNHNUxze m2Yg6/LhrJ9wEvecipsSSKcg7IF3Zle6gpXyFIiJkiSnoaXjPEA2hAMoy88SR5Yz0ka3u9+U oSx25aZ+UlTE/ZUaMl/s6SEHghAAFiG/xW0xQdY0mLeSEasWyrGK2hV1SNhOqwG2zo0Q9SZ1 OjwJKXZvfLCc8T43y90UklgwxAmZcIk7RXMwahLAOzcd6TXolPZbmuGam8Bqh+hCsQ07KECS S+G484oAZDG2eUsT2HXxmVUOXn8iPxJGYCafcxcwQ==
  • Ironport-hdrordr: A9a23:YSEMdqMkInnN0MBcTvajsMiBIKoaSvp037BL7TESdfUxSKalfq +V7ZMmPHPP+VUssTQb6Ki90de7MAjhHO9OkOws1N6ZNWGM2FdAbrsSi7cKqweAJ8SUzJ846U 4PSdkGNDQyNzRHZATBjTVQ3+xO/DD+ytHTuQ4W9RlQcT0=
  • Ironport-phdr: A9a23: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 E1gcjzDQuAJ51OPXW9ugQ7Y/5BIHKwFJZA=
  • Ironport-sdr: h1geiziAAg6gkxxy8ZFNdENomZ3uA+b5jx+tUQtK3BYMQfLClHiGSwubNcggTcAQus4D6qvRhw rCI1/r7GEmRtmyGzC9izTftmjxeXD9MYb/nHEIXpo34mfSdDzioRUzbOjoQeHiojX4QbJjZ6bA cD7piHhXloAP1kAjaCnTl7kthhiNGkmS0OdUkHNVfANU6qypCdUauj5eooU/mBNNiz1elLHe2k nH/WjNnRYO1mO1Iy0ssPBKBNz0fRMOMpxc2JjPdJO+H/y4iaheW0O0h+o710TENZFzoty08Lpv C2dR9kz4FhFMbicA/hngYXQ3

Hi,

Maybe  the proof that the Ackermann function is not primitive recursive ?
It is based on an induction on any PR function on any arity, using Russel O’Connor’s formalization from  his Goedel contrib.

There is a version in https://github.com/coq-community/hydra-battles

Pierre



Le 9 juin 2022 à 21:19, Lawrence Dunn <dunnla AT seas.upenn.edu> a écrit :

If it is not too far afield, a class of examples comes from considering operations that are polymorphic over a class of functors, second-order in the same sense as in this paper: https://arxiv.org/abs/1402.1699. This is one approach to datatype-generic programming (and proving). This is actually related to the example involving finitary containers, aka traversable functors, which may be characterized entirely by law-abiding 'traverse' operation whose type is polymorphic over a choice of applicative functor, as discussed in the paper above. The type of a traversal over a container datatype T (list, tree, etc)  is `traverse : forall (Applicative F) (A B : Type), (A -> F B) -> T A -> F (T B).`

At first the traverse operation looks like "just" an elimination principle for defining operations on T, used this way in functional programming. But it can also be used in proofs about finitary containers, so more like an induction principle. In fact the example Forall given earlier is just a special case defined by traversing with the binary relation, where one views the "powerset" functor `(X \mapsto (X -> Prop))` as applicative. The properties of Forall can be derived from the laws of traversals. So a law-abiding traversal would seem to meet your criteria as a second-order property used in proofs which is not just induction.

A real-world example in Coq would be found in my library Tealeaves (https://github.com/dunnl/tealeaves), intended to be used for datatype-generic reasoning about syntax. One quantifies over a choice of traversable monad and can prove lemmas such as "two simultaneous substitutions in 't' are equal just if they are equal pointwise on the variables that occur in 't'," using a law-abiding second-order operation which generalizes traverse. See e.g. the lemmas derived at
and the relatively high-level theorems like
which use this method of proof.

This isn't fully written up yet but I hope it makes some sense.

Best,
Lawrence

On Thu, Jun 9, 2022 at 2:45 PM roux cody <cody.roux AT gmail.com> wrote:
Here's a classic example, involving the proof of normalization of a typed lambda calculus from https://softwarefoundations.cis.upenn.edu/plf-current/Norm.html

Fixpoint R (T:ty) (t:tm) : Prop :=
  empty t \in T halts t
  (match T with
   | <{ Bool }>True
   | <{ T1 T2 }> ⇒ ( s, R T1 s R T2 <{t s}> )
   end).

Obviously this doesn't *quantify* on a relation, though any similar proof for System F must crucially use it, see e.g. here: https://github.com/coq-community/autosubst/blob/master/examples/ssr/SystemF_CBV.v

You'll find many variations on this theme under the name of "Logical Relations", e.g. in CertiKOS here: https://github.com/CertiKOS/coqrel

Hope this helps,
Cody

On Thu, Jun 9, 2022 at 2:22 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