coq-club AT inria.fr
Subject: The Coq mailing list
List archive
- From: Clément Pit-Claudel <cpitclaudel AT gmail.com>
- To: coq-club AT inria.fr
- Subject: Re: [Coq-Club] Proof automation for large terms?
- Date: Fri, 12 Feb 2021 15:25:09 -0500
- Authentication-results: mail2-smtp-roc.national.inria.fr; spf=None smtp.pra=cpitclaudel AT gmail.com; spf=Pass smtp.mailfrom=cpitclaudel AT gmail.com; spf=None smtp.helo=postmaster AT mail-qt1-f176.google.com
- Ironport-phdr: 9a23:7VgFgheIhP7jNW2v4Ar7aOjulGMj4u6mDksu8pMizoh2WeGdxcS/Zh7h7PlgxGXEQZ/co6odzbaP4ua+ACdRuN6oizMrSNR0TRgLiMEbzUQLIfWuLgnFFsPsdDEwB89YVVVorDmROElRH9viNRWJ+iXhpTEdFQ/iOgVrO+/7BpDdj9it1+C15pbffxhEiCCybL9vKBi6twTcutQZjYZmN6o61wfErGZPd+lK321jOEidnwz75se+/Z5j9zpftvc8/MNeUqv0Yro1Q6VAADspL2466svrtQLeTQSU/XsTTn8WkhtTDAfb6hzxQ4r8vTH7tup53ymaINH2QLUpUjms86tnVBnlgzoBOjUk8m/Yl9ZwgbpGrhy/qRxxw43abo+bO/VxfKzSYdwUSHFdXstSTSFNHp+wYoUNAucHIO1Wr5P9p1wLrRamGwSsAPnoyjpWiX/wwa01y/4vEQDa3AA5Ad8OtG7brMjoO6gMVeC+0a7Fwinbb/NXxTfy9IzIfQo8of6RQ71wddHcyUYqFwzfj1WQrZbpMC+S1uQIqmWW6fdrWu2zhWA9sQ5xviSvydk2ionPno8YyVTJ+Ct2zYs3KtO1SkF1bMKmHZZQtiyXK497T8E8T2xnuys3yL4LtIOmcSUE1ZgqxxDRZuKEfoWK4hztW+acLDFlj3xmYLKynwi+/VSkx+HmVcS50ExGojdEn9XQrHwByh7e58mfRvdj8UqtwzeC2x3J5u1aLk04ibDXJp09zrM2i5Edq17MHjXsl0XzlKKWdlsr+uyv6+n/Z7XpvJ6cN4tthgHnLqQih9WzAeolPgUMXmWX4+u81Lrk/U32RLVFkOc6nbXesJDfPcgbp6i5DBFJ0os79RqzEzOr3M4bkHQHNl5JZROKg5TzN13TIv31DO+zg1G2nzdqw/DGMKfhApLILnXbjLjhZbd961JAxwo3199f+o9bBa8FIP/oVU/xscbXDh49MwCu3+nnD9B92psEWW2TGq+ZLL/SsViQ6+0zJOmMfZYZtyr5K/g4/PHjlmQ5mF8Yfamxx5QbcnG4HvJ8I0WYe3XgmNkBEX1Z9jY5GeftkRiJVSNZT3e0RaM1oD8hW6y8CoKWbYQshbGHwBCDH4ETTWRPF1yBFT+8fJ2FR/wIYT+eL8tJnTkNVLznQIgkg0L9/DTmwqZqe7KHshYTsojugYAstr/j0Coq/DkxNPyzlmSETmV6hGQNHmZk06V2oEg7wVCGg/Eh365oUOdL7vYMaT8UcIbGxrUjWd/3UwPFONyOTQT+G4j0MXQKVts0huQ2TQN9FtGl1E6R2iOrB/oMi+XOCsVrrOTT2H/+I8s7wHHDhvEs
On 2/12/21 11:06 AM, Eddy Westbrook wrote:
> Fellow Coq clubbers,
>
> Does anyone have experience using proof automation and hint databases to
> prove theorems with large terms?
>
> We are working on building a tactic to generate refinement proofs for
> monadic terms. Choosing the proof rule to apply in almost every case is
> rote, and can be done with a simple pattern-match on the top-level form of
> the terms. However, we have found that the automation really slows down
> when the terms start to get large. After profiling the tactic, it seems
> that it is just the “simple apply” rules generated by Resolve hints that
> are taking the majority of the time. I assume this is just unification
> running over large terms?
How slow is slow? We had a lot of these issues in Fiat, and we basically
decided to be happy with derivations in the order of minutes.
One thing that helps is to shrink your terms as much as possible. This can
mean `set`-ing things into the context or `Define`-ing constants out of your
proofs (for example, we had dependent types that made many references to the
same `string`s; we got measurable speedups by moving these strings to
`Definition`s).
In some version of Coq, unifying a variable against itself is faster, so you
could try seeing if `set`ting your largest terms before applying your lemmas
is faster.
Do you get the same performance issues with `simple refine` as with simple
apply?
- [Coq-Club] Proof automation for large terms?, Eddy Westbrook, 02/12/2021
- Re: [Coq-Club] Proof automation for large terms?, Andrew Appel, 02/12/2021
- Re: [Coq-Club] Proof automation for large terms?, Talia Ringer, 02/12/2021
- Re: [Coq-Club] Proof automation for large terms?, Clément Pit-Claudel, 02/12/2021
- Re: [Coq-Club] Proof automation for large terms?, jonikelee AT gmail.com, 02/13/2021
- Re: [Coq-Club] Proof automation for large terms?, Andrew Appel, 02/12/2021
Archive powered by MHonArc 2.6.19+.