Also, there seems to be some inefficiency: the posted formula gets proved
quite quickly in HOL4:

Count.apply ARITH_CONV tm;
runtime: 1.2s,    gctime: 0.77200s,     systime: 0.00000s.
Axioms: 0, Defs: 0, Disk: 0, Orcl: 0, Prims: 493764; Total: 493764
val it =
   ⊢ 193650890589077504 * (2 * y + 1) ≤
     47942158315484610560 * (2 * x + 1) + 135203236847161865141 ∧
     0 ≤
     2655641718416121605914624 * (2 * x + 1) +
     2208414543647439060992 * (2 * y + 1) + 6004289407548407186399935 ⇒
     0 ≤
     13137886070707932161376256 * (2 * x + 1) +
     17509226798704706453504 * (x + y + 1) + 36152178747194683600721967 ⇔ T:
   thm

On Thu, Jan 28, 2021 at 6:57 PM Konrad Slind <konrad.sl...@gmail.com> wrote:

> HOL4 has a notion of persistent theory, so you could spawn many
> parallel sessions, each delivering a theory with one result, then
> create a single descendant theory, import all the parent
> theories, and chain your implications or inequalities there.
>
> It also provides integer decision procedures, so the calls to
> INT_ARITH might possibly be directly substitute-able.
>
> Konrad.
>
>
> On Thu, Jan 28, 2021 at 5:07 PM D. J. Bernstein <d...@math.uic.edu> wrote:
>
>> Thanks for the references and suggestions. As a scaled-down example of
>> part of the time consumption, this takes 400 million CPU cycles:
>>
>>    INT_ARITH `&193650890589077504 * (&2 * (y:int) + &1)
>>               <= &47942158315484610560 * (&2 * (x:int) + &1)
>>                  + &135203236847161865141
>>               /\
>>               &0 <= &2655641718416121605914624 * (&2 * x + &1)
>>                     + &2208414543647439060992 * (&2 * y + &1)
>>                     + &6004289407548407186399935
>>               ==>
>>               &0 <= &13137886070707932161376256 * (&2 * x + &1)
>>                     + &17509226798704706453504 * (x + y + &1)
>>                     + &36152178747194683600721967`;;
>>
>> Hand proof: take 6532449000950803555513091/700376017867732114912 and
>> 26794012414555294513937/5603008142941856919296 times the first and
>> second inequalities, add, and observe that you now have a stronger
>> version of the conclusion, offset by 1581608968911709059178093879/256.
>>
>> Changing INT_ARITH to g still takes around 100 million CPU cycles, which
>> makes me wonder whether there's some bottleneck in parsing or printing.
>>
>> The code that I wrote to do a bunch of searching to find and print the
>> whole sequence of relevant presumed theorems is, with no optimization
>> effort, thousands of times faster than this. Of course that code doesn't
>> have to bother with the symbolic aspects of proof manipulation.
>>
>> ---Dan
>> _______________________________________________
>> hol-info mailing list
>> hol-info@lists.sourceforge.net
>> https://lists.sourceforge.net/lists/listinfo/hol-info
>>
>
_______________________________________________
hol-info mailing list
hol-info@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/hol-info

Reply via email to