The standard issue with problems like these is a difference in types.  Have you
tried examining the goal with show_types on?

Do

  show_types := true;

and reprint the goal?  Do you really have an instance of A ==> A?

You can also do the following:

  match_term ``A ==> A`` (#2 (top_goal());

that will fail (unhelpfully) if the goal isn't an instance of A ==> A, but will
succeed with an instantiation for A if it is.  If it is, then METIS_TAC is
presumably being confused by one of your assumptions.  If so, try deleting
assumptions (use POP_ASSUM (K ALL_TAC)) until METIS_TAC does manage to prove it.

I hope this helps.

Feel free to report back if you still have trouble tracking down the problem.

It is also quite possible that there is a bug in METIS_TAC of course.

Michael

On 08/09/14 16:20, Jiaqi Tan wrote:
> Hi,
>
> I have the following goal (using the theorems in examples/machine-code) in 
> HOL4
> which I am trying to prove:
>
> val mw2 =
>    ([([``SEP_IMP (aPC offset'' * r) (aPC offset'' * s')``,
>        ``(s = aPC offset'' * s') ∧ SEP_IMP (aPC offset'' * r) s ⇒
>   SPEC2 x (aPC offset' * q) c2 (aPC offset'' * s')``,
>        ``(q' = aPC offset' * q) ∧ SEP_IMP (aPC offset' * q) q' ⇒
>   SPEC2 x (aPC offset * p) c1 (aPC offset' * q)``,
>        ``SEP_IMP (aPC offset'' * r) s``,
>        ``s = aPC offset'' * s'``,
>        ``SPEC x (aPC offset * p) (c1 ∪ c2) (aPC offset'' * r)``,
>        ``q' = aPC offset' * q``],
>       ``SPEC x (aPC offset * p) (c1 ∪ c2) (aPC offset'' * s') ⇒
>   SPEC x (aPC offset * p) (c1 ∪ c2) (aPC offset'' * s')``)],
>     fn): goal list * validation
>
> The goal is "SPEC x (aPC offset * p) (c1 ∪ c2) (aPC offset'' * s') ⇒
>   SPEC x (aPC offset * p) (c1 ∪ c2) (aPC offset'' * s')", which appears to be
> true (by one of the conjuncts in boolTheory.IMP_CLAUSES), but I am unable to
> prove it.
>
> When I run "METIS_TAC []" on this goal interactively (by typing it in) from 
> the
> HOL shell, I get "[.....] |- SPEC x (aPC offset * p) (c1 ∪ c2) (aPC offset'' *
> s') ⇒ SPEC x (aPC offset * p) (c1 ∪ c2) (aPC offset'' * s')", and when I run
> "METIS_TAC []" by pasting it into the shell (as the last tactic in my list of
> THEN'ed tactics), I get the error:
> "Exception-
>    HOL_ERR
>   {message = "", origin_function = "CHOOSE", origin_structure = "Thm"} raised
> "
>
> Two of my tactics before reaching the above state are:
>
> (Q.PAT_ASSUM `! aaa . ?bbb ccc . ddd /\ SEP_IMP (aPC offset' * q) s ==> eee`
>  ((Q.X_CHOOSE_THEN `q` (Q.X_CHOOSE_TAC `offset'`)) o (Q.SPECL [`q'`])))
>
> and
>
> (Q.PAT_ASSUM `! aaa . ?bbb ccc . ddd /\ SEP_IMP (aPC offset'' * r) s ==> eee`
> ((Q.X_CHOOSE_THEN `s'` (Q.X_CHOOSE_TAC `offset''`)) o (Q.SPECL [`s`])))
>
> Could the Q.PAT_ASSUM (or X_CHOOSE_TAC) be causing problems? When I call
> Q.PAT_ASSUM and I use X_CHOOSE_TAC to instantiate existentially quantified
> variables with some variable, does that add extra assumptions to the theorem
> being selected from the assumptions before adding it to the goals?
>
> Thank you!
>
> Regards,
> Jiaqi
>
>
>
>
>
> ------------------------------------------------------------------------------
> Want excitement?
> Manually upgrade your production database.
> When you want reliability, choose Perforce.
> Perforce version control. Predictably reliable.
> http://pubads.g.doubleclick.net/gampad/clk?id=157508191&iu=/4140/ostg.clktrk
>
>
>
> _______________________________________________
> hol-info mailing list
> hol-info@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/hol-info
>


________________________________

The information in this e-mail may be confidential and subject to legal 
professional privilege and/or copyright. National ICT Australia Limited accepts 
no liability for any damage caused by this email or its attachments.

------------------------------------------------------------------------------
Want excitement?
Manually upgrade your production database.
When you want reliability, choose Perforce.
Perforce version control. Predictably reliable.
http://pubads.g.doubleclick.net/gampad/clk?id=157508191&iu=/4140/ostg.clktrk
_______________________________________________
hol-info mailing list
hol-info@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/hol-info

Reply via email to