Skip to Content.
Sympa Menu

coq-club - RE: [Coq-Club] Moving away from putting hints in the core hintdb

coq-club AT inria.fr

Subject: The Coq mailing list

List archive

RE: [Coq-Club] Moving away from putting hints in the core hintdb


Chronological Thread 
  • From: "Soegtrop, Michael" <michael.soegtrop AT intel.com>
  • To: "coq-club AT inria.fr" <coq-club AT inria.fr>
  • Subject: RE: [Coq-Club] Moving away from putting hints in the core hintdb
  • Date: Fri, 16 Nov 2018 09:18:10 +0000
  • Accept-language: de-DE, en-US
  • Authentication-results: mail3-smtp-sop.national.inria.fr; spf=None smtp.pra=michael.soegtrop AT intel.com; spf=Pass smtp.mailfrom=michael.soegtrop AT intel.com; spf=None smtp.helo=postmaster AT mga04.intel.com
  • Dlp-product: dlpe-windows
  • Dlp-reaction: no-action
  • Dlp-version: 11.0.400.15
  • Ironport-phdr: 9a23:nZs7kRChQLAWkiwhS9WuUyQJP3N1i/DPJgcQr6AfoPdwSPT/o8bcNUDSrc9gkEXOFd2Cra4c26yO6+jJYi8p2d65qncMcZhBBVcuqP49uEgeOvODElDxN/XwbiY3T4xoXV5h+GynYwAOQJ6tL1LdrWev4jEMBx7xKRR6JvjvGo7Vks+7y/2+94fcbglUhzexe69+IAmrpgjNq8cahpdvJLwswRXTuHtIfOpWxWJsJV2Nmhv3+9m98p1+/SlOovwt78FPX7n0cKQ+VrxYES8pM3sp683xtBnMVhWA630BWWgLiBVIAgzF7BbnXpfttybxq+Rw1DWGMcDwULs5Xymp4aV2Rx/ykCoJNyA3/nzLisJ+j6xbrhCupx1jzIHbe4yaLuZyc6fHcN8GWWZMXMBcXDFBDIOmaIsPCvIMMehFoYn6uVQOoge+BROrBOP30jNDm3j43awm3OQhCw7JwgggE9wTu3nTqdX1NbsdUeCvw6bWyTXPdehW2TDj54jHbhAhu/aMXaprfMrQz0kvCx3KjlGKpYP5ODOV0/0Avm6G5ORuUuKvjnQoqwB3ojW3x8csjJXJiZwRylze6Cp23oA4LsC7Rk5jedOoDZ9duz+AO4Z2Qs4uWWFltDggxrEbp5K3YDAGxIkmyhPRcfCKfYaF7gj9WOufJTp0nm9pdbGiixqq7ESty+nxWtOq3FtKoSdJiMfAumoQ2xHd7MWMV+Fz8V272TmV0gDe8uFELl4wlarcM5Mhx7EwmYAPvUnMBCP2mUP2jLOIeUUg4OSn9+PnYrD+qp+dMY97lB3+P7wzlsG7H+g0KAgDUmiB9em8yrHv51D1TKtWgvEul6nWqpHaJcAVpq6jBA9V154u6xO+Dzi60NQXh2cILFZfdBKciIjmJV7OIOziDfe4m1ShizZrx/baPrL/BpXBNGTMkLDkfbpl8U5T1BIzzcxD55JTErwOPPXzWlbouNPECh85Lhe7zv38CNR904MeQXiADrWYMKPUq1+I5/ggL/OCZI8P637BLK1v7Pn3yHQ9hFU1fK+z3JJRZmryVqBtJFzcan7xiP8AF30Lt0wwVrq5pkeFVGsZXHG/UL4m4Sl/QKenBofKS4TnyOiE3Sy7F5BSIHtBB1+QC3DwX4SCR/oILimVJ5kywXQ/SbG9Rtp5hlmVvwjgxu8/d7uGymgjrZvmkeNNyajWnBA2+yZzCp3EgWCLU2xw2GgPQm1vhfwtkQlG0l6GlJNArblAD9UKvqFIVBs3MdjXyOkoU4mvCDKERc+ATROdevvjATw1SYtukdoBah4hXdSkkh3HmSGtBu1Nmg==

Dear Jim,

 

Logs meaning the console output from Set Debug Auto/Set Debug Eauto?  By the branching factor, you just mean paying attention to the output (e.g. 1.2.3.1 is depth 4) and each digit counts the branches at it's level?

 

Yes, I do regular profiling runs with coqc running on the command line and output redirected to a file. I tend to generate statistics over the number of applictions/tactics tried vs. the final proof depth (I can provide a python script for this, if you are interested). Usually I can manage to keep this between 2 and 3 on average by proper hint database engineering, so that overall I have linear search time. This means the branching factor is in most cases one and only in some cases a small number. To make the log analysis easier I have in my eauto wrappers also a tactic which first prints the current goal.

 

How helpful would it be if auto/eauto detected and avoided looping?  Either by a) detecting that the proof state has already been seen in the current search (e.g. there is a tactic for a commutative property) and/or b) using a queue that ranks various proof states by a size metric and processing the smaller proof states first.  This might give better performance and allow for a higher depth limit.

 

I think you would in many cases still have exponential search time, because it usually takes 2..3 steps for a loop. So you would detect the loop only after 3 steps and it is not unlikely that in each step of the loop you can also do something else. But yes, it would be helpful to hash the proof state and detect that you have been here before for complicated cases. I have some tactics which do this manually to a certain extent (record the set of seen goals in a proof state variable). But I would first try to eliminate the loop by managing my hint databases and especially proper gating tactics and resort to hashing only in cases where it gets complicated otherwise.

 

I think what would really help is to build up some pattern matching based database which learns by “trial and error eauto proofs” which things make sense in which context. Best would likely be to couple eauto with a neural network. I have some idea on how to approach this, but didn’t have time to try it as yet. It might also be that something in the back of my mind is slightly scared about this. But I have some of our (Intel) neuromorphic chips in my drawer …

 

Best regards,

 

Michael

Intel Deutschland GmbH
Registered Address: Am Campeon 10-12, 85579 Neubiberg, Germany
Tel: +49 89 99 8853-0, www.intel.de
Managing Directors: Christin Eisenschmid, Christian Lamprechter
Chairperson of the Supervisory Board: Nicole Lau
Registered Office: Munich
Commercial Register: Amtsgericht Muenchen HRB 186928




Archive powered by MHonArc 2.6.18.

Top of Page