Skip to content

Use kernel compute feature in HOL4 simplifier, decision procedures, and EVAL #1118

Open
@myreen

Description

@myreen

I’m planning to make the HOL4 simplifier, decision procedure, and default EVAL set up use the new compute primitive for (at least) any computations over constant natural numbers. This way users will benefit from the new compute primitive (e.g. faster arithmetic decision procedures) without doing anything.

Background: HOL4’s kernel now includes a compute primitive (see merged PR and this ITP’23 paper). The new primitive can do fast computation over natural numbers and Lisp-like first-order functional programs. Note that the primitive does not extend the HOL logic in any way. The compute primitive has been proved to follow the inference rules of higher-order logic (as formalised for Candle). More specifically: @oskarabrahamsson has proved in HOL4 that, for every theorem produced by the new compute primitive, there is some syntactic derivation of that theorem in HOL.

We should discuss a conflict between HOL4's new compute primitive and proof export with OpenTheory. More specifically: What should we do about the OpenTheory exporter? Just to be clear: once simp (and friends) use the new compute under the hood it will part of every development, but the OpenTheory exporter won’t know how to record its computation as OpenTheory primitive inferences.

Here are some options: (1) have a global flag that turns on or off the use of compute in simp, EVAL, DECIDE, or (2) use “ifdef” like hackery to remove all calls to the new compute primitive when building for the OpenTheory kernel (there is already some such hackery going on in Makefiles/Holmakefiles).

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions