Hi,

This appears to be a bug in METIS_TAC.  It should fail but it instead returns a 
legitimate theorem - just one with inconsistent hypotheses.  This appears to 
relate to the fact that METIS_TAC is at heart a first-order prover, which 
doesn't fit in with the types/theorems in wordsTheory.  Joe Hurd may like to 
take a look at this...

Using METIS_TAC in this way is fairly non-standard -- it's mostly applied to 
small goals using a few hand-picked theorems.

What sort of goals are you trying to prove?  You may like to consider using one 
of the standard procedures in wordsLib or blastLib.  If you're trying to prove 
arithmetic properties then you could try wordsLib.WORD_ARITH_PROVE, e.g.

> load "wordsLib";
> wordsLib.WORD_ARITH_PROVE
  ``(a * (b + c) + b = a * b) = (a * c = -b)``
val it =
   |- (a * (b + c) + b = a * b) ⇔ (a * c = -b):
   thm

(or as a tactic: CONV_TAC wordsLib.WORD_ARITH_CONV.)

Note that WORD_ARITH_PROVE has only just been added to the SourceForge 
repository.  wordsLib.WORD_DECIDE is similar but can't prove the goal above.

If you are working with *known* word sizes then blastLib.BBLAST_PROVE 
(BBLAST_TAC) is a good option, e.g.

> blastLib.BBLAST_PROVE
  ``(31 >< 2) (w2w (x:word30) << 2 + y:word32) = x + (31 >< 2) y``;
val it =
   |- (31 >< 2) (w2w x ≪ 2 + y) = x + (31 >< 2) y:
   thm

However, this isn't so suited to proving things about multiplication (by a 
non-literal) and division.

If these routines don't work then you may have to rely on user guidance or 
writing custom routines, e.g. using the simplifier and the various tools in 
wordsLib.   The help pages may be helpful there:

help "wordsLib";
help "WORD_ARITH_CONV";

Anthony

On 23 Jun 2011, at 12:33, Tom N wrote:

> Hello,
> 
> I have a set of hypotheses involving the words library that I would
> like to prove automatically. My first attempt at this was to ask HOL
> to prove them against the entirety of wordsTheory, using:
> 
>> prove(hypothesis, METIS_TAC(map snd (DB.theorems "words")));
> 
> While this appeared to work at first, it seems that it is able to
> 'prove' obviously-incorrect hypotheses, for example:
> 
>> load "wordsTheory"; open wordsTheory;
>> show_assums := true;
>> prove(``F``, METIS_TAC(map snd (DB.theorems "words")));
>  [%%genvar%%8939 = @m. dimindex (:'XXfolXX_40996) = SUC m,
>   %%genvar%%8939 = @m. dimindex (:2) = SUC m,
>   %%genvar%%8939 = @m. dimindex (:unit) = SUC m] |- F:
>     thm
> 
> Is this more likely to indicate an inconsistency in wordsTheory, or me
> doing something wrong?  I've only started using HOL recently, so it's
> probably the latter ;)
> 
> 
> Thanks in advance,
> 
> Tom Nixon
> 
> ------------------------------------------------------------------------------
> Simplify data backup and recovery for your virtual environment with vRanger.
> Installation's a snap, and flexible recovery options mean your data is safe,
> secure and there when you need it. Data protection magic?
> Nope - It's vRanger. Get your free trial download today.
> http://p.sf.net/sfu/quest-sfdev2dev
> _______________________________________________
> hol-info mailing list
> hol-info@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/hol-info


------------------------------------------------------------------------------
All the data continuously generated in your IT infrastructure contains a 
definitive record of customers, application performance, security 
threats, fraudulent activity and more. Splunk takes this data and makes 
sense of it. Business sense. IT sense. Common sense.. 
http://p.sf.net/sfu/splunk-d2d-c1
_______________________________________________
hol-info mailing list
hol-info@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/hol-info

Reply via email to