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: Lawrence Dunn <dunnla AT seas.upenn.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 15:19:45 -0400
  • Authentication-results: mail3-smtp-sop.national.inria.fr; spf=None smtp.pra=dunnla AT seas.upenn.edu; spf=Pass smtp.mailfrom=dunnla AT seas.upenn.edu; spf=None smtp.helo=postmaster AT mail-vs1-f44.google.com
  • Ironport-data: A9a23:5chOnaB3RmnaRxVW/x3lw5YqxClBgxIJ4kV8jS/XYbTApGsh3zIGy 2UZXW+PaP6PNjGkedBzbN6zoBxQ75LRyd9qOVdlrnsFo1Bi+ZOUX4zBRqvTF3rPdZObFBoPA +E2MISowBUcFyeEzvuVGuG96yE6j8lkf5KkYAL+EnkZqTRMFWFw0HqPp8Zj2tQy2YbhU1vW0 T/Pi5S31GGNi2Yc3l08sPrrRCNH5JwebxtF1rCWTakjUG72zxH5PrpHTU2CByeQrr1vIwKPb 72rIIdVUY/u10xF5tuNyt4Xe6CRK1LYFVDmZnF+A8BOjvXez8A/+v5TCRYSVatYoz6prupvy dNWjLWpQgM0A7KTse0zCTANRkmSPYUekFPGCX22sMjW0VafNnWwn7NhC0Y5OYBe8eFyaY1M3 aZAeXZdM1bZ3r3wnO7TpupE3qzPKOHnIYUZvnhI1jzQFrA7WZ3FRePH6cIwMDIY354VQ6yBO pdxhTxHbQn/JDBlZQwtD5cAteiqu0DxfzpmkQfAzUYwyzGLkFYZPKLWGNHSY5mBQdhftl2Jo 3rPuWX/GBATctKFoQdp6Vqpj+7L2D3gAcccSOH++fltj1megGcUDXX6SGdXv9Gyqn+ERdNZM HU94yEqsJUtq2WiYIPUCkjQTGG/gjYQXN9ZEusf4Q6Ly7bJ7wvxOoTiZm4RADDBnJ9mLQHGx mNljPuyWmMy6Oz9pWa1s+bL/WnraED5OEdbPXdcJTbp9eUPt23as/4iZtNqEarwkMasXD+sn 3aFqy8xg7hVhskOv0lawbwlq2LwznQqZlRtjukyYo5Dxl0jDGJCT9LzgWU3Fd4acO6koqCp5 RDoYfS24uEUFo2qnyeQWugLF7zBz6/bbWGD2AU3RMd+rGzFF5ufkWZ4sGEWyKBBYpZsRNMVS BK7Vf55v8MPZiTyM8ebnaroW5x6nMAM6ugJptiNNoYUCnSAXACA+y5qaCatM5PFwSARfVUEE c7DK66EVC5EYYw+lWbeb7pDjNcDm39mrUuOFMiT50n2itK2OS/FIZ9bagfmRr5it8us/l6Fm +uzwuPQlH2zpsWlMneJmWPSRHhWRUUG6Wfe8pYHLL7belA3SAnMyZb5mNscRmCspIwN/s+gw 513chYwJIPXiSKVJAOURGpkbb+zD59zoWhiYX43MF+znWU7bICpqqoTasJvL7Ug8eViy99yT uUEJpzQWqkTFmyf9mRPd4T5oaxjaA+v21CEMR2lVz5jLZRucArEp43/dQz1+ShSVSe67JNso 7Cp2g7Bb4AEQgBuUJTfZP61lg/jpnUUg6RvR0bOJJ9edFi1qNpmLCn4j/kWJcAQKEialmPHi 1rOWRpB/LvDuY449tXNlJuolYbxHrssBFdeEkna8a2ya3vQ8F2j9okcAuyGSjbQCTHv86K4a OQJlPzxPaFVnFtOtIYgQb9nwbhkvInqrr5eixp/RTDFMwjtBbRnLX2Lm8JIs/QVlLNevAK3X GOJ+8VbaerVYpK7SAZJKVp3dPmH2NEVhiLWsaY/LnL86XIl57GAS0hTY0SBhXAPNrdzK495k +4ttNRMsF66gxsud8id12VaqzjKIXsHXKEq8JodBdaz2AYsz1hDZ73aCzP3sM7TMYQSahFyL 2/GnrfGipRd2lHGLyg5G0/L0LcPnp8Joh1LkAIPKlnhdgApXRPrMMC9MAjbTzi5Cj1C2uN3f 3Zwbgh7efnI8DBvi8xOGWurHmmtwfFfFlPZkzM0eK/xFiFElVAh6EUmNO+Wul0B/mRaODVX4 dl0DU77BC3ycpiZMjQaACZYRj+KcTC13hbPkdvhAtyIGZ98bDb46kNriazktDO/af4MaIb7S SWGMQq+hWAX9cLdnkHjN7Sn6A==
  • Ironport-hdrordr: A9a23:Cn7XgK7evGOM6rGmNwPXwPHXdLJyesId70hD6qkRc20tTiX8ra qTdZsgpHrJYVoqKRMdcJW7Scq9qBDnlKKdg7NhWYtKNTOO0ACVxcNZjbcKqAeQfBEWmNQts5 uIsJITNDQzNzVHZArBjzVQ2uxP/OW6
  • Ironport-phdr: A9a23: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
  • Ironport-sdr: zv9+MY6hMt+h6Ag7acsCJj43b7c5ar1LBqhyaLuv/xpuEp6B4cW4cNtWni+VT6nZhtHgXNG35o 5aa0pyTRi/09zn1Z3INvZGLSV8UawiDms3EwjzxUXiVmUgX3vCi5xKIalKU4a033CfzWbNWVpX LR7r6vEJGM3qiK4uahfO/V8XnPMYYDVslvbehL4LlpA2SdfwMF9WELHEPE/zwmapTsnwQpZb1S WKdbrghapZRJVwZMk3UEwXWIU0dFkVbNcnrBWhCB8xjbmwJKIafx/yLbLXObVkp/KwYBR64De+ 2uhpptOuYUpzXAnuZNgPVFZK

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
https://github.com/dunnl/tealeaves/blob/dcff3c3d0f8c5982d2996f77e932d12cedcf2f0e/Tealeaves/Classes/DecoratedTraversableMonad.v#L958
and the relatively high-level theorems like
https://github.com/dunnl/tealeaves/blob/dcff3c3d0f8c5982d2996f77e932d12cedcf2f0e/LN/Theory.v#L871
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