Hi all,
 
I'm trying to prove equality between 2 recursions (2 different way of defining 
a factorial)
 
So far I have:
 
let i = define `i n = if n <= 1 then 1 else i ( n - 1 ) + 1`;;let fac = define 
`fac n = if n <= 1 then 1 else fac ( n - 1 ) * i n`;;let fact = define `fact n 
= if n <= 0 then 1 else n * fact(n - 1)`;;
 
Then I defined a goldstack:
 
g `!k. (( i k <= k) /\ 1 <= k) ==> (fac k = fact k)`;;
 
I used GEN_TAC and STRIP_TAC to get to subgoal:  fac k = fact k
 
What should be the next step?  Whatever I use gives me 'Exception: Failure 
"linear_ineqs: no contradiction".'
I know the tutorial shows iformation on how to deal with Nonlinear reasoning in 
Chapter 9.2.  I tried the REAL_RING and it failed.  The other option is to use 
SOS_RULE, but it requires additional module to be loaded.  I want to check if 
there are any other options for me to accomplish this that going with a module, 
or maybe I'm just doing something wrong.
 
Thank you
Ewa Romanowicz
 
______________________________________________
Please visit http://www.EwaRomanowicz.com
 
 
_________________________________________________________________

-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
hol-info mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/hol-info

Reply via email to