Unsolved constraint in factorial example

This is because the compiler does not know the product of two natural
numbers
is also a natural number.On Sun, Mar 30, 2014 at 3:40 AM, Shahab Tasharrofi < shahab.t...@gmail.com> wrote:

I still have a constraint in my program that does not pass constraint
solving
phase. The general way of the relevant part in my problem was similar to
the
factorial example and, so, I took the following factorial implementation
from
the ATS book and checked to see if it can pass the constraint solving. I
observed that factorial example below cannot pass the constraint solving
either.

fun fact {n:nat} (x: int n): [r:nat] int r = if x > 0 then x * fact (x-1)
else 1

While I cannot be sure if my problem and the problem with factorial example
above are indeed the same, I first want to see what the problem with the
above implementation is and then check if my problem is also the same.


You received this message because you are subscribed to the Google Groups
“ats-lang-users” group.
To unsubscribe from this group and stop receiving emails from it, send an
email to ats-lang-user...@googlegroups.com.
To post to this group, send email to ats-lan...@googlegroups.com.
To view this discussion on the web visit
https://groups.google.com/d/msgid/ats-lang-users/cb961436-c31d-4839-bf80-6891154d2bbd%40googlegroups.comhttps://groups.google.com/d/msgid/ats-lang-users/cb961436-c31d-4839-bf80-6891154d2bbd%40googlegroups.com?utm_medium=email&utm_source=footer
.

Here is a version that type-checks:

fun
fact{n:nat}
(
x: int n
) : [r:nat] int r =
(
if x > 0
then let
val [r1:int] r1 = fact (x-1)
prval () = mul_gte_gte_gte {n,r1} ()
in
x * r1
end // end of [then]
else 1 // end of [else]
) (* end of [if] *)On Sunday, March 30, 2014 9:49:05 AM UTC-4, gmhwxi wrote:

This is because the compiler does not know the product of two natural
numbers
is also a natural number.

On Sun, Mar 30, 2014 at 3:40 AM, Shahab Tasharrofi < shahab.t...@gmail.com> wrote:

I still have a constraint in my program that does not pass constraint
solving
phase. The general way of the relevant part in my problem was similar to
the
factorial example and, so, I took the following factorial implementation
from
the ATS book and checked to see if it can pass the constraint solving. I
observed that factorial example below cannot pass the constraint solving
either.

fun fact {n:nat} (x: int n): [r:nat] int r = if x > 0 then x * fact (x-1)
else 1

While I cannot be sure if my problem and the problem with factorial
example
above are indeed the same, I first want to see what the problem with the
above implementation is and then check if my problem is also the same.


You received this message because you are subscribed to the Google Groups
“ats-lang-users” group.
To unsubscribe from this group and stop receiving emails from it, send an
email to ats-lang-user...@googlegroups.com.
To post to this group, send email to ats-lan...@googlegroups.com.
To view this discussion on the web visit
https://groups.google.com/d/msgid/ats-lang-users/cb961436-c31d-4839-bf80-6891154d2bbd%40googlegroups.comhttps://groups.google.com/d/msgid/ats-lang-users/cb961436-c31d-4839-bf80-6891154d2bbd%40googlegroups.com?utm_medium=email&utm_source=footer
.