diff --git a/ats-src/combinatorics-internal.dats b/ats-src/combinatorics-internal.dats
deleted file mode 100644
--- a/ats-src/combinatorics-internal.dats
+++ /dev/null
@@ -1,147 +0,0 @@
-#include "share/atspre_staload.hats"
-#include "$PATSHOMELOCS/atscntrb-hx-intinf/mydepies.hats"
-#include "$PATSHOMELOCS/atscntrb-hx-intinf/mylibies.hats"
-
-staload "$PATSHOMELOCS/atscntrb-hx-intinf/SATS/intinf_vt.sats"
-staload UN = "prelude/SATS/unsafe.sats"
-
-// See [here](http://mathworld.wolfram.com/Derangement.html). I'm not sure how
-// fast this is, but it *seems* to be faster than the Haskell version so that's
-// good.
-fn derangements {n:nat} .<n>. (n : int(n)) : Intinf =
-  let
-    fun loop { n : nat | n > 1 }{ i : nat | i <= n } .<n-i>. (n : int(n), i : int(i), n1 : Intinf, n2 : Intinf) : Intinf =
-      if i < n then
-        let
-          var x = add_intinf0_intinf1(n2, n1)
-          var y = mul_intinf0_int(x, i)
-        in
-          loop(n, i + 1, y, n1)
-        end
-      else
-        let
-          var x = add_intinf0_intinf1(n2, n1)
-          val _ = intinf_free(n1)
-          var y = mul_intinf0_int(x, i)
-        in
-          y
-        end
-  in
-    case+ n of
-      | 0 => int2intinf(1)
-      | 1 =>> int2intinf(0)
-      | 2 =>> int2intinf(1)
-      | n =>> loop(n - 1, 2, int2intinf(1), int2intinf(0))
-  end
-
-fun fact {n:nat} .<n>. (k : int(n)) : intinfGte(1) =
-  case+ k of
-    | 0 => int2intinf(1)
-    | 1 => int2intinf(1)
-    | k =>> $UN.castvwtp0(mul_intinf0_int(fact(k - 1), k))
-
-// Double factorial http://mathworld.wolfram.com/DoubleFactorial.html
-fun dfact {n:nat} .<n>. (k : int(n)) : Intinf =
-  case+ k of
-    | 0 => int2intinf(1)
-    | 1 => int2intinf(1)
-    | k =>> let
-      var x = dfact(k - 2)
-      var y = mul_intinf0_int(x, k)
-    in
-      y
-    end
-
-// Number of permutations on n objects using k at a time.
-fn permutations {n:nat}{ k : nat | k <= n }(n : int(n), k : int(k)) : Intinf =
-  let
-    var x = fact(n)
-    var y = fact(n - k)
-    var z = div_intinf0_intinf1(x, y)
-    val _ = intinf_free(y)
-  in
-    z
-  end
-
-// Catalan numbers, indexing starting at zero.
-fn catalan {n:nat}(n : int(n)) : Intinf =
-  let
-    fun numerator_loop { i : nat | i > 1 } .<i>. (i : int(i)) : [ n : nat | n > 0 ] intinf(n) =
-      case+ i of
-        | 2 => int2intinf(n + 2)
-        | i =>> let
-          var x = numerator_loop(i - 1)
-          var y = mul_intinf0_int(x, n + i)
-        in
-          $UN.castvwtp0(y)
-        end
-  in
-    case+ n of
-      | 0 => int2intinf(1)
-      | 1 => int2intinf(1)
-      | k =>> let
-        var x = numerator_loop(k)
-        var y = fact(k)
-        var z = div_intinf0_intinf1(x, y)
-        val _ = intinf_free(y)
-      in
-        $UN.castvwtp0(z)
-      end
-  end
-
-// Number of permutations on n objects using k at a time.
-fn choose {n:nat}{ m : nat | m <= n }(n : int(n), k : int(m)) : Intinf =
-  let
-    fun numerator_loop { m : nat | m > 1 } .<m>. (i : int(m)) : [ n : nat | n > 0 ] intinf(n) =
-      case+ i of
-        | 1 => int2intinf(n)
-        | 2 => $UN.castvwtp0(int2intinf((n - 1) * n))
-        | i =>> let
-          var x = numerator_loop(i - 1)
-          var y = mul_intinf0_int(x, n + 1 - i)
-        in
-          $UN.castvwtp0(y)
-        end
-  in
-    case+ k of
-      | 0 => int2intinf(1)
-      | 1 => int2intinf(n)
-      | k =>> let
-        var x = numerator_loop(k)
-        var y = fact(k)
-        var z = div_intinf0_intinf1(x, y)
-        val _ = intinf_free(y)
-      in
-        $UN.castvwtp0(z)
-      end
-  end
-
-fn sterling {n:nat}{ k : nat | k <= n }(n : int(n), k : int(k)) : Intinf =
-  let
-    fun numerator_loop {j:nat}(j : int(j), acc : Intinf) : Intinf =
-      acc
-  in
-    int2intinf(0)
-  end
-
-// TODO stirling numbers of the second kind.
-// Bell numbers. These can't be called via the FFI because of the mutually
-// recursive functions, so we should probably think of something else.
-fnx bell {n:nat}(n : int(n)) : [ n : nat | n > 0 ] intinf(n) =
-  case- n of
-    | 0 => int2intinf(1)
-    | n when n >= 0 =>> sum_loop(n, n)
-and sum_loop {n:nat}{ m : nat | m >= 1 && m <= n } .<m>. (n : int(n), i : int(m)) : [ n : nat | n > 0 ] intinf(n) =
-  case+ i of
-    | 1 => int2intinf(1)
-    | i =>> let
-      var p = sum_loop(n, i - 1)
-      var b = bell(i)
-      var c = choose(n, i)
-      var pre_ret = mul_intinf0_intinf1(c, b)
-      var ret = add_intinf0_intinf1(pre_ret, p)
-      val _ = intinf_free(b)
-      val _ = intinf_free(p)
-    in
-      $UN.castvwtp0(ret)
-    end
diff --git a/ats-src/combinatorics.dats b/ats-src/combinatorics.dats
deleted file mode 100644
--- a/ats-src/combinatorics.dats
+++ /dev/null
@@ -1,46 +0,0 @@
-#define ATS_MAINATSFLAG 1
-
-#include "share/atspre_staload.hats"
-#include "ats-src/combinatorics-internal.dats"
-
-extern
-fun choose_ats {n:nat}{ m : nat | m <= n } : (int(n), int(m)) -> Intinf =
-  "mac#"
-
-extern
-fun permutations_ats {n:nat}{ m : nat | m <= n } : (int(n), int(m)) -> Intinf =
-  "mac#"
-
-extern
-fun double_factorial_ats {n:nat} : int(n) -> Intinf =
-  "mac#"
-
-extern
-fun factorial_ats {n:nat} : int(n) -> Intinf =
-  "mac#"
-
-extern
-fun catalan_ats {n:nat} : int(n) -> Intinf =
-  "mac#"
-
-extern
-fun derangements_ats {n:nat} : int(n) -> Intinf =
-  "mac#"
-
-implement choose_ats (n, k) =
-  choose(n, k)
-
-implement permutations_ats (n, k) =
-  choose(n, k)
-
-implement double_factorial_ats (m) =
-  dfact(m)
-
-implement factorial_ats (m) =
-  fact(m)
-
-implement catalan_ats (n) =
-  catalan(n)
-
-implement derangements_ats (n) =
-  derangements(n)
diff --git a/ats-src/number-theory-internal.dats b/ats-src/number-theory-internal.dats
deleted file mode 100644
--- a/ats-src/number-theory-internal.dats
+++ /dev/null
@@ -1,262 +0,0 @@
-#include "share/atspre_staload.hats"
-#include "$PATSHOMELOCS/atscntrb-hx-intinf/mydepies.hats"
-#include "$PATSHOMELOCS/atscntrb-hx-intinf/mylibies.hats"
-#include "ats-src/numerics-internal.dats"
-
-staload "prelude/SATS/integer.sats"
-staload UN = "prelude/SATS/unsafe.sats"
-staload "$PATSHOMELOCS/atscntrb-hx-intinf/SATS/intinf_vt.sats"
-
-#define ATS_MAINATSFLAG 1
-
-// m | n
-fn divides(m : int, n : int) :<> bool =
-  n % m = 0
-
-// Euclid's algorithm
-fnx gcd {k:nat}{l:nat}(m : int(l), n : int(k)) : int =
-  if n > 0 then
-    gcd(n, witness(m % n))
-  else
-    m
-
-fn lcm {k:nat}{l:nat}(m : int(l), n : int(k)) : int =
-  (m / gcd(m, n)) * n
-
-fn is_coprime {k:nat}{l:nat}(m : int(l), n : int(k)) : bool =
-  gcd(m, n) = 1
-
-// stream all divisors of an integer.
-fn divisors(n : intGte(1)) : stream_vt(int) =
-  case+ n of
-    | 1 => $ldelay(stream_vt_cons(1, $ldelay(stream_vt_nil)))
-    | _ => let
-      fun loop { k : nat | k > 0 }{ m : nat | m > 0 }(n : int(k), acc : int(m)) : stream_vt(int) =
-        if acc >= sqrt_int(n) then
-          if n % acc = 0 then
-            if n / acc != acc then
-              let
-                var x: int = n / acc
-              in
-                $ldelay(stream_vt_cons(acc, $ldelay(stream_vt_cons(x, $ldelay(stream_vt_nil)))))
-              end
-            else
-              let
-                
-              in
-                $ldelay(stream_vt_cons(acc, $ldelay(stream_vt_nil)))
-              end
-          else
-            $ldelay(stream_vt_nil)
-        else
-          if n % acc = 0 then
-            let
-              var x: int = n / acc
-            in
-              $ldelay(stream_vt_cons(acc, $ldelay(stream_vt_cons(x, (loop(n, acc + 1))))))
-            end
-          else
-            loop(n, acc + 1)
-    in
-      loop(n, 1)
-    end
-
-// prime divisors of an integer
-fn prime_divisors(n : intGte(1)) : stream_vt(int) =
-  stream_vt_filter_cloptr(divisors(n), lam x => is_prime($UN.cast(x)))
-
-// if n >= 0, p > 1, then n/p >=
-fn div_gt_zero(n : intGte(0), p : intGt(1)) : intGte(0) =
-  $UN.cast(n / p)
-
-// TODO require that p be prime
-fun exp_mod_prime(a : intGte(0), n : intGte(0), p : intGt(1)) : int =
-  let
-    var a1 = a % p
-    var n1 = n % (p - 1)
-  in
-    case+ a of
-      | 0 => 0
-      | x =>> 
-        begin
-          if n > 0 then
-            let
-              var n2: intGte(0) = $UN.cast(half(n1))
-              var i2 = n1 % 2
-              var sq_a: intGte(0) = $UN.cast(a * a % p)
-            in
-              if i2 = 0 then
-                exp_mod_prime(sq_a, n2, p)
-              else
-                let
-                  var y = a * exp_mod_prime(sq_a, n2, p)
-                in
-                  y
-                end
-            end
-          else
-            1
-        end
-  end
-
-// Jacobi symbol for positive integers. See here: http://mathworld.wolfram.com/JacobiSymbol.html
-// I'm pretty sure this is broken in some way, though I'm really sure why.
-fun jacobi(a : intGte(0), n : Odd) : int =
-  let
-    // TODO make this take p prime only.
-    fun legendre { p : int | p >= 2 }(a : intGte(0), p : int(p)) : intBtwe(~1, 1) =
-      case+ p % a of
-        | 0 => 0
-        | _ => let
-          var i = exp_mod_prime(a, (p - 1) / 2, p)
-        in
-          case+ i of
-            | i when i % (p - 1) = 0 => ~1
-            | i when i % p = 0 => 0
-            | _ => 1
-        end
-    
-    fun get_multiplicity(n : intGte(0), p : intGt(1)) : intGte(0) =
-      case+ n % p of
-        | 0 => 1 + get_multiplicity(div_gt_zero(n, p), p)
-        | _ => 0
-    
-    fun loop { m : int | m > 1 }(acc : int(m)) : int =
-      if acc > n then
-        1
-      else
-        if a % acc = 0 && is_prime(acc) then
-          loop(acc + 1) * exp(legendre(acc, n), get_multiplicity(a, acc))
-        else
-          loop(acc + 1)
-  in
-    loop(2)
-  end
-
-fn count_divisors(n : intGte(1)) : int =
-  stream_vt_length(divisors(n))
-
-vtypedef pair = @{ first = int, second = int }
-
-// aka σ in number theory
-fn sum_divisors(n : intGte(1)) : int =
-  let
-    fun loop { k : nat | k > 0 }{ m : nat | m > 0 }(n : int(k), acc : int(m)) : int =
-      if acc >= sqrt_int(n) then
-        if n % acc = 0 then
-          if n / acc != acc then
-            let
-              var x: int = n / acc
-            in
-              acc + x
-            end
-          else
-            acc
-        else
-          0
-      else
-        if n % acc = 0 then
-          let
-            var x: int = n / acc
-          in
-            acc + x + loop(n, acc + 1)
-          end
-        else
-          loop(n, acc + 1)
-  in
-    loop(n, 1)
-  end
-
-fn is_perfect(n : intGt(1)) : bool =
-  sum_divisors(n) = n
-
-fun rip { n : nat | n > 0 }{ p : nat | p > 0 } .<n>. (n : int(n), p : int(p)) :<> [ r : nat | r <= n && r > 0 ] int(r) =
-  if n % p != 0 then
-    n
-  else
-    if n / p > 0 then
-      let
-        var n1 = n / p
-      in
-        if n1 < n then
-          $UN.cast(rip(n1, p))
-        else
-          1
-      end
-    else
-      1
-
-fun prime_factors(n : intGte(1)) : stream_vt(int) =
-  let
-    fun loop { k : nat | k > 0 }{ m : nat | m > 0 }(n : int(k), acc : int(m)) : stream_vt(int) =
-      if acc >= n then
-        if is_prime(n) then
-          $ldelay(stream_vt_cons(n, $ldelay(stream_vt_nil)))
-        else
-          $ldelay(stream_vt_nil)
-      else
-        if n % acc = 0 && is_prime(acc) then
-          if n / acc > 0 then
-            $ldelay(stream_vt_cons(acc, loop(rip(n, acc), 1)))
-          else
-            $ldelay(stream_vt_cons(acc, $ldelay(stream_vt_nil)))
-        else
-          loop(n, acc + 1)
-  in
-    loop(n, 1)
-  end
-
-// distinct prime divisors
-fn little_omega(n : intGte(1)) : int =
-  let
-    fun loop { k : nat | k > 0 }{ m : nat | m > 0 }(n : int(k), acc : int(m)) :<!ntm> int =
-      if acc >= n then
-        if is_prime(n) then
-          1
-        else
-          0
-      else
-        if n % acc = 0 && is_prime(acc) then
-          if n / acc > 0 then
-            1 + loop(rip(n, acc), 1)
-          else
-            1
-        else
-          loop(n, acc + 1)
-  in
-    loop(n, 1)
-  end
-
-// Euler's totient function.
-fn totient(n : intGte(1)) : int =
-  case+ n of
-    | 1 => 1
-    | n =>> let
-      fn adjust_contents(x : pair, y : int) : pair =
-        @{ first = g0int_mul(x.first, y - 1), second = g0int_mul(x.second, y) }
-      
-      var x: stream_vt(int) = prime_factors(n)
-      var empty_pair = @{ first = 1, second = 1 } : pair
-      var y = stream_vt_foldleft_cloptr(x, empty_pair, lam (acc, next) => adjust_contents(acc, next)) : pair
-    in
-      g0int_div(g0int_mul(n, y.first), y.second)
-    end
-
-// The sum of all φ(m) for m between 1 and n. Note the use of refinement types
-// to prevent 0 from being passed as an argument. This function is actually
-// slower than the Haskell equivalent, as it uses a naïve algorithm.
-fn totient_sum(n : intGte(1)) : Intinf =
-  let
-    fnx loop { n : nat | n >= 1 }{ m : nat | m >= n } .<m-n>. (i : int(n), bound : int(m)) : Intinf =
-      if i < bound then
-        let
-          var x = loop(i + 1, bound)
-          var y = add_intinf0_int(x, witness(totient(i)))
-        in
-          y
-        end
-      else
-        int2intinf(witness(totient(i)))
-  in
-    loop(1, n)
-  end
diff --git a/ats-src/number-theory.dats b/ats-src/number-theory.dats
deleted file mode 100644
--- a/ats-src/number-theory.dats
+++ /dev/null
@@ -1,57 +0,0 @@
-#include "ats-src/number-theory-internal.dats"
-
-extern
-fun totient_ats { k : nat | k >= 2 }(int(k)) : int =
-  "mac#"
-
-extern
-fun count_divisors_ats { k : nat | k >= 2 }(int(k)) : int =
-  "mac#"
-
-extern
-fun little_omega_ats { n : nat | n > 0 } : int(n) -> int =
-  "mac#"
-
-extern
-fun sum_divisors_ats : { n : nat | n > 1 } int(n) -> int =
-  "mac#"
-
-extern
-fun jacobi_ats : (intGte(0), Odd) -> int =
-  "mac#"
-
-extern
-fun is_perfect_ats : intGt(1) -> bool =
-  "mac#"
-
-extern
-fun totient_sum_ats : intGte(1) -> Intinf =
-  "mac#"
-
-extern
-fun coprime_ats {k:nat}{n:nat} : (int(k), int(n)) -> bool =
-  "mac#"
-
-implement sum_divisors_ats (m) =
-  sum_divisors(m)
-
-implement count_divisors_ats (n) =
-  count_divisors(n)
-
-implement totient_ats (n) =
-  totient(n)
-
-implement little_omega_ats (n) =
-  little_omega(n)
-
-implement is_perfect_ats (n) =
-  is_perfect(n)
-
-implement jacobi_ats (m, n) =
-  jacobi(m, $UN.cast(n))
-
-implement totient_sum_ats (n) =
-  totient_sum(n)
-
-implement coprime_ats (m, n) =
-  is_coprime(m, n)
diff --git a/ats-src/numerics-internal.dats b/ats-src/numerics-internal.dats
deleted file mode 100644
--- a/ats-src/numerics-internal.dats
+++ /dev/null
@@ -1,126 +0,0 @@
-#include "share/atspre_staload.hats"
-#include "$PATSHOMELOCS/atscntrb-hx-intinf/mydepies.hats"
-#include "$PATSHOMELOCS/atscntrb-hx-intinf/mylibies.hats"
-
-staload "$PATSHOMELOCS/atscntrb-hx-intinf/SATS/intinf_vt.sats"
-staload "libats/libc/SATS/math.sats"
-staload UN = "prelude/SATS/unsafe.sats"
-
-// Existential types for even and odd numbers. These are only usable with the
-// ATS library.
-typedef Even = [n:nat] int(2*n)
-typedef Odd = [n:nat] int(2*n+1)
-
-// These types work... less well. I'm not sure what the story is with
-// multiplicative constraints in ATS, but in general they're unsolvable due to
-// Gödel's incompleteness theorem.
-typedef gprime(tk: tk, p: int) = { m, n : nat | m < 1 && m <= n && n < p && m*n != p && p > 1 } g1int(tk, p)
-typedef prime(p: int) = gprime(int_kind, p)
-typedef Prime = [p:nat] prime(p)
-
-fn witness(n : int) :<> [m:nat] int(m) =
-  $UN.cast(n)
-
-// Fast computation of Fibonacci numbers via GMP bindings.
-fun fib_gmp(n : intGte(0)) : Intinf =
-  let
-    var z = ptr_alloc()
-    var x = g0int2uint(n + 1)
-    val _ = $GMP.mpz_init(!(z.2))
-    val _ = $GMP.mpz_fib_uint(!(z.2), x)
-  in
-    $UN.castvwtp0(z)
-  end
-
-// Fast integer exponentiation. This performs O(log n) multiplications. This
-// function is mostly useful for exponentiation in modular arithmetic, as
-// it can overflow.
-fun exp {n:nat} .<n>. (x : int, n : int(n)) : int =
-  case+ x of
-    | 0 => 0
-    | x =>> 
-      begin
-        if n > 0 then
-          let
-            var n2 = half(n)
-            var i2 = n % 2
-          in
-            if i2 = 0 then
-              exp(x * x, n2)
-            else
-              let
-                var y = x * exp(x * x, n2)
-              in
-                y
-              end
-          end
-        else
-          1
-      end
-
-// Fast integer exponentiation, that mostly works as we would like.
-fun big_exp {n:nat} .<n>. (x : Intinf, n : int(n)) : Intinf =
-  if compare_intinf_int(x, 0) = 0 then
-    x
-  else
-    if n > 0 then
-      let
-        var n2 = half(n)
-        var i2 = n % 2
-      in
-        if i2 = 0 then
-          let
-            // FIXME copy it
-            var x0 = abs_intinf1(x)
-            var c = mul_intinf0_intinf1(x0, x)
-            val _ = intinf_free(x)
-          in
-            big_exp(c, n2)
-          end
-        else
-          let
-            var x0 = abs_intinf1(x)
-            var c0 = mul_intinf0_intinf1(x0, x)
-            var c1 = big_exp(c0, n2)
-            var c = mul_intinf0_intinf1(c1, x)
-            val _ = intinf_free(x)
-          in
-            c
-          end
-      end
-    else
-      (intinf_free(x) ; int2intinf(1))
-
-// square root is bounded for bounded k.
-fn sqrt_int(k : intGt(0)) :<> [m:nat] int(m) =
-  let
-    var bound: int = g0float2int(sqrt_float(g0int2float(k)))
-  in
-    witness(bound)
-  end
-
-// function to check primality
-fn is_prime(k : intGt(0)) :<> bool =
-  case+ k of
-    | 1 => false
-    | k => 
-      begin
-        let
-          fun loop {n:nat}{m:nat} .<max(0,m-n)>. (i : int(n), bound : int(m)) :<> bool =
-            if i < bound then
-              if k % i = 0 then
-                false
-              else
-                loop(i + 1, bound)
-            else
-              if i = bound then
-                if k % i = 0 then
-                  false
-                else
-                  true
-              else
-                true
-        in
-          loop(2, sqrt_int(k))
-        end
-      end
diff --git a/ats-src/numerics.dats b/ats-src/numerics.dats
deleted file mode 100644
--- a/ats-src/numerics.dats
+++ /dev/null
@@ -1,30 +0,0 @@
-#define ATS_DYNLOADFLAG 0
-
-#include "share/atspre_staload.hats"
-#include "ats-src/numerics-internal.dats"
-
-staload "$PATSHOMELOCS/atscntrb-hx-intinf/SATS/intinf_vt.sats"
-
-%{^
-#define ATS_MEMALLOC_LIBC
-#include "ccomp/runtime/pats_ccomp_memalloc_libc.h"
-#include "ccomp/runtime/pats_ccomp_runtime_memalloc.c"
-%}
-
-extern
-fun is_prime_ats { n : nat | n > 0 } : int(n) -> bool =
-  "mac#"
-
-extern
-fun exp_ats {m:nat} : ([n:nat] int(n), int(m)) -> int =
-  "mac#"
-
-extern
-fun fib_ats : intGte(0) -> Intinf =
-  "mac#"
-
-implement is_prime_ats (n) =
-  is_prime(n)
-
-implement exp_ats (m, n) =
-  exp(m, n)
diff --git a/atspkg.dhall b/atspkg.dhall
new file mode 100644
--- /dev/null
+++ b/atspkg.dhall
@@ -0,0 +1,85 @@
+{- Imports -}
+let prelude = https://raw.githubusercontent.com/vmchale/atspkg/master/ats-pkg/dhall/atspkg-prelude.dhall
+in
+
+let map = https://ipfs.io/ipfs/QmQ8w5PLcsNz56dMvRtq54vbuPe9cNnCCUXAQp6xLc6Ccx/Prelude/List/map
+in
+
+let not = https://ipfs.io/ipfs/QmQ8w5PLcsNz56dMvRtq54vbuPe9cNnCCUXAQp6xLc6Ccx/Prelude/Bool/not
+in
+
+{- Types -}
+let PreSrc = { atsSrc : Text, cTarget : Text }
+in
+
+{- Configuration variables -}
+let sourceBld = True
+in
+
+let withBench = True
+in
+
+{- Helper functions -}
+let asDats =
+  λ(x : Text) → "ats-src/${x}.dats"
+in
+
+let hsDatsSrc =
+  λ(x : Text) → { atsSrc = asDats x, cTarget = "cbits/${x}.c" }
+in
+
+let mapDatsSrc =
+  λ(x : List Text) → map Text PreSrc hsDatsSrc x
+in
+
+let moduleNames =
+  ["combinatorics", "number-theory", "numerics" ]
+in
+
+{- Build components -}
+let atsSource = if sourceBld
+  then
+    prelude.mapSrc
+      (mapDatsSrc moduleNames)
+  else
+    [] : List prelude.Src
+in
+
+let test = if withBench
+  then
+    [ prelude.bin ⫽
+      { src = "ats-src/bench.dats"
+      , target = "target/bench"
+      , libs = [ "gmp" ]
+      , gcBin = True
+      }
+    ]
+  else
+    [] : List prelude.Bin
+in
+
+let libraries = if not sourceBld
+  then
+    [ prelude.staticLib ⫽
+      { name = "numbertheory"
+      , src = (map Text Text asDats moduleNames)
+      , libTarget = "${prelude.cabalDir}/libnumbertheory.a"
+      }
+    ]
+  else
+    [] : List prelude.Lib
+in
+
+let dependencies = prelude.mapPlainDeps
+  ([ "atscntrb-hx-intinf" ]
+   # (if sourceBld then [ "ats-includes" ] else [] : List Text)
+   # (if withBench then [ "ats-bench" ] else [] : List Text))
+in
+
+{- Main -}
+prelude.default ⫽
+  { atsSource = atsSource
+  , test = test
+  , libraries = libraries
+  , dependencies = dependencies
+  }
diff --git a/bench/Bench.hs b/bench/Bench.hs
--- a/bench/Bench.hs
+++ b/bench/Bench.hs
@@ -4,7 +4,6 @@
 import qualified Math.Combinat.Numbers                 as Ext
 import qualified Math.NumberTheory.ArithmeticFunctions as Ext
 import           Numeric.Combinatorics
-import           Numeric.Integer
 import           Numeric.NumberTheory
 
 {-# SPECIALIZE hsIsPrime :: Int -> Bool #-}
diff --git a/cbits/combinatorics.c b/cbits/combinatorics.c
--- a/cbits/combinatorics.c
+++ b/cbits/combinatorics.c
@@ -1,7 +1,7 @@
 /*
 **
 ** The C code is generated by [ATS/Postiats-0-3-10]
-** The starting compilation time is: 2018-4-15: 21h:51m
+** The starting compilation time is: 2018-4-22: 21h:35m
 **
 */
 
@@ -774,7 +774,7 @@
 #endif // end of [QUALIFIED]
 
 /*
-/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 430(line=11, offs=4) -- 1128(line=35, offs=6)
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 492(line=15, offs=4) -- 1190(line=39, offs=6)
 */
 /*
 local: 
@@ -794,11 +794,11 @@
 /* tmpvardeclst(end) */
 ATSfunbody_beg()
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 430(line=11, offs=4) -- 1128(line=35, offs=6)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 492(line=15, offs=4) -- 1190(line=39, offs=6)
 */
 ATSINSflab(__patsflab_derangements_0):
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 483(line=12, offs=3) -- 1128(line=35, offs=6)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 545(line=16, offs=3) -- 1190(line=39, offs=6)
 */
 /*
 letpush(beg)
@@ -808,7 +808,7 @@
 */
 
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 970(line=30, offs=5) -- 1122(line=34, offs=59)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 1032(line=34, offs=5) -- 1184(line=38, offs=59)
 */
 ATScaseof_beg()
 /*
@@ -816,15 +816,15 @@
 */
 ATSbranch_beg()
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 989(line=31, offs=9) -- 990(line=31, offs=10)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 1051(line=35, offs=9) -- 1052(line=35, offs=10)
 */
 ATSINSlab(__atstmplab0):
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 458(line=11, offs=32) -- 459(line=11, offs=33)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 520(line=15, offs=32) -- 521(line=15, offs=33)
 */
 ATSifnthen(ATSCKpat_int(arg0, ATSPMVint(0))) { ATSINSgoto(__atstmplab2) ; } ;
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 990(line=31, offs=10) -- 990(line=31, offs=10)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 1052(line=35, offs=10) -- 1052(line=35, offs=10)
 */
 ATSINSlab(__atstmplab1):
 /*
@@ -834,7 +834,7 @@
 ibranch-mbody:
 */
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 994(line=31, offs=14) -- 1007(line=31, offs=27)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 1056(line=35, offs=14) -- 1069(line=35, offs=27)
 */
 ATSINSmove(tmpret0, ATSCNTRB_056_HX_056_intinf_vt__intinf_make_int__15__1(ATSPMVi0nt(1))) ;
 
@@ -842,15 +842,15 @@
 
 ATSbranch_beg()
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 1016(line=32, offs=9) -- 1017(line=32, offs=10)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 1078(line=36, offs=9) -- 1079(line=36, offs=10)
 */
 ATSINSlab(__atstmplab2):
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 458(line=11, offs=32) -- 459(line=11, offs=33)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 520(line=15, offs=32) -- 521(line=15, offs=33)
 */
 ATSifnthen(ATSCKpat_int(arg0, ATSPMVint(1))) { ATSINSgoto(__atstmplab4) ; } ;
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 1017(line=32, offs=10) -- 1017(line=32, offs=10)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 1079(line=36, offs=10) -- 1079(line=36, offs=10)
 */
 ATSINSlab(__atstmplab3):
 /*
@@ -860,7 +860,7 @@
 ibranch-mbody:
 */
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 1022(line=32, offs=15) -- 1035(line=32, offs=28)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 1084(line=36, offs=15) -- 1097(line=36, offs=28)
 */
 ATSINSmove(tmpret0, ATSCNTRB_056_HX_056_intinf_vt__intinf_make_int__15__2(ATSPMVi0nt(0))) ;
 
@@ -868,15 +868,15 @@
 
 ATSbranch_beg()
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 1044(line=33, offs=9) -- 1045(line=33, offs=10)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 1106(line=37, offs=9) -- 1107(line=37, offs=10)
 */
 ATSINSlab(__atstmplab4):
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 458(line=11, offs=32) -- 459(line=11, offs=33)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 520(line=15, offs=32) -- 521(line=15, offs=33)
 */
 ATSifnthen(ATSCKpat_int(arg0, ATSPMVint(2))) { ATSINSgoto(__atstmplab6) ; } ;
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 1045(line=33, offs=10) -- 1045(line=33, offs=10)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 1107(line=37, offs=10) -- 1107(line=37, offs=10)
 */
 ATSINSlab(__atstmplab5):
 /*
@@ -886,7 +886,7 @@
 ibranch-mbody:
 */
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 1050(line=33, offs=15) -- 1063(line=33, offs=28)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 1112(line=37, offs=15) -- 1125(line=37, offs=28)
 */
 ATSINSmove(tmpret0, ATSCNTRB_056_HX_056_intinf_vt__intinf_make_int__15__3(ATSPMVi0nt(1))) ;
 
@@ -894,7 +894,7 @@
 
 ATSbranch_beg()
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 1073(line=34, offs=10) -- 1073(line=34, offs=10)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 1135(line=38, offs=10) -- 1135(line=38, offs=10)
 */
 ATSINSlab(__atstmplab6):
 /*
@@ -904,22 +904,22 @@
 ibranch-mbody:
 */
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 1083(line=34, offs=20) -- 1088(line=34, offs=25)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 1145(line=38, offs=20) -- 1150(line=38, offs=25)
 */
 ATSINSmove(tmp45, atspre_g1int_sub_int(arg0, ATSPMVi0nt(1))) ;
 
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 1093(line=34, offs=30) -- 1106(line=34, offs=43)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 1155(line=38, offs=30) -- 1168(line=38, offs=43)
 */
 ATSINSmove(tmp46, ATSCNTRB_056_HX_056_intinf_vt__intinf_make_int__15__4(ATSPMVi0nt(1))) ;
 
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 1108(line=34, offs=45) -- 1121(line=34, offs=58)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 1170(line=38, offs=45) -- 1183(line=38, offs=58)
 */
 ATSINSmove(tmp51, ATSCNTRB_056_HX_056_intinf_vt__intinf_make_int__15__5(ATSPMVi0nt(0))) ;
 
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 1078(line=34, offs=15) -- 1122(line=34, offs=59)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 1140(line=38, offs=15) -- 1184(line=38, offs=59)
 */
 ATSINSmove(tmpret0, loop_1(tmp45, ATSPMVi0nt(2), tmp46, tmp51)) ;
 
@@ -931,7 +931,7 @@
 ATScaseof_end()
 
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 483(line=12, offs=3) -- 1128(line=35, offs=6)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 545(line=16, offs=3) -- 1190(line=39, offs=6)
 */
 /*
 INSletpop()
@@ -941,7 +941,7 @@
 } /* end of [derangements_0] */
 
 /*
-/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 495(line=13, offs=9) -- 960(line=28, offs=12)
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 557(line=17, offs=9) -- 1022(line=32, offs=12)
 */
 /*
 local: loop_1$0(level=1)
@@ -969,45 +969,45 @@
 /* tmpvardeclst(end) */
 ATSfunbody_beg()
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 495(line=13, offs=9) -- 960(line=28, offs=12)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 557(line=17, offs=9) -- 1022(line=32, offs=12)
 */
 ATSINSflab(__patsflab_loop_1):
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 619(line=14, offs=10) -- 624(line=14, offs=15)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 681(line=18, offs=10) -- 686(line=18, offs=15)
 */
 ATSINSmove(tmp2, ATSLIB_056_prelude__lt_g1int_int__2__1(arg1, arg0)) ;
 
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 616(line=14, offs=7) -- 960(line=28, offs=12)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 678(line=18, offs=7) -- 1022(line=32, offs=12)
 */
 ATSif(
 tmp2
 ) ATSthen() {
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 638(line=15, offs=9) -- 782(line=20, offs=12)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 700(line=19, offs=9) -- 844(line=24, offs=12)
 */
 /*
 letpush(beg)
 */
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 656(line=16, offs=15) -- 657(line=16, offs=16)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 718(line=20, offs=15) -- 719(line=20, offs=16)
 */
 /*
 ATSINStmpdec(tmpref7) ;
 */
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 660(line=16, offs=19) -- 687(line=16, offs=46)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 722(line=20, offs=19) -- 749(line=20, offs=46)
 */
 ATSINSmove(tmpref7, ATSCNTRB_056_HX_056_intinf_vt__add_intinf0_intinf1__6__1(arg3, ATSPMVrefarg0(arg2))) ;
 
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 702(line=17, offs=15) -- 703(line=17, offs=16)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 764(line=21, offs=15) -- 765(line=21, offs=16)
 */
 /*
 ATSINStmpdec(tmpref12) ;
 */
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 706(line=17, offs=19) -- 727(line=17, offs=40)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 768(line=21, offs=19) -- 789(line=21, offs=40)
 */
 ATSINSmove(tmpref12, ATSCNTRB_056_HX_056_intinf_vt__mul_intinf0_int__8__1(tmpref7, arg1)) ;
 
@@ -1016,12 +1016,12 @@
 */
 
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 757(line=19, offs=19) -- 762(line=19, offs=24)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 819(line=23, offs=19) -- 824(line=23, offs=24)
 */
 ATSINSmove(tmp17, atspre_g1int_add_int(arg1, ATSPMVi0nt(1))) ;
 
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 749(line=19, offs=11) -- 770(line=19, offs=32)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 811(line=23, offs=11) -- 832(line=23, offs=32)
 */
 ATStailcal_beg()
 ATSINSmove_tlcal(apy0, arg0) ;
@@ -1036,42 +1036,42 @@
 ATStailcal_end()
 
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 638(line=15, offs=9) -- 782(line=20, offs=12)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 700(line=19, offs=9) -- 844(line=24, offs=12)
 */
 /*
 INSletpop()
 */
 } ATSelse() {
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 802(line=22, offs=9) -- 960(line=28, offs=12)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 864(line=26, offs=9) -- 1022(line=32, offs=12)
 */
 /*
 letpush(beg)
 */
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 820(line=23, offs=15) -- 821(line=23, offs=16)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 882(line=27, offs=15) -- 883(line=27, offs=16)
 */
 /*
 ATSINStmpdec(tmpref18) ;
 */
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 824(line=23, offs=19) -- 851(line=23, offs=46)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 886(line=27, offs=19) -- 913(line=27, offs=46)
 */
 ATSINSmove(tmpref18, ATSCNTRB_056_HX_056_intinf_vt__add_intinf0_intinf1__6__2(arg3, ATSPMVrefarg0(arg2))) ;
 
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 870(line=24, offs=19) -- 884(line=24, offs=33)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 932(line=28, offs=19) -- 946(line=28, offs=33)
 */
 ATSINSmove_void(tmp21, ATSCNTRB_056_HX_056_intinf_vt__intinf_free__12__1(arg2)) ;
 
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 900(line=25, offs=15) -- 901(line=25, offs=16)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 962(line=29, offs=15) -- 963(line=29, offs=16)
 */
 /*
 ATSINStmpdec(tmpref26) ;
 */
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 904(line=25, offs=19) -- 925(line=25, offs=40)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 966(line=29, offs=19) -- 987(line=29, offs=40)
 */
 ATSINSmove(tmpref26, ATSCNTRB_056_HX_056_intinf_vt__mul_intinf0_int__8__2(tmpref18, arg1)) ;
 
@@ -1080,11 +1080,11 @@
 */
 
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 947(line=27, offs=11) -- 948(line=27, offs=12)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 1009(line=31, offs=11) -- 1010(line=31, offs=12)
 */
 ATSINSmove(tmpret1, tmpref26) ;
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 802(line=22, offs=9) -- 960(line=28, offs=12)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 864(line=26, offs=9) -- 1022(line=32, offs=12)
 */
 /*
 INSletpop()
@@ -2223,7 +2223,7 @@
 } /* end of [ATSLIB_056_prelude__ptr_alloc__17__5] */
 
 /*
-/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 1134(line=37, offs=5) -- 1304(line=41, offs=59)
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 2170(line=74, offs=5) -- 2340(line=78, offs=59)
 */
 /*
 local: fact_28$0(level=0)
@@ -2243,11 +2243,11 @@
 /* tmpvardeclst(end) */
 ATSfunbody_beg()
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 1134(line=37, offs=5) -- 1304(line=41, offs=59)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 2170(line=74, offs=5) -- 2340(line=78, offs=59)
 */
 ATSINSflab(__patsflab_fact_28):
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 1185(line=38, offs=3) -- 1304(line=41, offs=59)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 2221(line=75, offs=3) -- 2340(line=78, offs=59)
 */
 ATScaseof_beg()
 /*
@@ -2255,15 +2255,15 @@
 */
 ATSbranch_beg()
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 1202(line=39, offs=7) -- 1203(line=39, offs=8)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 2238(line=76, offs=7) -- 2239(line=76, offs=8)
 */
 ATSINSlab(__atstmplab7):
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 1154(line=37, offs=25) -- 1155(line=37, offs=26)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 2190(line=74, offs=25) -- 2191(line=74, offs=26)
 */
 ATSifnthen(ATSCKpat_int(arg0, ATSPMVint(0))) { ATSINSgoto(__atstmplab9) ; } ;
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 1203(line=39, offs=8) -- 1203(line=39, offs=8)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 2239(line=76, offs=8) -- 2239(line=76, offs=8)
 */
 ATSINSlab(__atstmplab8):
 /*
@@ -2273,7 +2273,7 @@
 ibranch-mbody:
 */
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 1207(line=39, offs=12) -- 1220(line=39, offs=25)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 2243(line=76, offs=12) -- 2256(line=76, offs=25)
 */
 ATSINSmove(tmpret56, ATSCNTRB_056_HX_056_intinf_vt__intinf_make_int__15__6(ATSPMVi0nt(1))) ;
 
@@ -2281,15 +2281,15 @@
 
 ATSbranch_beg()
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 1227(line=40, offs=7) -- 1228(line=40, offs=8)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 2263(line=77, offs=7) -- 2264(line=77, offs=8)
 */
 ATSINSlab(__atstmplab9):
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 1154(line=37, offs=25) -- 1155(line=37, offs=26)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 2190(line=74, offs=25) -- 2191(line=74, offs=26)
 */
 ATSifnthen(ATSCKpat_int(arg0, ATSPMVint(1))) { ATSINSgoto(__atstmplab11) ; } ;
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 1228(line=40, offs=8) -- 1228(line=40, offs=8)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 2264(line=77, offs=8) -- 2264(line=77, offs=8)
 */
 ATSINSlab(__atstmplab10):
 /*
@@ -2299,7 +2299,7 @@
 ibranch-mbody:
 */
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 1232(line=40, offs=12) -- 1245(line=40, offs=25)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 2268(line=77, offs=12) -- 2281(line=77, offs=25)
 */
 ATSINSmove(tmpret56, ATSCNTRB_056_HX_056_intinf_vt__intinf_make_int__15__7(ATSPMVi0nt(1))) ;
 
@@ -2307,7 +2307,7 @@
 
 ATSbranch_beg()
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 1253(line=41, offs=8) -- 1253(line=41, offs=8)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 2289(line=78, offs=8) -- 2289(line=78, offs=8)
 */
 ATSINSlab(__atstmplab11):
 /*
@@ -2317,22 +2317,22 @@
 ibranch-mbody:
 */
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 1293(line=41, offs=48) -- 1298(line=41, offs=53)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 2329(line=78, offs=48) -- 2334(line=78, offs=53)
 */
 ATSINSmove(tmp69, atspre_g1int_sub_int(arg0, ATSPMVi0nt(1))) ;
 
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 1288(line=41, offs=43) -- 1299(line=41, offs=54)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 2324(line=78, offs=43) -- 2335(line=78, offs=54)
 */
 ATSINSmove(tmp68, fact_28(tmp69)) ;
 
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 1272(line=41, offs=27) -- 1303(line=41, offs=58)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 2308(line=78, offs=27) -- 2339(line=78, offs=58)
 */
 ATSINSmove(tmp65, ATSCNTRB_056_HX_056_intinf_vt__mul_intinf0_int__8__3(tmp68, arg0)) ;
 
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 1258(line=41, offs=13) -- 1304(line=41, offs=59)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 2294(line=78, offs=13) -- 2340(line=78, offs=59)
 */
 ATSINSmove(tmpret56, ATSPMVcastfn(castvwtp0, atstkind_type(atstype_ptrk), tmp65)) ;
 ATSbranch_end()
@@ -2597,7 +2597,7 @@
 } /* end of [ATSCNTRB_056_HX_056_intinf_vt__mul_intinf0_int__8__3] */
 
 /*
-/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 1380(line=44, offs=5) -- 1588(line=53, offs=8)
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 2416(line=81, offs=5) -- 2624(line=90, offs=8)
 */
 /*
 local: dfact_34$0(level=0)
@@ -2617,11 +2617,11 @@
 /* tmpvardeclst(end) */
 ATSfunbody_beg()
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 1380(line=44, offs=5) -- 1588(line=53, offs=8)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 2416(line=81, offs=5) -- 2624(line=90, offs=8)
 */
 ATSINSflab(__patsflab_dfact_34):
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 1426(line=45, offs=3) -- 1588(line=53, offs=8)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 2462(line=82, offs=3) -- 2624(line=90, offs=8)
 */
 ATScaseof_beg()
 /*
@@ -2629,15 +2629,15 @@
 */
 ATSbranch_beg()
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 1443(line=46, offs=7) -- 1444(line=46, offs=8)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 2479(line=83, offs=7) -- 2480(line=83, offs=8)
 */
 ATSINSlab(__atstmplab12):
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 1401(line=44, offs=26) -- 1402(line=44, offs=27)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 2437(line=81, offs=26) -- 2438(line=81, offs=27)
 */
 ATSifnthen(ATSCKpat_int(arg0, ATSPMVint(0))) { ATSINSgoto(__atstmplab14) ; } ;
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 1444(line=46, offs=8) -- 1444(line=46, offs=8)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 2480(line=83, offs=8) -- 2480(line=83, offs=8)
 */
 ATSINSlab(__atstmplab13):
 /*
@@ -2647,7 +2647,7 @@
 ibranch-mbody:
 */
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 1448(line=46, offs=12) -- 1461(line=46, offs=25)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 2484(line=83, offs=12) -- 2497(line=83, offs=25)
 */
 ATSINSmove(tmpret70, ATSCNTRB_056_HX_056_intinf_vt__intinf_make_int__15__8(ATSPMVi0nt(1))) ;
 
@@ -2655,15 +2655,15 @@
 
 ATSbranch_beg()
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 1468(line=47, offs=7) -- 1469(line=47, offs=8)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 2504(line=84, offs=7) -- 2505(line=84, offs=8)
 */
 ATSINSlab(__atstmplab14):
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 1401(line=44, offs=26) -- 1402(line=44, offs=27)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 2437(line=81, offs=26) -- 2438(line=81, offs=27)
 */
 ATSifnthen(ATSCKpat_int(arg0, ATSPMVint(1))) { ATSINSgoto(__atstmplab16) ; } ;
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 1469(line=47, offs=8) -- 1469(line=47, offs=8)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 2505(line=84, offs=8) -- 2505(line=84, offs=8)
 */
 ATSINSlab(__atstmplab15):
 /*
@@ -2673,7 +2673,7 @@
 ibranch-mbody:
 */
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 1473(line=47, offs=12) -- 1486(line=47, offs=25)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 2509(line=84, offs=12) -- 2522(line=84, offs=25)
 */
 ATSINSmove(tmpret70, ATSCNTRB_056_HX_056_intinf_vt__intinf_make_int__15__9(ATSPMVi0nt(1))) ;
 
@@ -2681,7 +2681,7 @@
 
 ATSbranch_beg()
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 1494(line=48, offs=8) -- 1494(line=48, offs=8)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 2530(line=85, offs=8) -- 2530(line=85, offs=8)
 */
 ATSINSlab(__atstmplab16):
 /*
@@ -2691,35 +2691,35 @@
 ibranch-mbody:
 */
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 1499(line=48, offs=13) -- 1588(line=53, offs=8)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 2535(line=85, offs=13) -- 2624(line=90, offs=8)
 */
 /*
 letpush(beg)
 */
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 1513(line=49, offs=11) -- 1514(line=49, offs=12)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 2549(line=86, offs=11) -- 2550(line=86, offs=12)
 */
 /*
 ATSINStmpdec(tmpref79) ;
 */
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 1523(line=49, offs=21) -- 1528(line=49, offs=26)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 2559(line=86, offs=21) -- 2564(line=86, offs=26)
 */
 ATSINSmove(tmp80, atspre_g1int_sub_int(arg0, ATSPMVi0nt(2))) ;
 
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 1517(line=49, offs=15) -- 1529(line=49, offs=27)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 2553(line=86, offs=15) -- 2565(line=86, offs=27)
 */
 ATSINSmove(tmpref79, dfact_34(tmp80)) ;
 
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 1540(line=50, offs=11) -- 1541(line=50, offs=12)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 2576(line=87, offs=11) -- 2577(line=87, offs=12)
 */
 /*
 ATSINStmpdec(tmpref81) ;
 */
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 1544(line=50, offs=15) -- 1565(line=50, offs=36)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 2580(line=87, offs=15) -- 2601(line=87, offs=36)
 */
 ATSINSmove(tmpref81, ATSCNTRB_056_HX_056_intinf_vt__mul_intinf0_int__8__4(tmpref79, arg0)) ;
 
@@ -2728,11 +2728,11 @@
 */
 
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 1579(line=52, offs=7) -- 1580(line=52, offs=8)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 2615(line=89, offs=7) -- 2616(line=89, offs=8)
 */
 ATSINSmove(tmpret70, tmpref81) ;
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 1499(line=48, offs=13) -- 1588(line=53, offs=8)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 2535(line=85, offs=13) -- 2624(line=90, offs=8)
 */
 /*
 INSletpop()
@@ -2999,7 +2999,7 @@
 } /* end of [ATSCNTRB_056_HX_056_intinf_vt__mul_intinf0_int__8__4] */
 
 /*
-/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 1651(line=56, offs=4) -- 1858(line=64, offs=6)
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 2687(line=93, offs=4) -- 2894(line=101, offs=6)
 */
 /*
 local: fact_28$0(level=0)
@@ -3021,55 +3021,55 @@
 /* tmpvardeclst(end) */
 ATSfunbody_beg()
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 1651(line=56, offs=4) -- 1858(line=64, offs=6)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 2687(line=93, offs=4) -- 2894(line=101, offs=6)
 */
 ATSINSflab(__patsflab_permutations_40):
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 1729(line=57, offs=3) -- 1858(line=64, offs=6)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 2765(line=94, offs=3) -- 2894(line=101, offs=6)
 */
 /*
 letpush(beg)
 */
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 1741(line=58, offs=9) -- 1742(line=58, offs=10)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 2777(line=95, offs=9) -- 2778(line=95, offs=10)
 */
 /*
 ATSINStmpdec(tmpref85) ;
 */
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 1745(line=58, offs=13) -- 1751(line=58, offs=19)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 2781(line=95, offs=13) -- 2787(line=95, offs=19)
 */
 ATSINSmove(tmpref85, fact_28(arg0)) ;
 
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 1761(line=59, offs=9) -- 1762(line=59, offs=10)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 2797(line=96, offs=9) -- 2798(line=96, offs=10)
 */
 /*
 ATSINStmpdec(tmpref86) ;
 */
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 1770(line=59, offs=18) -- 1775(line=59, offs=23)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 2806(line=96, offs=18) -- 2811(line=96, offs=23)
 */
 ATSINSmove(tmp87, atspre_g1int_sub_int(arg0, arg1)) ;
 
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 1765(line=59, offs=13) -- 1776(line=59, offs=24)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 2801(line=96, offs=13) -- 2812(line=96, offs=24)
 */
 ATSINSmove(tmpref86, fact_28(tmp87)) ;
 
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 1785(line=60, offs=9) -- 1786(line=60, offs=10)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 2821(line=97, offs=9) -- 2822(line=97, offs=10)
 */
 /*
 ATSINStmpdec(tmpref88) ;
 */
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 1789(line=60, offs=13) -- 1814(line=60, offs=38)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 2825(line=97, offs=13) -- 2850(line=97, offs=38)
 */
 ATSINSmove(tmpref88, ATSCNTRB_056_HX_056_intinf_vt__div_intinf0_intinf1__41__1(tmpref85, ATSPMVrefarg0(tmpref86))) ;
 
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 1827(line=61, offs=13) -- 1840(line=61, offs=26)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 2863(line=98, offs=13) -- 2876(line=98, offs=26)
 */
 ATSINSmove_void(tmp93, ATSCNTRB_056_HX_056_intinf_vt__intinf_free__12__2(tmpref86)) ;
 
@@ -3078,11 +3078,11 @@
 */
 
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 1851(line=63, offs=5) -- 1852(line=63, offs=6)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 2887(line=100, offs=5) -- 2888(line=100, offs=6)
 */
 ATSINSmove(tmpret84, tmpref88) ;
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 1729(line=57, offs=3) -- 1858(line=64, offs=6)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 2765(line=94, offs=3) -- 2894(line=101, offs=6)
 */
 /*
 INSletpop()
@@ -3264,7 +3264,7 @@
 } /* end of [ATSCNTRB_056_HX_056_intinf_vt__intinf_free__12__2] */
 
 /*
-/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 1910(line=67, offs=4) -- 2527(line=90, offs=6)
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 2946(line=104, offs=4) -- 3563(line=127, offs=6)
 */
 /*
 local: fact_28$0(level=0)
@@ -3285,11 +3285,11 @@
 /* tmpvardeclst(end) */
 ATSfunbody_beg()
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 1910(line=67, offs=4) -- 2527(line=90, offs=6)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 2946(line=104, offs=4) -- 3563(line=127, offs=6)
 */
 ATSINSflab(__patsflab_catalan_44):
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 1951(line=68, offs=3) -- 2527(line=90, offs=6)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 2987(line=105, offs=3) -- 3563(line=127, offs=6)
 */
 /*
 letpush(beg)
@@ -3299,7 +3299,7 @@
 */
 
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 2264(line=79, offs=5) -- 2521(line=89, offs=10)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 3300(line=116, offs=5) -- 3557(line=126, offs=10)
 */
 ATScaseof_beg()
 /*
@@ -3307,15 +3307,15 @@
 */
 ATSbranch_beg()
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 2283(line=80, offs=9) -- 2284(line=80, offs=10)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 3319(line=117, offs=9) -- 3320(line=117, offs=10)
 */
 ATSINSlab(__atstmplab20):
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 1926(line=67, offs=20) -- 1927(line=67, offs=21)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 2962(line=104, offs=20) -- 2963(line=104, offs=21)
 */
 ATSifnthen(ATSCKpat_int(arg0, ATSPMVint(0))) { ATSINSgoto(__atstmplab22) ; } ;
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 2284(line=80, offs=10) -- 2284(line=80, offs=10)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 3320(line=117, offs=10) -- 3320(line=117, offs=10)
 */
 ATSINSlab(__atstmplab21):
 /*
@@ -3325,7 +3325,7 @@
 ibranch-mbody:
 */
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 2288(line=80, offs=14) -- 2301(line=80, offs=27)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 3324(line=117, offs=14) -- 3337(line=117, offs=27)
 */
 ATSINSmove(tmpret96, ATSCNTRB_056_HX_056_intinf_vt__intinf_make_int__15__11(ATSPMVi0nt(1))) ;
 
@@ -3333,15 +3333,15 @@
 
 ATSbranch_beg()
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 2310(line=81, offs=9) -- 2311(line=81, offs=10)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 3346(line=118, offs=9) -- 3347(line=118, offs=10)
 */
 ATSINSlab(__atstmplab22):
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 1926(line=67, offs=20) -- 1927(line=67, offs=21)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 2962(line=104, offs=20) -- 2963(line=104, offs=21)
 */
 ATSifnthen(ATSCKpat_int(arg0, ATSPMVint(1))) { ATSINSgoto(__atstmplab24) ; } ;
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 2311(line=81, offs=10) -- 2311(line=81, offs=10)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 3347(line=118, offs=10) -- 3347(line=118, offs=10)
 */
 ATSINSlab(__atstmplab23):
 /*
@@ -3351,7 +3351,7 @@
 ibranch-mbody:
 */
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 2315(line=81, offs=14) -- 2328(line=81, offs=27)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 3351(line=118, offs=14) -- 3364(line=118, offs=27)
 */
 ATSINSmove(tmpret96, ATSCNTRB_056_HX_056_intinf_vt__intinf_make_int__15__12(ATSPMVi0nt(1))) ;
 
@@ -3359,7 +3359,7 @@
 
 ATSbranch_beg()
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 2338(line=82, offs=10) -- 2338(line=82, offs=10)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 3374(line=119, offs=10) -- 3374(line=119, offs=10)
 */
 ATSINSlab(__atstmplab24):
 /*
@@ -3369,46 +3369,46 @@
 ibranch-mbody:
 */
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 2343(line=82, offs=15) -- 2521(line=89, offs=10)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 3379(line=119, offs=15) -- 3557(line=126, offs=10)
 */
 /*
 letpush(beg)
 */
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 2359(line=83, offs=13) -- 2360(line=83, offs=14)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 3395(line=120, offs=13) -- 3396(line=120, offs=14)
 */
 /*
 ATSINStmpdec(tmpref117) ;
 */
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 2363(line=83, offs=17) -- 2379(line=83, offs=33)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 3399(line=120, offs=17) -- 3415(line=120, offs=33)
 */
 ATSINSmove(tmpref117, numerator_loop_45(arg0, arg0)) ;
 
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 2393(line=84, offs=13) -- 2394(line=84, offs=14)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 3429(line=121, offs=13) -- 3430(line=121, offs=14)
 */
 /*
 ATSINStmpdec(tmpref118) ;
 */
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 2397(line=84, offs=17) -- 2403(line=84, offs=23)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 3433(line=121, offs=17) -- 3439(line=121, offs=23)
 */
 ATSINSmove(tmpref118, fact_28(arg0)) ;
 
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 2417(line=85, offs=13) -- 2418(line=85, offs=14)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 3453(line=122, offs=13) -- 3454(line=122, offs=14)
 */
 /*
 ATSINStmpdec(tmpref119) ;
 */
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 2421(line=85, offs=17) -- 2446(line=85, offs=42)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 3457(line=122, offs=17) -- 3482(line=122, offs=42)
 */
 ATSINSmove(tmpref119, ATSCNTRB_056_HX_056_intinf_vt__div_intinf0_intinf1__41__2(tmpref117, ATSPMVrefarg0(tmpref118))) ;
 
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 2463(line=86, offs=17) -- 2476(line=86, offs=30)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 3499(line=123, offs=17) -- 3512(line=123, offs=30)
 */
 ATSINSmove_void(tmp122, ATSCNTRB_056_HX_056_intinf_vt__intinf_free__12__3(tmpref118)) ;
 
@@ -3417,11 +3417,11 @@
 */
 
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 2495(line=88, offs=9) -- 2510(line=88, offs=24)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 3531(line=125, offs=9) -- 3546(line=125, offs=24)
 */
 ATSINSmove(tmpret96, ATSPMVcastfn(castvwtp0, atstkind_type(atstype_ptrk), tmpref119)) ;
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 2343(line=82, offs=15) -- 2521(line=89, offs=10)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 3379(line=119, offs=15) -- 3557(line=126, offs=10)
 */
 /*
 INSletpop()
@@ -3434,7 +3434,7 @@
 ATScaseof_end()
 
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 1951(line=68, offs=3) -- 2527(line=90, offs=6)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 2987(line=105, offs=3) -- 3563(line=127, offs=6)
 */
 /*
 INSletpop()
@@ -3444,7 +3444,7 @@
 } /* end of [catalan_44] */
 
 /*
-/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 1963(line=69, offs=9) -- 2254(line=77, offs=12)
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 2999(line=106, offs=9) -- 3290(line=114, offs=12)
 */
 /*
 local: numerator_loop_45$0(level=1)
@@ -3466,11 +3466,11 @@
 /* tmpvardeclst(end) */
 ATSfunbody_beg()
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 1963(line=69, offs=9) -- 2254(line=77, offs=12)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 2999(line=106, offs=9) -- 3290(line=114, offs=12)
 */
 ATSINSflab(__patsflab_numerator_loop_45):
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 2057(line=70, offs=7) -- 2254(line=77, offs=12)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 3093(line=107, offs=7) -- 3290(line=114, offs=12)
 */
 ATScaseof_beg()
 /*
@@ -3478,15 +3478,15 @@
 */
 ATSbranch_beg()
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 2078(line=71, offs=11) -- 2079(line=71, offs=12)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 3114(line=108, offs=11) -- 3115(line=108, offs=12)
 */
 ATSINSlab(__atstmplab17):
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 2005(line=69, offs=51) -- 2006(line=69, offs=52)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 3041(line=106, offs=51) -- 3042(line=106, offs=52)
 */
 ATSifnthen(ATSCKpat_int(arg0, ATSPMVint(2))) { ATSINSgoto(__atstmplab19) ; } ;
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 2079(line=71, offs=12) -- 2079(line=71, offs=12)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 3115(line=108, offs=12) -- 3115(line=108, offs=12)
 */
 ATSINSlab(__atstmplab18):
 /*
@@ -3496,12 +3496,12 @@
 ibranch-mbody:
 */
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 2083(line=71, offs=16) -- 2100(line=71, offs=33)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 3119(line=108, offs=16) -- 3136(line=108, offs=33)
 */
 ATSINSmove(tmp102, atspre_g1int_add_int(env0, ATSPMVi0nt(2))) ;
 
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 2083(line=71, offs=16) -- 2100(line=71, offs=33)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 3119(line=108, offs=16) -- 3136(line=108, offs=33)
 */
 ATSINSmove(tmpret97, ATSCNTRB_056_HX_056_intinf_vt__intinf_make_int__15__10(tmp102)) ;
 
@@ -3509,7 +3509,7 @@
 
 ATSbranch_beg()
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 2112(line=72, offs=12) -- 2112(line=72, offs=12)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 3148(line=109, offs=12) -- 3148(line=109, offs=12)
 */
 ATSINSlab(__atstmplab19):
 /*
@@ -3519,40 +3519,40 @@
 ibranch-mbody:
 */
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 2117(line=72, offs=17) -- 2254(line=77, offs=12)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 3153(line=109, offs=17) -- 3290(line=114, offs=12)
 */
 /*
 letpush(beg)
 */
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 2135(line=73, offs=15) -- 2136(line=73, offs=16)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 3171(line=110, offs=15) -- 3172(line=110, offs=16)
 */
 /*
 ATSINStmpdec(tmpref103) ;
 */
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 2154(line=73, offs=34) -- 2159(line=73, offs=39)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 3190(line=110, offs=34) -- 3195(line=110, offs=39)
 */
 ATSINSmove(tmp104, atspre_g1int_sub_int(arg0, ATSPMVi0nt(1))) ;
 
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 2139(line=73, offs=19) -- 2160(line=73, offs=40)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 3175(line=110, offs=19) -- 3196(line=110, offs=40)
 */
 ATSINSmove(tmpref103, numerator_loop_45(env0, tmp104)) ;
 
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 2175(line=74, offs=15) -- 2176(line=74, offs=16)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 3211(line=111, offs=15) -- 3212(line=111, offs=16)
 */
 /*
 ATSINStmpdec(tmpref105) ;
 */
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 2198(line=74, offs=38) -- 2203(line=74, offs=43)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 3234(line=111, offs=38) -- 3239(line=111, offs=43)
 */
 ATSINSmove(tmp108, atspre_g1int_add_int(env0, arg0)) ;
 
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 2179(line=74, offs=19) -- 2204(line=74, offs=44)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 3215(line=111, offs=19) -- 3240(line=111, offs=44)
 */
 ATSINSmove(tmpref105, ATSCNTRB_056_HX_056_intinf_vt__mul_intinf0_int__8__5(tmpref103, tmp108)) ;
 
@@ -3561,11 +3561,11 @@
 */
 
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 2226(line=76, offs=11) -- 2241(line=76, offs=26)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 3262(line=113, offs=11) -- 3277(line=113, offs=26)
 */
 ATSINSmove(tmpret97, ATSPMVcastfn(castvwtp0, atstkind_type(atstype_ptrk), tmpref105)) ;
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 2117(line=72, offs=17) -- 2254(line=77, offs=12)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 3153(line=109, offs=17) -- 3290(line=114, offs=12)
 */
 /*
 INSletpop()
@@ -4043,7 +4043,7 @@
 } /* end of [ATSCNTRB_056_HX_056_intinf_vt__intinf_free__12__3] */
 
 /*
-/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 2590(line=93, offs=4) -- 3292(line=117, offs=6)
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 3626(line=130, offs=4) -- 4328(line=154, offs=6)
 */
 /*
 local: fact_28$0(level=0)
@@ -4064,11 +4064,11 @@
 /* tmpvardeclst(end) */
 ATSfunbody_beg()
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 2590(line=93, offs=4) -- 3292(line=117, offs=6)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 3626(line=130, offs=4) -- 4328(line=154, offs=6)
 */
 ATSINSflab(__patsflab_choose_55):
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 2662(line=94, offs=3) -- 3292(line=117, offs=6)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 3698(line=131, offs=3) -- 4328(line=154, offs=6)
 */
 /*
 letpush(beg)
@@ -4078,7 +4078,7 @@
 */
 
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 3029(line=106, offs=5) -- 3286(line=116, offs=10)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 4065(line=143, offs=5) -- 4322(line=153, offs=10)
 */
 ATScaseof_beg()
 /*
@@ -4086,15 +4086,15 @@
 */
 ATSbranch_beg()
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 3048(line=107, offs=9) -- 3049(line=107, offs=10)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 4084(line=144, offs=9) -- 4085(line=144, offs=10)
 */
 ATSINSlab(__atstmplab30):
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 2637(line=93, offs=51) -- 2638(line=93, offs=52)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 3673(line=130, offs=51) -- 3674(line=130, offs=52)
 */
 ATSifnthen(ATSCKpat_int(arg1, ATSPMVint(0))) { ATSINSgoto(__atstmplab32) ; } ;
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 3049(line=107, offs=10) -- 3049(line=107, offs=10)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 4085(line=144, offs=10) -- 4085(line=144, offs=10)
 */
 ATSINSlab(__atstmplab31):
 /*
@@ -4104,7 +4104,7 @@
 ibranch-mbody:
 */
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 3053(line=107, offs=14) -- 3066(line=107, offs=27)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 4089(line=144, offs=14) -- 4102(line=144, offs=27)
 */
 ATSINSmove(tmpret125, ATSCNTRB_056_HX_056_intinf_vt__intinf_make_int__15__15(ATSPMVi0nt(1))) ;
 
@@ -4112,15 +4112,15 @@
 
 ATSbranch_beg()
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 3075(line=108, offs=9) -- 3076(line=108, offs=10)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 4111(line=145, offs=9) -- 4112(line=145, offs=10)
 */
 ATSINSlab(__atstmplab32):
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 2637(line=93, offs=51) -- 2638(line=93, offs=52)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 3673(line=130, offs=51) -- 3674(line=130, offs=52)
 */
 ATSifnthen(ATSCKpat_int(arg1, ATSPMVint(1))) { ATSINSgoto(__atstmplab34) ; } ;
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 3076(line=108, offs=10) -- 3076(line=108, offs=10)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 4112(line=145, offs=10) -- 4112(line=145, offs=10)
 */
 ATSINSlab(__atstmplab33):
 /*
@@ -4130,7 +4130,7 @@
 ibranch-mbody:
 */
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 3080(line=108, offs=14) -- 3092(line=108, offs=26)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 4116(line=145, offs=14) -- 4128(line=145, offs=26)
 */
 ATSINSmove(tmpret125, ATSCNTRB_056_HX_056_intinf_vt__intinf_make_int__15__16(arg0)) ;
 
@@ -4138,7 +4138,7 @@
 
 ATSbranch_beg()
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 3103(line=109, offs=10) -- 3103(line=109, offs=10)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 4139(line=146, offs=10) -- 4139(line=146, offs=10)
 */
 ATSINSlab(__atstmplab34):
 /*
@@ -4148,46 +4148,46 @@
 ibranch-mbody:
 */
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 3108(line=109, offs=15) -- 3286(line=116, offs=10)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 4144(line=146, offs=15) -- 4322(line=153, offs=10)
 */
 /*
 letpush(beg)
 */
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 3124(line=110, offs=13) -- 3125(line=110, offs=14)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 4160(line=147, offs=13) -- 4161(line=147, offs=14)
 */
 /*
 ATSINStmpdec(tmpref153) ;
 */
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 3128(line=110, offs=17) -- 3144(line=110, offs=33)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 4164(line=147, offs=17) -- 4180(line=147, offs=33)
 */
 ATSINSmove(tmpref153, numerator_loop_56(arg0, arg1)) ;
 
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 3158(line=111, offs=13) -- 3159(line=111, offs=14)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 4194(line=148, offs=13) -- 4195(line=148, offs=14)
 */
 /*
 ATSINStmpdec(tmpref154) ;
 */
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 3162(line=111, offs=17) -- 3168(line=111, offs=23)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 4198(line=148, offs=17) -- 4204(line=148, offs=23)
 */
 ATSINSmove(tmpref154, fact_28(arg1)) ;
 
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 3182(line=112, offs=13) -- 3183(line=112, offs=14)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 4218(line=149, offs=13) -- 4219(line=149, offs=14)
 */
 /*
 ATSINStmpdec(tmpref155) ;
 */
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 3186(line=112, offs=17) -- 3211(line=112, offs=42)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 4222(line=149, offs=17) -- 4247(line=149, offs=42)
 */
 ATSINSmove(tmpref155, ATSCNTRB_056_HX_056_intinf_vt__div_intinf0_intinf1__41__3(tmpref153, ATSPMVrefarg0(tmpref154))) ;
 
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 3228(line=113, offs=17) -- 3241(line=113, offs=30)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 4264(line=150, offs=17) -- 4277(line=150, offs=30)
 */
 ATSINSmove_void(tmp158, ATSCNTRB_056_HX_056_intinf_vt__intinf_free__12__4(tmpref154)) ;
 
@@ -4196,11 +4196,11 @@
 */
 
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 3260(line=115, offs=9) -- 3275(line=115, offs=24)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 4296(line=152, offs=9) -- 4311(line=152, offs=24)
 */
 ATSINSmove(tmpret125, ATSPMVcastfn(castvwtp0, atstkind_type(atstype_ptrk), tmpref155)) ;
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 3108(line=109, offs=15) -- 3286(line=116, offs=10)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 4144(line=146, offs=15) -- 4322(line=153, offs=10)
 */
 /*
 INSletpop()
@@ -4213,7 +4213,7 @@
 ATScaseof_end()
 
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 2662(line=94, offs=3) -- 3292(line=117, offs=6)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 3698(line=131, offs=3) -- 4328(line=154, offs=6)
 */
 /*
 INSletpop()
@@ -4223,7 +4223,7 @@
 } /* end of [choose_55] */
 
 /*
-/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 2674(line=95, offs=9) -- 3019(line=104, offs=12)
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 3710(line=132, offs=9) -- 4055(line=141, offs=12)
 */
 /*
 local: numerator_loop_56$0(level=1)
@@ -4248,11 +4248,11 @@
 /* tmpvardeclst(end) */
 ATSfunbody_beg()
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 2674(line=95, offs=9) -- 3019(line=104, offs=12)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 3710(line=132, offs=9) -- 4055(line=141, offs=12)
 */
 ATSINSflab(__patsflab_numerator_loop_56):
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 2768(line=96, offs=7) -- 3019(line=104, offs=12)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 3804(line=133, offs=7) -- 4055(line=141, offs=12)
 */
 ATScaseof_beg()
 /*
@@ -4260,15 +4260,15 @@
 */
 ATSbranch_beg()
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 2789(line=97, offs=11) -- 2790(line=97, offs=12)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 3825(line=134, offs=11) -- 3826(line=134, offs=12)
 */
 ATSINSlab(__atstmplab25):
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 2716(line=95, offs=51) -- 2717(line=95, offs=52)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 3752(line=132, offs=51) -- 3753(line=132, offs=52)
 */
 ATSifnthen(ATSCKpat_int(arg0, ATSPMVint(1))) { ATSINSgoto(__atstmplab27) ; } ;
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 2790(line=97, offs=12) -- 2790(line=97, offs=12)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 3826(line=134, offs=12) -- 3826(line=134, offs=12)
 */
 ATSINSlab(__atstmplab26):
 /*
@@ -4278,7 +4278,7 @@
 ibranch-mbody:
 */
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 2794(line=97, offs=16) -- 2806(line=97, offs=28)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 3830(line=134, offs=16) -- 3842(line=134, offs=28)
 */
 ATSINSmove(tmpret126, ATSCNTRB_056_HX_056_intinf_vt__intinf_make_int__15__13(env0)) ;
 
@@ -4286,15 +4286,15 @@
 
 ATSbranch_beg()
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 2818(line=98, offs=11) -- 2819(line=98, offs=12)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 3854(line=135, offs=11) -- 3855(line=135, offs=12)
 */
 ATSINSlab(__atstmplab27):
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 2716(line=95, offs=51) -- 2717(line=95, offs=52)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 3752(line=132, offs=51) -- 3753(line=132, offs=52)
 */
 ATSifnthen(ATSCKpat_int(arg0, ATSPMVint(2))) { ATSINSgoto(__atstmplab29) ; } ;
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 2819(line=98, offs=12) -- 2819(line=98, offs=12)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 3855(line=135, offs=12) -- 3855(line=135, offs=12)
 */
 ATSINSlab(__atstmplab28):
 /*
@@ -4304,29 +4304,29 @@
 ibranch-mbody:
 */
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 2837(line=98, offs=30) -- 2860(line=98, offs=53)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 3873(line=135, offs=30) -- 3896(line=135, offs=53)
 */
 ATSINSmove(tmp137, atspre_g1int_sub_int(env0, ATSPMVi0nt(1))) ;
 
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 2837(line=98, offs=30) -- 2860(line=98, offs=53)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 3873(line=135, offs=30) -- 3896(line=135, offs=53)
 */
 ATSINSmove(tmp136, atspre_g1int_mul_int(tmp137, env0)) ;
 
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 2837(line=98, offs=30) -- 2860(line=98, offs=53)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 3873(line=135, offs=30) -- 3896(line=135, offs=53)
 */
 ATSINSmove(tmp131, ATSCNTRB_056_HX_056_intinf_vt__intinf_make_int__15__14(tmp136)) ;
 
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 2823(line=98, offs=16) -- 2861(line=98, offs=54)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 3859(line=135, offs=16) -- 3897(line=135, offs=54)
 */
 ATSINSmove(tmpret126, ATSPMVcastfn(castvwtp0, atstkind_type(atstype_ptrk), tmp131)) ;
 ATSbranch_end()
 
 ATSbranch_beg()
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 2873(line=99, offs=12) -- 2873(line=99, offs=12)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 3909(line=136, offs=12) -- 3909(line=136, offs=12)
 */
 ATSINSlab(__atstmplab29):
 /*
@@ -4336,45 +4336,45 @@
 ibranch-mbody:
 */
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 2878(line=99, offs=17) -- 3019(line=104, offs=12)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 3914(line=136, offs=17) -- 4055(line=141, offs=12)
 */
 /*
 letpush(beg)
 */
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 2896(line=100, offs=15) -- 2897(line=100, offs=16)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 3932(line=137, offs=15) -- 3933(line=137, offs=16)
 */
 /*
 ATSINStmpdec(tmpref138) ;
 */
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 2915(line=100, offs=34) -- 2920(line=100, offs=39)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 3951(line=137, offs=34) -- 3956(line=137, offs=39)
 */
 ATSINSmove(tmp139, atspre_g1int_sub_int(arg0, ATSPMVi0nt(1))) ;
 
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 2900(line=100, offs=19) -- 2921(line=100, offs=40)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 3936(line=137, offs=19) -- 3957(line=137, offs=40)
 */
 ATSINSmove(tmpref138, numerator_loop_56(env0, tmp139)) ;
 
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 2936(line=101, offs=15) -- 2937(line=101, offs=16)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 3972(line=138, offs=15) -- 3973(line=138, offs=16)
 */
 /*
 ATSINStmpdec(tmpref140) ;
 */
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 2959(line=101, offs=38) -- 2964(line=101, offs=43)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 3995(line=138, offs=38) -- 4000(line=138, offs=43)
 */
 ATSINSmove(tmp144, atspre_g1int_add_int(env0, ATSPMVi0nt(1))) ;
 
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 2959(line=101, offs=38) -- 2968(line=101, offs=47)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 3995(line=138, offs=38) -- 4004(line=138, offs=47)
 */
 ATSINSmove(tmp143, atspre_g1int_sub_int(tmp144, arg0)) ;
 
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 2940(line=101, offs=19) -- 2969(line=101, offs=48)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 3976(line=138, offs=19) -- 4005(line=138, offs=48)
 */
 ATSINSmove(tmpref140, ATSCNTRB_056_HX_056_intinf_vt__mul_intinf0_int__8__6(tmpref138, tmp143)) ;
 
@@ -4383,11 +4383,11 @@
 */
 
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 2991(line=103, offs=11) -- 3006(line=103, offs=26)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 4027(line=140, offs=11) -- 4042(line=140, offs=26)
 */
 ATSINSmove(tmpret126, ATSPMVcastfn(castvwtp0, atstkind_type(atstype_ptrk), tmpref140)) ;
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 2878(line=99, offs=17) -- 3019(line=104, offs=12)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 3914(line=136, offs=17) -- 4055(line=141, offs=12)
 */
 /*
 INSletpop()
@@ -4962,7 +4962,7 @@
 } /* end of [ATSCNTRB_056_HX_056_intinf_vt__intinf_free__12__4] */
 
 /*
-/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 3297(line=119, offs=4) -- 3481(line=125, offs=6)
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 4333(line=156, offs=4) -- 4517(line=162, offs=6)
 */
 /*
 local: 
@@ -4979,11 +4979,11 @@
 /* tmpvardeclst(end) */
 ATSfunbody_beg()
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 3297(line=119, offs=4) -- 3481(line=125, offs=6)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 4333(line=156, offs=4) -- 4517(line=162, offs=6)
 */
 ATSINSflab(__patsflab_sterling_69):
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 3371(line=120, offs=3) -- 3481(line=125, offs=6)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 4407(line=157, offs=3) -- 4517(line=162, offs=6)
 */
 /*
 letpush(beg)
@@ -4993,12 +4993,12 @@
 */
 
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 3462(line=124, offs=5) -- 3475(line=124, offs=18)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 4498(line=161, offs=5) -- 4511(line=161, offs=18)
 */
 ATSINSmove(tmpret161, ATSCNTRB_056_HX_056_intinf_vt__intinf_make_int__15__17(ATSPMVi0nt(0))) ;
 
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 3371(line=120, offs=3) -- 3481(line=125, offs=6)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 4407(line=157, offs=3) -- 4517(line=162, offs=6)
 */
 /*
 INSletpop()
@@ -5008,7 +5008,7 @@
 } /* end of [sterling_69] */
 
 /*
-/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 3383(line=121, offs=9) -- 3452(line=122, offs=10)
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 4419(line=158, offs=9) -- 4488(line=159, offs=10)
 */
 /*
 local: 
@@ -5025,11 +5025,11 @@
 /* tmpvardeclst(end) */
 ATSfunbody_beg()
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 3383(line=121, offs=9) -- 3452(line=122, offs=10)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 4419(line=158, offs=9) -- 4488(line=159, offs=10)
 */
 ATSINSflab(__patsflab_numerator_loop_70):
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 3449(line=122, offs=7) -- 3452(line=122, offs=10)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 4485(line=159, offs=7) -- 4488(line=159, offs=10)
 */
 ATSINSmove(tmpret162, arg1) ;
 ATSfunbody_end()
@@ -5134,7 +5134,7 @@
 } /* end of [ATSLIB_056_prelude__ptr_alloc__17__17] */
 
 /*
-/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 3678(line=130, offs=5) -- 3813(line=133, offs=39)
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 4714(line=167, offs=5) -- 4849(line=170, offs=39)
 */
 /*
 local: sum_loop_74$0(level=0)
@@ -5171,11 +5171,11 @@
 /* tmpvardeclst(end) */
 ATSfunbody_beg()
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 3678(line=130, offs=5) -- 3813(line=133, offs=39)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 4714(line=167, offs=5) -- 4849(line=170, offs=39)
 */
 ATSINSflab(__patsflab_bell_73):
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 3739(line=131, offs=3) -- 3813(line=133, offs=39)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 4775(line=168, offs=3) -- 4849(line=170, offs=39)
 */
 ATScaseof_beg()
 /*
@@ -5183,15 +5183,15 @@
 */
 ATSbranch_beg()
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 3756(line=132, offs=7) -- 3757(line=132, offs=8)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 4792(line=169, offs=7) -- 4793(line=169, offs=8)
 */
 ATSINSlab(__atstmplab35):
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 3691(line=130, offs=18) -- 3692(line=130, offs=19)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 4727(line=167, offs=18) -- 4728(line=167, offs=19)
 */
 ATSifnthen(ATSCKpat_int(arg0, ATSPMVint(0))) { ATSINSgoto(__atstmplab37) ; } ;
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 3757(line=132, offs=8) -- 3757(line=132, offs=8)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 4793(line=169, offs=8) -- 4793(line=169, offs=8)
 */
 ATSINSlab(__atstmplab36):
 /*
@@ -5201,7 +5201,7 @@
 ibranch-mbody:
 */
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 3761(line=132, offs=12) -- 3774(line=132, offs=25)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 4797(line=169, offs=12) -- 4810(line=169, offs=25)
 */
 ATSINSmove(tmpret167, ATSCNTRB_056_HX_056_intinf_vt__intinf_make_int__15__18(ATSPMVi0nt(1))) ;
 
@@ -5209,7 +5209,7 @@
 
 ATSbranch_beg()
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 3782(line=133, offs=8) -- 3782(line=133, offs=8)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 4818(line=170, offs=8) -- 4818(line=170, offs=8)
 */
 ATSINSlab(__atstmplab37):
 /*
@@ -5219,14 +5219,14 @@
 ibranch-guard:
 */
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 3788(line=133, offs=14) -- 3794(line=133, offs=20)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 4824(line=170, offs=14) -- 4830(line=170, offs=20)
 */
 ATSINSmove(tmp172, ATSLIB_056_prelude__gte_g1int_int__77__1(arg0, ATSPMVi0nt(0))) ;
 
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 3788(line=133, offs=14) -- 3794(line=133, offs=20)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 4824(line=170, offs=14) -- 4830(line=170, offs=20)
 */
-ATSifnthen(ATSCKpat_bool(tmp172, ATSPMVbool_true())) { ATSINScaseof_fail("/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 3781(line=133, offs=7) -- 3813(line=133, offs=39)") ; } ;
+ATSifnthen(ATSCKpat_bool(tmp172, ATSPMVbool_true())) { ATSINScaseof_fail("/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 4817(line=170, offs=7) -- 4849(line=170, offs=39)") ; } ;
 /*
 emit_instr: loc0 = : 0(line=0, offs=0) -- 0(line=0, offs=0)
 */
@@ -5234,7 +5234,7 @@
 ibranch-mbody:
 */
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 3799(line=133, offs=25) -- 3813(line=133, offs=39)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 4835(line=170, offs=25) -- 4849(line=170, offs=39)
 */
 ATStailcal_beg()
 ATSINSmove_tlcal(a2py0, arg0) ;
@@ -5258,11 +5258,11 @@
 */
 ATSfunbody_beg()
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 3818(line=134, offs=5) -- 4257(line=147, offs=8)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 4854(line=171, offs=5) -- 5293(line=184, offs=8)
 */
 ATSINSflab(__patsflab_sum_loop_74):
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 3932(line=135, offs=3) -- 4257(line=147, offs=8)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 4968(line=172, offs=3) -- 5293(line=184, offs=8)
 */
 ATScaseof_beg()
 /*
@@ -5270,15 +5270,15 @@
 */
 ATSbranch_beg()
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 3949(line=136, offs=7) -- 3950(line=136, offs=8)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 4985(line=173, offs=7) -- 4986(line=173, offs=8)
 */
 ATSINSlab(__atstmplab38):
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 3884(line=134, offs=71) -- 3885(line=134, offs=72)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 4920(line=171, offs=71) -- 4921(line=171, offs=72)
 */
 ATSifnthen(ATSCKpat_int(a2rg1, ATSPMVint(1))) { ATSINSgoto(__atstmplab40) ; } ;
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 3950(line=136, offs=8) -- 3950(line=136, offs=8)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 4986(line=173, offs=8) -- 4986(line=173, offs=8)
 */
 ATSINSlab(__atstmplab39):
 /*
@@ -5288,7 +5288,7 @@
 ibranch-mbody:
 */
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 3954(line=136, offs=12) -- 3967(line=136, offs=25)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 4990(line=173, offs=12) -- 5003(line=173, offs=25)
 */
 ATSINSmove(tmpret177, ATSCNTRB_056_HX_056_intinf_vt__intinf_make_int__15__19(ATSPMVi0nt(1))) ;
 
@@ -5296,7 +5296,7 @@
 
 ATSbranch_beg()
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 3975(line=137, offs=8) -- 3975(line=137, offs=8)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 5011(line=174, offs=8) -- 5011(line=174, offs=8)
 */
 ATSINSlab(__atstmplab40):
 /*
@@ -5306,78 +5306,78 @@
 ibranch-mbody:
 */
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 3980(line=137, offs=13) -- 4257(line=147, offs=8)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 5016(line=174, offs=13) -- 5293(line=184, offs=8)
 */
 /*
 letpush(beg)
 */
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 3994(line=138, offs=11) -- 3995(line=138, offs=12)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 5030(line=175, offs=11) -- 5031(line=175, offs=12)
 */
 /*
 ATSINStmpdec(tmpref182) ;
 */
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 4010(line=138, offs=27) -- 4015(line=138, offs=32)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 5046(line=175, offs=27) -- 5051(line=175, offs=32)
 */
 ATSINSmove(tmp183, atspre_g1int_sub_int(a2rg1, ATSPMVi0nt(1))) ;
 
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 3998(line=138, offs=15) -- 4016(line=138, offs=33)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 5034(line=175, offs=15) -- 5052(line=175, offs=33)
 */
 ATSINSmove(tmpref182, sum_loop_74(a2rg0, tmp183)) ;
 
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 4027(line=139, offs=11) -- 4028(line=139, offs=12)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 5063(line=176, offs=11) -- 5064(line=176, offs=12)
 */
 /*
 ATSINStmpdec(tmpref184) ;
 */
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 4031(line=139, offs=15) -- 4037(line=139, offs=21)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 5067(line=176, offs=15) -- 5073(line=176, offs=21)
 */
 ATSINSmove(tmpref184, bell_73(a2rg1)) ;
 
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 4049(line=140, offs=11) -- 4050(line=140, offs=12)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 5085(line=177, offs=11) -- 5086(line=177, offs=12)
 */
 /*
 ATSINStmpdec(tmpref185) ;
 */
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 4053(line=140, offs=15) -- 4065(line=140, offs=27)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 5089(line=177, offs=15) -- 5101(line=177, offs=27)
 */
 ATSINSmove(tmpref185, choose_55(a2rg0, a2rg1)) ;
 
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 4076(line=141, offs=11) -- 4083(line=141, offs=18)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 5112(line=178, offs=11) -- 5119(line=178, offs=18)
 */
 /*
 ATSINStmpdec(tmpref186) ;
 */
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 4086(line=141, offs=21) -- 4111(line=141, offs=46)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 5122(line=178, offs=21) -- 5147(line=178, offs=46)
 */
 ATSINSmove(tmpref186, ATSCNTRB_056_HX_056_intinf_vt__mul_intinf0_intinf1__82__1(tmpref185, ATSPMVrefarg0(tmpref184))) ;
 
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 4122(line=142, offs=11) -- 4125(line=142, offs=14)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 5158(line=179, offs=11) -- 5161(line=179, offs=14)
 */
 /*
 ATSINStmpdec(tmpref191) ;
 */
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 4128(line=142, offs=17) -- 4159(line=142, offs=48)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 5164(line=179, offs=17) -- 5195(line=179, offs=48)
 */
 ATSINSmove(tmpref191, ATSCNTRB_056_HX_056_intinf_vt__add_intinf0_intinf1__6__3(tmpref186, ATSPMVrefarg0(tmpref182))) ;
 
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 4174(line=143, offs=15) -- 4187(line=143, offs=28)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 5210(line=180, offs=15) -- 5223(line=180, offs=28)
 */
 ATSINSmove_void(tmp194, ATSCNTRB_056_HX_056_intinf_vt__intinf_free__12__5(tmpref184)) ;
 
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 4203(line=144, offs=15) -- 4216(line=144, offs=28)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 5239(line=181, offs=15) -- 5252(line=181, offs=28)
 */
 ATSINSmove_void(tmp197, ATSCNTRB_056_HX_056_intinf_vt__intinf_free__12__6(tmpref182)) ;
 
@@ -5386,11 +5386,11 @@
 */
 
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 4231(line=146, offs=7) -- 4248(line=146, offs=24)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 5267(line=183, offs=7) -- 5284(line=183, offs=24)
 */
 ATSINSmove(tmpret177, ATSPMVcastfn(castvwtp0, atstkind_type(atstype_ptrk), tmpref191)) ;
 /*
-emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 3980(line=137, offs=13) -- 4257(line=147, offs=8)
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 5016(line=174, offs=13) -- 5293(line=184, offs=8)
 */
 /*
 INSletpop()
diff --git a/cbits/number-theory.c b/cbits/number-theory.c
--- a/cbits/number-theory.c
+++ b/cbits/number-theory.c
@@ -1,7 +1,7 @@
 /*
 **
 ** The C code is generated by [ATS/Postiats-0-3-10]
-** The starting compilation time is: 2018-4-15: 21h:51m
+** The starting compilation time is: 2018-4-22: 21h:35m
 **
 */
 
diff --git a/cbits/numerics.c b/cbits/numerics.c
--- a/cbits/numerics.c
+++ b/cbits/numerics.c
@@ -1,7 +1,7 @@
 /*
 **
 ** The C code is generated by [ATS/Postiats-0-3-10]
-** The starting compilation time is: 2018-4-15: 21h:51m
+** The starting compilation time is: 2018-4-22: 21h:35m
 **
 */
 
diff --git a/fast-arithmetic.cabal b/fast-arithmetic.cabal
--- a/fast-arithmetic.cabal
+++ b/fast-arithmetic.cabal
@@ -1,19 +1,21 @@
 cabal-version: 1.18
 name: fast-arithmetic
-version: 0.5.0.0
+version: 0.6.0.1
 license: BSD3
 license-file: LICENSE
 copyright: Copyright: (c) 2018 Vanessa McHale
 maintainer: vamchale@gmail.com
 author: Vanessa McHale
 homepage: https://github.com/vmchale/fast-arithmetic#readme
+bug-reports: https://github.com/vmchale/hs-ats/issues
 synopsis: Fast functions on integers.
 description:
     Fast functions for number theory and combinatorics with a high level of safety guaranteed by [ATS](http://www.ats-lang.org/).
 category: Numerics, Math, Algorithms, Number Theory, Combinatorics, FFI, ATS
 build-type: Simple
 extra-source-files:
-    ats-src/*.dats
+    atspkg.dhall
+    pkg.dhall
     .atspkg/contrib/ats-includes-0.3.10/ccomp/runtime/*.h
     .atspkg/contrib/ats-includes-0.3.10/ccomp/runtime/*.c
     .atspkg/contrib/ats-includes-0.3.10/prelude/CATS/*.cats
@@ -35,7 +37,6 @@
 
 library
     exposed-modules:
-        Numeric.Integer
         Numeric.NumberTheory
         Numeric.Combinatorics
     c-sources:
@@ -49,6 +50,7 @@
     include-dirs: .atspkg/contrib/ats-includes-0.3.10/ccomp/runtime
                   .atspkg/contrib/ats-includes-0.3.10/ .atspkg/contrib
     ghc-options: -Wall -optc-mtune=native -optc-flto -optc-O3
+                 -Wincomplete-uni-patterns -Wincomplete-record-updates -Wcompat
     build-depends:
         base >=4.10 && <5,
         composition-prelude >=1.2.0.0,
@@ -56,10 +58,6 @@
     
     if flag(development)
         ghc-options: -Werror
-    
-    if impl(ghc >=8.0)
-        ghc-options: -Wincomplete-uni-patterns -Wincomplete-record-updates
-                     -Wcompat
 
 test-suite fast-arithmetic-test
     type: exitcode-stdio-1.0
diff --git a/pkg.dhall b/pkg.dhall
new file mode 100644
--- /dev/null
+++ b/pkg.dhall
@@ -0,0 +1,5 @@
+let prelude = https://raw.githubusercontent.com/vmchale/atspkg/master/dhall/atspkg-prelude.dhall
+
+in λ(x : List Integer) → 
+  prelude.makeHsPkg { x = x, name = "fast-arithmetic" } 
+    ⫽ { libDeps = prelude.mapPlainDeps [ "atscntrb-hx-intinf" ], description = [ "Number theory & combinatorics library written in ATS" ] : Optional Text }
diff --git a/src/Numeric/Integer.hs b/src/Numeric/Integer.hs
deleted file mode 100644
--- a/src/Numeric/Integer.hs
+++ /dev/null
@@ -1,18 +0,0 @@
-{-|
-Module      : Numeric.Combinatorics
-Copyright   : Copyright (c) 2018 Vanessa McHale
-
-This module provides a fast primality check.
--}
-
-module Numeric.Integer ( isPrime
-                       ) where
-
-import           Foreign.C
-import           Numeric.Common
-
-foreign import ccall unsafe is_prime_ats :: CInt -> CBool
-
--- | \( O(\sqrt(n)) \)
-isPrime :: Int -> Bool
-isPrime = asTest is_prime_ats
diff --git a/src/Numeric/NumberTheory.hs b/src/Numeric/NumberTheory.hs
--- a/src/Numeric/NumberTheory.hs
+++ b/src/Numeric/NumberTheory.hs
@@ -10,6 +10,7 @@
                             , littleOmega
                             , isPerfect
                             , sumDivisors
+                            , isPrime
                             ) where
 
 import           Foreign.C
@@ -20,6 +21,11 @@
 foreign import ccall unsafe sum_divisors_ats :: CInt -> CInt
 foreign import ccall unsafe little_omega_ats :: CInt -> CInt
 foreign import ccall unsafe is_perfect_ats :: CInt -> CBool
+foreign import ccall unsafe is_prime_ats :: CInt -> CBool
+
+-- | \( O(\sqrt(n)) \)
+isPrime :: Int -> Bool
+isPrime = asTest is_prime_ats
 
 -- | See [here](http://mathworld.wolfram.com/PerfectNumber.html)
 isPerfect :: Int -> Bool
diff --git a/test/Spec.hs b/test/Spec.hs
--- a/test/Spec.hs
+++ b/test/Spec.hs
@@ -5,7 +5,6 @@
 import           Math.NumberTheory.Moduli.Jacobi       (JacobiSymbol (..))
 import qualified Math.NumberTheory.Moduli.Jacobi       as Ext
 import           Numeric.Combinatorics
-import           Numeric.Integer
 import           Numeric.NumberTheory
 import           Test.Hspec
 import           Test.Hspec.QuickCheck
