History log of /seL4-l4v-master/HOL4/src/1/dep_rewrite.sml
Revision Date Author Comments
# cd3e4b68 06-Jan-2020 Konrad Slind <konrad.slind@gmail.com>

removing one source of unbreakable looping behaviour in dep_rewrite


# bc99bcfb 25-Jul-2018 Anthony Fox <anthony.fox@cl.cam.ac.uk>

Another go at strengthening the (default) behaviour of Tactical.prove.

By default Tactical.prove now checks for the validity of the supplied tactic using VALID. This breaks a few proofs in which assumptions were surreptitiously being introduced.

It is expected that this commit will break some external proofs that relied on the old behaviour (e.g. under CakeML). A workaround is to selectively restore the old behaviour with

val () = set_prover (fn (t, tac) => TAC_PROOF (([], t), tac))

in places that contain non-valid tactic proofs.


# 57e62af1 22-Jul-2018 Michael Norrish <Michael.Norrish@nicta.com.au>

Revert "Add hypotheses count check to TAC_PROOF."

This reverts commit 01930d56ce7a31c10ff7f422a0cf535a8c502a59.

I don't believe that changing this primitive is a good idea. I'd like
TAC_PROOF to stay as the base primitive that applies a tactic to a
goal state without checking for validity or similar.

This change is also causing breakages in CakeML and
examples/machine-code/lisp. If there is a need for this sort of
validity-style check (apart from what is done by expand), it could be
added to prove quite reasonably, possibly there under the control of
another trace variable, or just permanently on (as it is easy enough
to change the behaviour of prove by adjusting the reference it
consults).


# 01930d56 16-Jul-2018 Anthony Fox <anthony.fox@cl.cam.ac.uk>

Add hypotheses count check to TAC_PROOF.

This helps guard against the following:

val lem = Q.prove(
`F`,
ACCEPT_TAC (ASSUME ``F``)
)

Before this returned the theorem [F] |-> F without complaint, despite an "Invalid tactic" exception being raised when using proofManagerLib.e. This proof will now fail. The new check falls short of requiring alpha equivalence of assumption lists, which would be safer.

This change has identified a few areas of imprecision within automation, namely within "dep_rewrite" and "Satisfy". There it may be the case that a subset of the stated assumptions appear in the final theorem.


# 2bc66df7 20-Dec-2017 Andreas Lööw <AndreasLoow@users.noreply.github.com>

Include Abbrev in dep_rewrite

Before this fix this happened:

> rw [];
val it = fn: tactic

> open dep_rewrite;
[...]

> rw [];
val it = fn: bossLib.tactic


# 4888f523 15-Oct-2017 Michael Norrish <Michael.Norrish@nicta.com.au>

Remove eqtype declaration for term type


# 08d7a558 23-Oct-2014 Piotr Trojanek <piotr.trojanek@gmail.com>

trailing newlines in *.{sml,sig} files from src/ removed

Trailing newlines from SML files in src/ were rendered in HTML documentation.


# 1bc9f344 13-Jan-2011 Michael Norrish <Michael.Norrish@nicta.com.au>

Change src/bool to src/1 as a prelude to experimentation!