Hi Bohua,

There is an awful lot of literature on rewriting which you may want to look at. A good starting point is the practically unbeatable equational prover Waldmeister http://www.waldmeister.org/ which is also available via sledgehammer. It uses something called unfailing completion, which is an efficient semidecision procedure for equational logic. Why do I mention Waldmeister? Because it should do the (purely equational) job when simp fails.

Of course there is something to be said for a more lightweight tool than Waldmeister, eg something like your rewriter. It certainly does happen that simp goes into a loop, although we have learned to prove around such situations. Moreover, BFS could be a very costly way of avoiding loops. Note also that I am not aware of any other prover that comes with a built-in BFS rewriter. This could indicate that in practice BFS is not that useful after all.

This may sound very negative, but I would merely suggest to establish that there is a market for your approach before investing significant time on it.

Best
Tobias

On 02/11/2014 16:56, Bohua Zhan wrote:
Hi, everyone

My name is Bohua Zhan, a postdoc in mathematics at MIT. I am
interested in doing some experiments in automated proof techniques in
Isabelle. I have been reading the documentations and existing code for
some time, but this is my first attempt at writing some code, so here
it is (attached).

I am trying to implement a simplifier / rewriter that uses
best-first-search instead of depth-first-search as the current simp
tactic does. This avoids a major problem with DFS simp: being trapped
into loops by rewriting rules that can be used back and forth or
repeatedly. This implementation memorizes terms that have already been
explored.

Two examples are given at the end: the first refers to the permutation
example in section 6.4 of the new Isabelle Cookbook manual, rewriting:

    pi1 . (c, pi2 . ((rev pi1) . d)
= (pi1 . c, pi1 . (pi2 . (rev pi1) . d))
= (pi1 . c, (pi1 . pi2) . (pi1 . ((rev pi1) . d)))
= (pi1 . c, (pi1 . pi2) . d)

avoiding the use of ".aux" (which I suppose is not the ideal solution).

The second example is simplification with ring axioms. I certainly
don't propose this is how it should be done, but just to test how
large an example this rewriter can handle without any domain-specific
knowledge.

Any suggestions? One major feature to be added is dealing with rules
with assumptions. I would especially like to see examples of hard
rewriting problems that come up in actual proof development.

Thanks,
Bohua



_______________________________________________
isabelle-dev mailing list
isabelle-...@in.tum.de
https://mailmanbroy.informatik.tu-muenchen.de/mailman/listinfo/isabelle-dev


Attachment: smime.p7s
Description: S/MIME Cryptographic Signature

_______________________________________________
isabelle-dev mailing list
isabelle-...@in.tum.de
https://mailmanbroy.informatik.tu-muenchen.de/mailman/listinfo/isabelle-dev

Reply via email to