Thanks.

On 28/03/18 05:00, michael.norr...@data61.csiro.au wrote:
> I'm afraid there is no solution to this problem whereby automatic tools will 
> make lots of progress. First order reasoners such as PROVE_TAC and METIS_TAC 
> try to do a little in this area (converting lambda-expressions to terms 
> involving combinators for example), but this only goes so far, and also makes 
> it hard to see what one should additionally provide to prime the provers.  In 
> your case, the underlying goal might end up being
> 
>   f (<=) = f (\x. B ((<) x) SUC)
>          = f (S (B B (<)) (K SUC))
> 
> Where B is actually combin$o.  Given this, the supposedly relevant theorem 
> relating < and <= isn't going to apply.  You could try giving METIS 
> FUN_EQ_THM as an argument I suppose.
> 
> Michael
> 
> On 27/3/18, 04:56, "Mario Xerxes Castelán Castro" <marioxcc...@yandex.com> 
> wrote:
> 
>     Hello.
>     
>     Metis can prove «(λx m. x ≤ m) = (λx m. x < SUC m)» using
>     arithmeticTheory.LESS_EQ_IFF_LESS_SUC, but if the left hand side and
>     right hand instead appear as the operands of a combination then it no
>     longer works. The same behavior applies to “PROVE_TAC”.
>     
>     > TAC_PROOF (([], “(λx m. x ≤ m) = (λx m. x < SUC m)”), METIS_TAC
>     [arithmeticTheory.LESS_EQ_IFF_LESS_SUC]);
>     metis: r[+0+5]+0+0+1+0+0+1#
>     val it = ⊢ (λx m. x ≤ m) = (λx m. x < SUC m): thm
>     
>     > TAC_PROOF (([], “f (λx m. x ≤ m) = f (λx m. x < SUC m)”), METIS_TAC
>     [arithmeticTheory.LESS_EQ_IFF_LESS_SUC]);
>     <<HOL message: inventing new type variable names: 'a>>
>     metis: r[+0+7]+0+0+0+0+0+0+0!
>     Exception-
>        HOL_ERR
>          {message = "no solution found", origin_function = "FOL_FIND",
>           origin_structure = "folTools"} raised
>     
>     > TAC_PROOF (([], “f (λx m. x ≤ m) = f (λx m. x < SUC m)”),
>     metisTools.HO_METIS_TAC [arithmeticTheory.LESS_EQ_IFF_LESS_SUC]);
>     <<HOL message: inventing new type variable names: 'a>>
>     metis: r[+0+7]+0+0+0+0+0+0+0!
>     Exception-
>        HOL_ERR
>          {message = "no solution found", origin_function = "FOL_FIND",
>           origin_structure = "folTools"} raised
>     
>     This is a reduced test case to show the problem. Obviously I could use
>     the simplifier here, but in general Metis and MESON seem to be unable to
>     use equality of lambda terms to complete a proof and thus they fail for
>     some otherwise simple use cases that occur in practice. What should I do
>     about this?
>     
>     Thanks.
>     
>     
> 
> ------------------------------------------------------------------------------
> Check out the vibrant tech community on one of the world's most
> engaging tech sites, Slashdot.org! http://sdm.link/slashdot
> _______________________________________________
> hol-info mailing list
> hol-info@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/hol-info
> 


Attachment: signature.asc
Description: OpenPGP digital signature

------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
hol-info mailing list
hol-info@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/hol-info

Reply via email to