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