diff --git a/language-ats.cabal b/language-ats.cabal
--- a/language-ats.cabal
+++ b/language-ats.cabal
@@ -1,6 +1,6 @@
 cabal-version: 1.18
 name: language-ats
-version: 1.7.0.0
+version: 1.7.0.1
 license: BSD3
 license-file: LICENSE
 copyright: Copyright: (c) 2018 Vanessa McHale
@@ -19,7 +19,7 @@
     test/data/stdlib/*.sats
     test/data/stdlib/*.out
     test/data/stdlib/DATS/*.dats
-    test/data/stdlib/*.out
+    test/data/stdlib/DATS/*.out
 extra-doc-files: README.md
                  CHANGELOG.md
 
diff --git a/test/data/stdlib/DATS/bool.out b/test/data/stdlib/DATS/bool.out
new file mode 100644
--- /dev/null
+++ b/test/data/stdlib/DATS/bool.out
@@ -0,0 +1,63 @@
+(***********************************************************************)
+(*                                                                     *)
+(*                         Applied Type System                         *)
+(*                                                                     *)
+(***********************************************************************)
+(*
+** ATS/Postiats - Unleashing the Potential of Types!
+** Copyright (C) 2010-2015 Hongwei Xi, ATS Trustful Software, Inc.
+** All rights reserved
+**
+** ATS is free software;  you can  redistribute it and/or modify it under
+** the terms of  the GNU GENERAL PUBLIC LICENSE (GPL) as published by the
+** Free Software Foundation; either version 3, or (at  your  option)  any
+** later version.
+**
+** ATS is distributed in the hope that it will be useful, but WITHOUT ANY
+** WARRANTY; without  even  the  implied  warranty  of MERCHANTABILITY or
+** FITNESS FOR A PARTICULAR PURPOSE.  See the  GNU General Public License
+** for more details.
+**
+** You  should  have  received  a  copy of the GNU General Public License
+** along  with  ATS;  see the  file COPYING.  If not, please write to the
+** Free Software Foundation,  51 Franklin Street, Fifth Floor, Boston, MA
+** 02110-1301, USA.
+*)
+(* ****** ****** *)
+(*
+** Source:
+** $PATSHOME/prelude/DATS/CODEGEN/bool.atxt
+** Time of generation: Thu Jan 11 11:00:12 2018
+*)
+(* ****** ****** *)
+(* Author: Hongwei Xi *)
+(* Authoremail: hwxi AT cs DOT bu DOT edu *)
+(* Start time: Feburary, 2012 *)
+(* ****** ****** *)
+#define ATS_DYNLOADFLAG 0 // no dynloading at run-time
+
+(* ****** ****** *)
+(*
+//
+// HX: see CATS/bool.cats
+//
+implement
+bool2string
+  (b) = if b then "true" else "false"
+// end of [bool2string]
+*)
+(* ****** ****** *)
+(*
+//
+// HX: see CATS/bool.cats
+//
+implement
+fprint_bool (out, x) =
+  fprint_string (out, bool2string (x))
+// end of [fprint_bool]
+*)
+implement fprint_val<bool> =
+  fprint_bool
+
+(* ****** ****** *)
+(* end of [bool.dats] *)
diff --git a/test/data/stdlib/DATS/integer_fixed.out b/test/data/stdlib/DATS/integer_fixed.out
new file mode 100644
--- /dev/null
+++ b/test/data/stdlib/DATS/integer_fixed.out
@@ -0,0 +1,782 @@
+(***********************************************************************)
+(*                                                                     *)
+(*                         Applied Type System                         *)
+(*                                                                     *)
+(***********************************************************************)
+(*
+** ATS/Postiats - Unleashing the Potential of Types!
+** Copyright (C) 2010-2015 Hongwei Xi, ATS Trustful Software, Inc.
+** All rights reserved
+**
+** ATS is free software;  you can  redistribute it and/or modify it under
+** the terms of  the GNU GENERAL PUBLIC LICENSE (GPL) as published by the
+** Free Software Foundation; either version 3, or (at  your  option)  any
+** later version.
+**
+** ATS is distributed in the hope that it will be useful, but WITHOUT ANY
+** WARRANTY; without  even  the  implied  warranty  of MERCHANTABILITY or
+** FITNESS FOR A PARTICULAR PURPOSE.  See the  GNU General Public License
+** for more details.
+**
+** You  should  have  received  a  copy of the GNU General Public License
+** along  with  ATS;  see the  file COPYING.  If not, please write to the
+** Free Software Foundation,  51 Franklin Street, Fifth Floor, Boston, MA
+** 02110-1301, USA.
+*)
+(* ****** ****** *)
+(* Author: Hongwei Xi *)
+(* Authoremail: gmhwxiATgmailDOTcom *)
+(* Start time: February, 2014 *)
+(* ****** ****** *)
+(*
+** Source:
+** $PATSHOME/prelude/DATS/CODEGEN/integer_fixed.atxt
+** Time of generation: Thu Jan 11 11:00:14 2018
+*)
+(* ****** ****** *)
+#define ATS_DYNLOADFLAG 0
+
+// no dynloading
+(* ****** ****** *)
+//
+staload UN = "prelude/SATS/unsafe.sats"
+
+//
+(* ****** ****** *)
+//
+implement g0int2int<int8knd,intknd> =
+  g0int2int_int8_int
+
+implement g0int2int<int16knd,intknd> =
+  g0int2int_int16_int
+
+implement g0int2int<int32knd,intknd> =
+  g0int2int_int32_int
+
+implement g0int2int<int64knd,intknd> =
+  g0int2int_int64_int
+
+//
+(* ****** ****** *)
+//
+implement g0int2uint<int8knd,uintknd> =
+  g0int2uint_int8_uint
+
+implement g0int2uint<int16knd,uintknd> =
+  g0int2uint_int16_uint
+
+implement g0int2uint<int32knd,uintknd> =
+  g0int2uint_int32_uint
+
+implement g0int2uint<int64knd,uintknd> =
+  g0int2uint_int64_uint
+
+//
+implement g0uint2int<uint8knd,intknd> =
+  g0uint2int_uint8_int
+
+implement g0uint2int<uint16knd,intknd> =
+  g0uint2int_uint16_int
+
+implement g0uint2int<uint32knd,intknd> =
+  g0uint2int_uint32_int
+
+implement g0uint2int<uint64knd,intknd> =
+  g0uint2int_uint64_int
+
+//
+implement g0uint2uint<uint8knd,uintknd> =
+  g0uint2uint_uint8_uint
+
+implement g0uint2uint<uint16knd,uintknd> =
+  g0uint2uint_uint16_uint
+
+implement g0uint2uint<uint32knd,uintknd> =
+  g0uint2uint_uint32_uint
+
+implement g0uint2uint<uint64knd,uintknd> =
+  g0uint2uint_uint64_uint
+
+//
+(* ****** ****** *)
+//
+implement g0int_neg<int8knd> =
+  g0int_neg_int8
+
+implement g0int_abs<int8knd> =
+  g0int_abs_int8
+
+implement g0int_succ<int8knd> =
+  g0int_succ_int8
+
+implement g0int_pred<int8knd> =
+  g0int_pred_int8
+
+implement g0int_half<int8knd> =
+  g0int_half_int8
+
+implement g0int_add<int8knd> =
+  g0int_add_int8
+
+implement g0int_sub<int8knd> =
+  g0int_sub_int8
+
+implement g0int_mul<int8knd> =
+  g0int_mul_int8
+
+implement g0int_div<int8knd> =
+  g0int_div_int8
+
+implement g0int_mod<int8knd> =
+  g0int_mod_int8
+
+implement g0int_asl<int8knd> =
+  g0int_asl_int8
+
+implement g0int_asr<int8knd> =
+  g0int_asr_int8
+
+implement g0int_isltz<int8knd> =
+  g0int_isltz_int8
+
+implement g0int_isltez<int8knd> =
+  g0int_isltez_int8
+
+implement g0int_isgtz<int8knd> =
+  g0int_isgtz_int8
+
+implement g0int_isgtez<int8knd> =
+  g0int_isgtez_int8
+
+implement g0int_iseqz<int8knd> =
+  g0int_iseqz_int8
+
+implement g0int_isneqz<int8knd> =
+  g0int_isneqz_int8
+
+implement g0int_lt<int8knd> =
+  g0int_lt_int8
+
+implement g0int_lte<int8knd> =
+  g0int_lte_int8
+
+implement g0int_gt<int8knd> =
+  g0int_gt_int8
+
+implement g0int_gte<int8knd> =
+  g0int_gte_int8
+
+implement g0int_eq<int8knd> =
+  g0int_eq_int8
+
+implement g0int_neq<int8knd> =
+  g0int_neq_int8
+
+implement g0int_compare<int8knd> =
+  g0int_compare_int8
+
+implement g0int_max<int8knd> =
+  g0int_max_int8
+
+implement g0int_min<int8knd> =
+  g0int_min_int8
+
+//
+implement fprint_val<int8> (out, x) =
+  fprint_int8((out, x))
+
+//
+implement g0int_neg<int16knd> =
+  g0int_neg_int16
+
+implement g0int_abs<int16knd> =
+  g0int_abs_int16
+
+implement g0int_succ<int16knd> =
+  g0int_succ_int16
+
+implement g0int_pred<int16knd> =
+  g0int_pred_int16
+
+implement g0int_half<int16knd> =
+  g0int_half_int16
+
+implement g0int_add<int16knd> =
+  g0int_add_int16
+
+implement g0int_sub<int16knd> =
+  g0int_sub_int16
+
+implement g0int_mul<int16knd> =
+  g0int_mul_int16
+
+implement g0int_div<int16knd> =
+  g0int_div_int16
+
+implement g0int_mod<int16knd> =
+  g0int_mod_int16
+
+implement g0int_asl<int16knd> =
+  g0int_asl_int16
+
+implement g0int_asr<int16knd> =
+  g0int_asr_int16
+
+implement g0int_isltz<int16knd> =
+  g0int_isltz_int16
+
+implement g0int_isltez<int16knd> =
+  g0int_isltez_int16
+
+implement g0int_isgtz<int16knd> =
+  g0int_isgtz_int16
+
+implement g0int_isgtez<int16knd> =
+  g0int_isgtez_int16
+
+implement g0int_iseqz<int16knd> =
+  g0int_iseqz_int16
+
+implement g0int_isneqz<int16knd> =
+  g0int_isneqz_int16
+
+implement g0int_lt<int16knd> =
+  g0int_lt_int16
+
+implement g0int_lte<int16knd> =
+  g0int_lte_int16
+
+implement g0int_gt<int16knd> =
+  g0int_gt_int16
+
+implement g0int_gte<int16knd> =
+  g0int_gte_int16
+
+implement g0int_eq<int16knd> =
+  g0int_eq_int16
+
+implement g0int_neq<int16knd> =
+  g0int_neq_int16
+
+implement g0int_compare<int16knd> =
+  g0int_compare_int16
+
+implement g0int_max<int16knd> =
+  g0int_max_int16
+
+implement g0int_min<int16knd> =
+  g0int_min_int16
+
+//
+implement fprint_val<int16> (out, x) =
+  fprint_int16((out, x))
+
+//
+implement g0int_neg<int32knd> =
+  g0int_neg_int32
+
+implement g0int_abs<int32knd> =
+  g0int_abs_int32
+
+implement g0int_succ<int32knd> =
+  g0int_succ_int32
+
+implement g0int_pred<int32knd> =
+  g0int_pred_int32
+
+implement g0int_half<int32knd> =
+  g0int_half_int32
+
+implement g0int_add<int32knd> =
+  g0int_add_int32
+
+implement g0int_sub<int32knd> =
+  g0int_sub_int32
+
+implement g0int_mul<int32knd> =
+  g0int_mul_int32
+
+implement g0int_div<int32knd> =
+  g0int_div_int32
+
+implement g0int_mod<int32knd> =
+  g0int_mod_int32
+
+implement g0int_asl<int32knd> =
+  g0int_asl_int32
+
+implement g0int_asr<int32knd> =
+  g0int_asr_int32
+
+implement g0int_isltz<int32knd> =
+  g0int_isltz_int32
+
+implement g0int_isltez<int32knd> =
+  g0int_isltez_int32
+
+implement g0int_isgtz<int32knd> =
+  g0int_isgtz_int32
+
+implement g0int_isgtez<int32knd> =
+  g0int_isgtez_int32
+
+implement g0int_iseqz<int32knd> =
+  g0int_iseqz_int32
+
+implement g0int_isneqz<int32knd> =
+  g0int_isneqz_int32
+
+implement g0int_lt<int32knd> =
+  g0int_lt_int32
+
+implement g0int_lte<int32knd> =
+  g0int_lte_int32
+
+implement g0int_gt<int32knd> =
+  g0int_gt_int32
+
+implement g0int_gte<int32knd> =
+  g0int_gte_int32
+
+implement g0int_eq<int32knd> =
+  g0int_eq_int32
+
+implement g0int_neq<int32knd> =
+  g0int_neq_int32
+
+implement g0int_compare<int32knd> =
+  g0int_compare_int32
+
+implement g0int_max<int32knd> =
+  g0int_max_int32
+
+implement g0int_min<int32knd> =
+  g0int_min_int32
+
+//
+implement fprint_val<int32> (out, x) =
+  fprint_int32((out, x))
+
+//
+implement g0int_neg<int64knd> =
+  g0int_neg_int64
+
+implement g0int_abs<int64knd> =
+  g0int_abs_int64
+
+implement g0int_succ<int64knd> =
+  g0int_succ_int64
+
+implement g0int_pred<int64knd> =
+  g0int_pred_int64
+
+implement g0int_half<int64knd> =
+  g0int_half_int64
+
+implement g0int_add<int64knd> =
+  g0int_add_int64
+
+implement g0int_sub<int64knd> =
+  g0int_sub_int64
+
+implement g0int_mul<int64knd> =
+  g0int_mul_int64
+
+implement g0int_div<int64knd> =
+  g0int_div_int64
+
+implement g0int_mod<int64knd> =
+  g0int_mod_int64
+
+implement g0int_asl<int64knd> =
+  g0int_asl_int64
+
+implement g0int_asr<int64knd> =
+  g0int_asr_int64
+
+implement g0int_isltz<int64knd> =
+  g0int_isltz_int64
+
+implement g0int_isltez<int64knd> =
+  g0int_isltez_int64
+
+implement g0int_isgtz<int64knd> =
+  g0int_isgtz_int64
+
+implement g0int_isgtez<int64knd> =
+  g0int_isgtez_int64
+
+implement g0int_iseqz<int64knd> =
+  g0int_iseqz_int64
+
+implement g0int_isneqz<int64knd> =
+  g0int_isneqz_int64
+
+implement g0int_lt<int64knd> =
+  g0int_lt_int64
+
+implement g0int_lte<int64knd> =
+  g0int_lte_int64
+
+implement g0int_gt<int64knd> =
+  g0int_gt_int64
+
+implement g0int_gte<int64knd> =
+  g0int_gte_int64
+
+implement g0int_eq<int64knd> =
+  g0int_eq_int64
+
+implement g0int_neq<int64knd> =
+  g0int_neq_int64
+
+implement g0int_compare<int64knd> =
+  g0int_compare_int64
+
+implement g0int_max<int64knd> =
+  g0int_max_int64
+
+implement g0int_min<int64knd> =
+  g0int_min_int64
+
+//
+implement fprint_val<int64> (out, x) =
+  fprint_int64((out, x))
+
+//
+(* ****** ****** *)
+//
+implement g0uint_succ<uint8knd> =
+  g0uint_succ_uint8
+
+implement g0uint_pred<uint8knd> =
+  g0uint_pred_uint8
+
+implement g0uint_half<uint8knd> =
+  g0uint_half_uint8
+
+implement g0uint_add<uint8knd> =
+  g0uint_add_uint8
+
+implement g0uint_sub<uint8knd> =
+  g0uint_sub_uint8
+
+implement g0uint_mul<uint8knd> =
+  g0uint_mul_uint8
+
+implement g0uint_div<uint8knd> =
+  g0uint_div_uint8
+
+implement g0uint_mod<uint8knd> =
+  g0uint_mod_uint8
+
+implement g0uint_lsl<uint8knd> =
+  g0uint_lsl_uint8
+
+implement g0uint_lsr<uint8knd> =
+  g0uint_lsr_uint8
+
+implement g0uint_lnot<uint8knd> =
+  g0uint_lnot_uint8
+
+implement g0uint_lor<uint8knd> =
+  g0uint_lor_uint8
+
+implement g0uint_lxor<uint8knd> =
+  g0uint_lxor_uint8
+
+implement g0uint_land<uint8knd> =
+  g0uint_land_uint8
+
+implement g0uint_isgtz<uint8knd> =
+  g0uint_isgtz_uint8
+
+implement g0uint_iseqz<uint8knd> =
+  g0uint_iseqz_uint8
+
+implement g0uint_isneqz<uint8knd> =
+  g0uint_isneqz_uint8
+
+implement g0uint_lt<uint8knd> =
+  g0uint_lt_uint8
+
+implement g0uint_lte<uint8knd> =
+  g0uint_lte_uint8
+
+implement g0uint_gt<uint8knd> =
+  g0uint_gt_uint8
+
+implement g0uint_gte<uint8knd> =
+  g0uint_gte_uint8
+
+implement g0uint_eq<uint8knd> =
+  g0uint_eq_uint8
+
+implement g0uint_neq<uint8knd> =
+  g0uint_neq_uint8
+
+implement g0uint_compare<uint8knd> =
+  g0uint_compare_uint8
+
+implement g0uint_max<uint8knd> =
+  g0uint_max_uint8
+
+implement g0uint_min<uint8knd> =
+  g0uint_min_uint8
+
+//
+implement fprint_val<uint8> (out, x) =
+  fprint_uint8((out, x))
+
+//
+implement g0uint_succ<uint16knd> =
+  g0uint_succ_uint16
+
+implement g0uint_pred<uint16knd> =
+  g0uint_pred_uint16
+
+implement g0uint_half<uint16knd> =
+  g0uint_half_uint16
+
+implement g0uint_add<uint16knd> =
+  g0uint_add_uint16
+
+implement g0uint_sub<uint16knd> =
+  g0uint_sub_uint16
+
+implement g0uint_mul<uint16knd> =
+  g0uint_mul_uint16
+
+implement g0uint_div<uint16knd> =
+  g0uint_div_uint16
+
+implement g0uint_mod<uint16knd> =
+  g0uint_mod_uint16
+
+implement g0uint_lsl<uint16knd> =
+  g0uint_lsl_uint16
+
+implement g0uint_lsr<uint16knd> =
+  g0uint_lsr_uint16
+
+implement g0uint_lnot<uint16knd> =
+  g0uint_lnot_uint16
+
+implement g0uint_lor<uint16knd> =
+  g0uint_lor_uint16
+
+implement g0uint_lxor<uint16knd> =
+  g0uint_lxor_uint16
+
+implement g0uint_land<uint16knd> =
+  g0uint_land_uint16
+
+implement g0uint_isgtz<uint16knd> =
+  g0uint_isgtz_uint16
+
+implement g0uint_iseqz<uint16knd> =
+  g0uint_iseqz_uint16
+
+implement g0uint_isneqz<uint16knd> =
+  g0uint_isneqz_uint16
+
+implement g0uint_lt<uint16knd> =
+  g0uint_lt_uint16
+
+implement g0uint_lte<uint16knd> =
+  g0uint_lte_uint16
+
+implement g0uint_gt<uint16knd> =
+  g0uint_gt_uint16
+
+implement g0uint_gte<uint16knd> =
+  g0uint_gte_uint16
+
+implement g0uint_eq<uint16knd> =
+  g0uint_eq_uint16
+
+implement g0uint_neq<uint16knd> =
+  g0uint_neq_uint16
+
+implement g0uint_compare<uint16knd> =
+  g0uint_compare_uint16
+
+implement g0uint_max<uint16knd> =
+  g0uint_max_uint16
+
+implement g0uint_min<uint16knd> =
+  g0uint_min_uint16
+
+//
+implement fprint_val<uint16> (out, x) =
+  fprint_uint16((out, x))
+
+//
+implement g0uint_succ<uint32knd> =
+  g0uint_succ_uint32
+
+implement g0uint_pred<uint32knd> =
+  g0uint_pred_uint32
+
+implement g0uint_half<uint32knd> =
+  g0uint_half_uint32
+
+implement g0uint_add<uint32knd> =
+  g0uint_add_uint32
+
+implement g0uint_sub<uint32knd> =
+  g0uint_sub_uint32
+
+implement g0uint_mul<uint32knd> =
+  g0uint_mul_uint32
+
+implement g0uint_div<uint32knd> =
+  g0uint_div_uint32
+
+implement g0uint_mod<uint32knd> =
+  g0uint_mod_uint32
+
+implement g0uint_lsl<uint32knd> =
+  g0uint_lsl_uint32
+
+implement g0uint_lsr<uint32knd> =
+  g0uint_lsr_uint32
+
+implement g0uint_lnot<uint32knd> =
+  g0uint_lnot_uint32
+
+implement g0uint_lor<uint32knd> =
+  g0uint_lor_uint32
+
+implement g0uint_lxor<uint32knd> =
+  g0uint_lxor_uint32
+
+implement g0uint_land<uint32knd> =
+  g0uint_land_uint32
+
+implement g0uint_isgtz<uint32knd> =
+  g0uint_isgtz_uint32
+
+implement g0uint_iseqz<uint32knd> =
+  g0uint_iseqz_uint32
+
+implement g0uint_isneqz<uint32knd> =
+  g0uint_isneqz_uint32
+
+implement g0uint_lt<uint32knd> =
+  g0uint_lt_uint32
+
+implement g0uint_lte<uint32knd> =
+  g0uint_lte_uint32
+
+implement g0uint_gt<uint32knd> =
+  g0uint_gt_uint32
+
+implement g0uint_gte<uint32knd> =
+  g0uint_gte_uint32
+
+implement g0uint_eq<uint32knd> =
+  g0uint_eq_uint32
+
+implement g0uint_neq<uint32knd> =
+  g0uint_neq_uint32
+
+implement g0uint_compare<uint32knd> =
+  g0uint_compare_uint32
+
+implement g0uint_max<uint32knd> =
+  g0uint_max_uint32
+
+implement g0uint_min<uint32knd> =
+  g0uint_min_uint32
+
+//
+implement fprint_val<uint32> (out, x) =
+  fprint_uint32((out, x))
+
+//
+implement g0uint_succ<uint64knd> =
+  g0uint_succ_uint64
+
+implement g0uint_pred<uint64knd> =
+  g0uint_pred_uint64
+
+implement g0uint_half<uint64knd> =
+  g0uint_half_uint64
+
+implement g0uint_add<uint64knd> =
+  g0uint_add_uint64
+
+implement g0uint_sub<uint64knd> =
+  g0uint_sub_uint64
+
+implement g0uint_mul<uint64knd> =
+  g0uint_mul_uint64
+
+implement g0uint_div<uint64knd> =
+  g0uint_div_uint64
+
+implement g0uint_mod<uint64knd> =
+  g0uint_mod_uint64
+
+implement g0uint_lsl<uint64knd> =
+  g0uint_lsl_uint64
+
+implement g0uint_lsr<uint64knd> =
+  g0uint_lsr_uint64
+
+implement g0uint_lnot<uint64knd> =
+  g0uint_lnot_uint64
+
+implement g0uint_lor<uint64knd> =
+  g0uint_lor_uint64
+
+implement g0uint_lxor<uint64knd> =
+  g0uint_lxor_uint64
+
+implement g0uint_land<uint64knd> =
+  g0uint_land_uint64
+
+implement g0uint_isgtz<uint64knd> =
+  g0uint_isgtz_uint64
+
+implement g0uint_iseqz<uint64knd> =
+  g0uint_iseqz_uint64
+
+implement g0uint_isneqz<uint64knd> =
+  g0uint_isneqz_uint64
+
+implement g0uint_lt<uint64knd> =
+  g0uint_lt_uint64
+
+implement g0uint_lte<uint64knd> =
+  g0uint_lte_uint64
+
+implement g0uint_gt<uint64knd> =
+  g0uint_gt_uint64
+
+implement g0uint_gte<uint64knd> =
+  g0uint_gte_uint64
+
+implement g0uint_eq<uint64knd> =
+  g0uint_eq_uint64
+
+implement g0uint_neq<uint64knd> =
+  g0uint_neq_uint64
+
+implement g0uint_compare<uint64knd> =
+  g0uint_compare_uint64
+
+implement g0uint_max<uint64knd> =
+  g0uint_max_uint64
+
+implement g0uint_min<uint64knd> =
+  g0uint_min_uint64
+
+//
+implement fprint_val<uint64> (out, x) =
+  fprint_uint64((out, x))
+
+//
+(* ****** ****** *)
+(* end of [integer_fixed.dats] *)
diff --git a/test/data/stdlib/DATS/integer_long.out b/test/data/stdlib/DATS/integer_long.out
new file mode 100644
--- /dev/null
+++ b/test/data/stdlib/DATS/integer_long.out
@@ -0,0 +1,813 @@
+(***********************************************************************)
+(*                                                                     *)
+(*                         Applied Type System                         *)
+(*                                                                     *)
+(***********************************************************************)
+(*
+** ATS/Postiats - Unleashing the Potential of Types!
+** Copyright (C) 2010-2015 Hongwei Xi, ATS Trustful Software, Inc.
+** All rights reserved
+**
+** ATS is free software;  you can  redistribute it and/or modify it under
+** the terms of  the GNU GENERAL PUBLIC LICENSE (GPL) as published by the
+** Free Software Foundation; either version 3, or (at  your  option)  any
+** later version.
+**
+** ATS is distributed in the hope that it will be useful, but WITHOUT ANY
+** WARRANTY; without  even  the  implied  warranty  of MERCHANTABILITY or
+** FITNESS FOR A PARTICULAR PURPOSE.  See the  GNU General Public License
+** for more details.
+**
+** You  should  have  received  a  copy of the GNU General Public License
+** along  with  ATS;  see the  file COPYING.  If not, please write to the
+** Free Software Foundation,  51 Franklin Street, Fifth Floor, Boston, MA
+** 02110-1301, USA.
+*)
+(* ****** ****** *)
+(* Author: Hongwei Xi *)
+(* Authoremail: gmhwxiATgmailDOTcom *)
+(* Start time: February, 2014 *)
+(* ****** ****** *)
+(*
+** Source:
+** $PATSHOME/prelude/DATS/CODEGEN/integer_long.atxt
+** Time of generation: Thu Jan 11 11:00:12 2018
+*)
+(* ****** ****** *)
+#define ATS_DYNLOADFLAG 0
+
+// no dynloading
+(* ****** ****** *)
+//
+staload UN = "prelude/SATS/unsafe.sats"
+
+//
+(* ****** ****** *)
+//
+implement g0int2int<intknd,lintknd> =
+  g0int2int_int_lint
+
+implement g1int2int<intknd,lintknd> =
+  g1int2int_int_lint
+
+//
+implement g0uint2int<uintknd,lintknd> =
+  g0uint2int_uint_lint
+
+implement g1uint2int<uintknd,lintknd> =
+  g1uint2int_uint_lint
+
+//
+(* ****** ****** *)
+//
+implement g0int2uint<intknd,ulintknd> =
+  g0int2uint_int_ulint
+
+implement g1int2uint<intknd,ulintknd> =
+  g1int2uint_int_ulint
+
+//
+implement g0uint2uint<uintknd,ulintknd> =
+  g0uint2uint_uint_ulint
+
+implement g1uint2uint<uintknd,ulintknd> =
+  g1uint2uint_uint_ulint
+
+//
+(* ****** ****** *)
+//
+implement g0int2int<intknd,llintknd> =
+  g0int2int_int_llint
+
+implement g1int2int<intknd,llintknd> =
+  g1int2int_int_llint
+
+//
+implement g0uint2int<uintknd,llintknd> =
+  g0uint2int_uint_llint
+
+implement g1uint2int<uintknd,llintknd> =
+  g1uint2int_uint_llint
+
+//
+(* ****** ****** *)
+//
+implement g0int2uint<intknd,ullintknd> =
+  g0int2uint_int_ullint
+
+implement g1int2uint<intknd,ullintknd> =
+  g1int2uint_int_ullint
+
+//
+implement g0uint2uint<uintknd,ullintknd> =
+  g0uint2uint_uint_ullint
+
+implement g1uint2uint<uintknd,ullintknd> =
+  g1uint2uint_uint_ullint
+
+//
+(* ****** ****** *)
+//
+implement g0int2int<lintknd,lintknd> =
+  g0int2int_lint_lint
+
+implement g0int2int<lintknd,llintknd> =
+  g0int2int_lint_llint
+
+//
+implement g0int2uint<lintknd,ulintknd> =
+  g0int2uint_lint_ulint
+
+implement g0int2uint<lintknd,ullintknd> =
+  g0int2uint_lint_ullint
+
+//
+(* ****** ****** *)
+//
+implement g0uint2int<ulintknd,lintknd> =
+  g0uint2int_ulint_lint
+
+implement g0uint2int<ulintknd,llintknd> =
+  g0uint2int_ulint_llint
+
+//
+implement g0uint2uint<ulintknd,ulintknd> =
+  g0uint2uint_ulint_ulint
+
+implement g0uint2uint<ulintknd,ullintknd> =
+  g0uint2uint_ulint_ullint
+
+//
+(* ****** ****** *)
+//
+implement g0int2int<llintknd,llintknd> =
+  g0int2int_llint_llint
+
+//
+implement g0int2uint<llintknd,ullintknd> =
+  g0int2uint_llint_ullint
+
+//
+(* ****** ****** *)
+//
+implement g0uint2int<ullintknd,llintknd> =
+  g0uint2int_ullint_llint
+
+//
+implement g0uint2uint<ullintknd,ullintknd> =
+  g0uint2uint_ullint_ullint
+
+//
+(* ****** ****** *)
+//
+implement g0int2string<lintknd> =
+  g0int2string_lint
+
+implement g0int2string<llintknd> =
+  g0int2string_llint
+
+//
+implement g0string2int<lintknd> =
+  g0string2int_lint
+
+implement g0string2int<llintknd> =
+  g0string2int_llint
+
+implement g0string2uint<ulintknd> =
+  g0string2uint_ulint
+
+implement g0string2uint<ullintknd> =
+  g0string2uint_ullint
+
+//
+(* ****** ****** *)
+//
+implement g0int_neg<lintknd> =
+  g0int_neg_lint
+
+implement g0int_abs<lintknd> =
+  g0int_abs_lint
+
+implement g0int_succ<lintknd> =
+  g0int_succ_lint
+
+implement g0int_pred<lintknd> =
+  g0int_pred_lint
+
+implement g0int_half<lintknd> =
+  g0int_half_lint
+
+implement g0int_add<lintknd> =
+  g0int_add_lint
+
+implement g0int_sub<lintknd> =
+  g0int_sub_lint
+
+implement g0int_mul<lintknd> =
+  g0int_mul_lint
+
+implement g0int_div<lintknd> =
+  g0int_div_lint
+
+implement g0int_mod<lintknd> =
+  g0int_mod_lint
+
+implement g0int_asl<lintknd> =
+  g0int_asl_lint
+
+implement g0int_asr<lintknd> =
+  g0int_asr_lint
+
+implement g0int_isltz<lintknd> =
+  g0int_isltz_lint
+
+implement g0int_isltez<lintknd> =
+  g0int_isltez_lint
+
+implement g0int_isgtz<lintknd> =
+  g0int_isgtz_lint
+
+implement g0int_isgtez<lintknd> =
+  g0int_isgtez_lint
+
+implement g0int_iseqz<lintknd> =
+  g0int_iseqz_lint
+
+implement g0int_isneqz<lintknd> =
+  g0int_isneqz_lint
+
+implement g0int_lt<lintknd> =
+  g0int_lt_lint
+
+implement g0int_lte<lintknd> =
+  g0int_lte_lint
+
+implement g0int_gt<lintknd> =
+  g0int_gt_lint
+
+implement g0int_gte<lintknd> =
+  g0int_gte_lint
+
+implement g0int_eq<lintknd> =
+  g0int_eq_lint
+
+implement g0int_neq<lintknd> =
+  g0int_neq_lint
+
+implement g0int_compare<lintknd> =
+  g0int_compare_lint
+
+implement g0int_max<lintknd> =
+  g0int_max_lint
+
+implement g0int_min<lintknd> =
+  g0int_min_lint
+
+//
+implement fprint_val<lint> (out, x) =
+  fprint_lint((out, x))
+
+//
+implement g1int_neg<lintknd> =
+  g1int_neg_lint
+
+implement g1int_abs<lintknd> =
+  g1int_abs_lint
+
+implement g1int_succ<lintknd> =
+  g1int_succ_lint
+
+implement g1int_pred<lintknd> =
+  g1int_pred_lint
+
+implement g1int_half<lintknd> =
+  g1int_half_lint
+
+implement g1int_add<lintknd> =
+  g1int_add_lint
+
+implement g1int_sub<lintknd> =
+  g1int_sub_lint
+
+implement g1int_mul<lintknd> =
+  g1int_mul_lint
+
+implement g1int_div<lintknd> =
+  g1int_div_lint
+
+implement g1int_nmod<lintknd> =
+  g1int_nmod_lint
+
+implement g1int_isltz<lintknd> =
+  g1int_isltz_lint
+
+implement g1int_isltez<lintknd> =
+  g1int_isltez_lint
+
+implement g1int_isgtz<lintknd> =
+  g1int_isgtz_lint
+
+implement g1int_isgtez<lintknd> =
+  g1int_isgtez_lint
+
+implement g1int_iseqz<lintknd> =
+  g1int_iseqz_lint
+
+implement g1int_isneqz<lintknd> =
+  g1int_isneqz_lint
+
+implement g1int_lt<lintknd> =
+  g1int_lt_lint
+
+implement g1int_lte<lintknd> =
+  g1int_lte_lint
+
+implement g1int_gt<lintknd> =
+  g1int_gt_lint
+
+implement g1int_gte<lintknd> =
+  g1int_gte_lint
+
+implement g1int_eq<lintknd> =
+  g1int_eq_lint
+
+implement g1int_neq<lintknd> =
+  g1int_neq_lint
+
+implement g1int_compare<lintknd> =
+  g1int_compare_lint
+
+implement g1int_max<lintknd> =
+  g1int_max_lint
+
+implement g1int_min<lintknd> =
+  g1int_min_lint
+
+//
+(* ****** ****** *)
+//
+implement g0int_neg<llintknd> =
+  g0int_neg_llint
+
+implement g0int_abs<llintknd> =
+  g0int_abs_llint
+
+implement g0int_succ<llintknd> =
+  g0int_succ_llint
+
+implement g0int_pred<llintknd> =
+  g0int_pred_llint
+
+implement g0int_half<llintknd> =
+  g0int_half_llint
+
+implement g0int_add<llintknd> =
+  g0int_add_llint
+
+implement g0int_sub<llintknd> =
+  g0int_sub_llint
+
+implement g0int_mul<llintknd> =
+  g0int_mul_llint
+
+implement g0int_div<llintknd> =
+  g0int_div_llint
+
+implement g0int_mod<llintknd> =
+  g0int_mod_llint
+
+implement g0int_asl<llintknd> =
+  g0int_asl_llint
+
+implement g0int_asr<llintknd> =
+  g0int_asr_llint
+
+implement g0int_isltz<llintknd> =
+  g0int_isltz_llint
+
+implement g0int_isltez<llintknd> =
+  g0int_isltez_llint
+
+implement g0int_isgtz<llintknd> =
+  g0int_isgtz_llint
+
+implement g0int_isgtez<llintknd> =
+  g0int_isgtez_llint
+
+implement g0int_iseqz<llintknd> =
+  g0int_iseqz_llint
+
+implement g0int_isneqz<llintknd> =
+  g0int_isneqz_llint
+
+implement g0int_lt<llintknd> =
+  g0int_lt_llint
+
+implement g0int_lte<llintknd> =
+  g0int_lte_llint
+
+implement g0int_gt<llintknd> =
+  g0int_gt_llint
+
+implement g0int_gte<llintknd> =
+  g0int_gte_llint
+
+implement g0int_eq<llintknd> =
+  g0int_eq_llint
+
+implement g0int_neq<llintknd> =
+  g0int_neq_llint
+
+implement g0int_compare<llintknd> =
+  g0int_compare_llint
+
+implement g0int_max<llintknd> =
+  g0int_max_llint
+
+implement g0int_min<llintknd> =
+  g0int_min_llint
+
+//
+implement fprint_val<llint> (out, x) =
+  fprint_llint((out, x))
+
+//
+implement g1int_neg<llintknd> =
+  g1int_neg_llint
+
+implement g1int_abs<llintknd> =
+  g1int_abs_llint
+
+implement g1int_succ<llintknd> =
+  g1int_succ_llint
+
+implement g1int_pred<llintknd> =
+  g1int_pred_llint
+
+implement g1int_half<llintknd> =
+  g1int_half_llint
+
+implement g1int_add<llintknd> =
+  g1int_add_llint
+
+implement g1int_sub<llintknd> =
+  g1int_sub_llint
+
+implement g1int_mul<llintknd> =
+  g1int_mul_llint
+
+implement g1int_div<llintknd> =
+  g1int_div_llint
+
+implement g1int_nmod<llintknd> =
+  g1int_nmod_llint
+
+implement g1int_isltz<llintknd> =
+  g1int_isltz_llint
+
+implement g1int_isltez<llintknd> =
+  g1int_isltez_llint
+
+implement g1int_isgtz<llintknd> =
+  g1int_isgtz_llint
+
+implement g1int_isgtez<llintknd> =
+  g1int_isgtez_llint
+
+implement g1int_iseqz<llintknd> =
+  g1int_iseqz_llint
+
+implement g1int_isneqz<llintknd> =
+  g1int_isneqz_llint
+
+implement g1int_lt<llintknd> =
+  g1int_lt_llint
+
+implement g1int_lte<llintknd> =
+  g1int_lte_llint
+
+implement g1int_gt<llintknd> =
+  g1int_gt_llint
+
+implement g1int_gte<llintknd> =
+  g1int_gte_llint
+
+implement g1int_eq<llintknd> =
+  g1int_eq_llint
+
+implement g1int_neq<llintknd> =
+  g1int_neq_llint
+
+implement g1int_compare<llintknd> =
+  g1int_compare_llint
+
+implement g1int_max<llintknd> =
+  g1int_max_llint
+
+implement g1int_min<llintknd> =
+  g1int_min_llint
+
+//
+(* ****** ****** *)
+//
+implement g0uint_succ<ulintknd> =
+  g0uint_succ_ulint
+
+implement g0uint_pred<ulintknd> =
+  g0uint_pred_ulint
+
+implement g0uint_half<ulintknd> =
+  g0uint_half_ulint
+
+implement g0uint_add<ulintknd> =
+  g0uint_add_ulint
+
+implement g0uint_sub<ulintknd> =
+  g0uint_sub_ulint
+
+implement g0uint_mul<ulintknd> =
+  g0uint_mul_ulint
+
+implement g0uint_div<ulintknd> =
+  g0uint_div_ulint
+
+implement g0uint_mod<ulintknd> =
+  g0uint_mod_ulint
+
+implement g0uint_lsl<ulintknd> =
+  g0uint_lsl_ulint
+
+implement g0uint_lsr<ulintknd> =
+  g0uint_lsr_ulint
+
+implement g0uint_lnot<ulintknd> =
+  g0uint_lnot_ulint
+
+implement g0uint_lor<ulintknd> =
+  g0uint_lor_ulint
+
+implement g0uint_lxor<ulintknd> =
+  g0uint_lxor_ulint
+
+implement g0uint_land<ulintknd> =
+  g0uint_land_ulint
+
+implement g0uint_isgtz<ulintknd> =
+  g0uint_isgtz_ulint
+
+implement g0uint_iseqz<ulintknd> =
+  g0uint_iseqz_ulint
+
+implement g0uint_isneqz<ulintknd> =
+  g0uint_isneqz_ulint
+
+implement g0uint_lt<ulintknd> =
+  g0uint_lt_ulint
+
+implement g0uint_lte<ulintknd> =
+  g0uint_lte_ulint
+
+implement g0uint_gt<ulintknd> =
+  g0uint_gt_ulint
+
+implement g0uint_gte<ulintknd> =
+  g0uint_gte_ulint
+
+implement g0uint_eq<ulintknd> =
+  g0uint_eq_ulint
+
+implement g0uint_neq<ulintknd> =
+  g0uint_neq_ulint
+
+implement g0uint_compare<ulintknd> =
+  g0uint_compare_ulint
+
+implement g0uint_max<ulintknd> =
+  g0uint_max_ulint
+
+implement g0uint_min<ulintknd> =
+  g0uint_min_ulint
+
+//
+implement fprint_val<ulint> (out, x) =
+  fprint_ulint((out, x))
+
+//
+implement g1uint_succ<ulintknd> =
+  g1uint_succ_ulint
+
+implement g1uint_pred<ulintknd> =
+  g1uint_pred_ulint
+
+implement g1uint_half<ulintknd> =
+  g1uint_half_ulint
+
+implement g1uint_add<ulintknd> =
+  g1uint_add_ulint
+
+implement g1uint_sub<ulintknd> =
+  g1uint_sub_ulint
+
+implement g1uint_mul<ulintknd> =
+  g1uint_mul_ulint
+
+implement g1uint_div<ulintknd> =
+  g1uint_div_ulint
+
+implement g1uint_mod<ulintknd> =
+  g1uint_mod_ulint
+
+implement g1uint_isgtz<ulintknd> =
+  g1uint_isgtz_ulint
+
+implement g1uint_iseqz<ulintknd> =
+  g1uint_iseqz_ulint
+
+implement g1uint_isneqz<ulintknd> =
+  g1uint_isneqz_ulint
+
+implement g1uint_lt<ulintknd> =
+  g1uint_lt_ulint
+
+implement g1uint_lte<ulintknd> =
+  g1uint_lte_ulint
+
+implement g1uint_gt<ulintknd> =
+  g1uint_gt_ulint
+
+implement g1uint_gte<ulintknd> =
+  g1uint_gte_ulint
+
+implement g1uint_eq<ulintknd> =
+  g1uint_eq_ulint
+
+implement g1uint_neq<ulintknd> =
+  g1uint_neq_ulint
+
+implement g1uint_compare<ulintknd> =
+  g1uint_compare_ulint
+
+implement g1uint_max<ulintknd> =
+  g1uint_max_ulint
+
+implement g1uint_min<ulintknd> =
+  g1uint_min_ulint
+
+//
+(* ****** ****** *)
+//
+implement g0uint_succ<ullintknd> =
+  g0uint_succ_ullint
+
+implement g0uint_pred<ullintknd> =
+  g0uint_pred_ullint
+
+implement g0uint_half<ullintknd> =
+  g0uint_half_ullint
+
+implement g0uint_add<ullintknd> =
+  g0uint_add_ullint
+
+implement g0uint_sub<ullintknd> =
+  g0uint_sub_ullint
+
+implement g0uint_mul<ullintknd> =
+  g0uint_mul_ullint
+
+implement g0uint_div<ullintknd> =
+  g0uint_div_ullint
+
+implement g0uint_mod<ullintknd> =
+  g0uint_mod_ullint
+
+implement g0uint_lsl<ullintknd> =
+  g0uint_lsl_ullint
+
+implement g0uint_lsr<ullintknd> =
+  g0uint_lsr_ullint
+
+implement g0uint_lnot<ullintknd> =
+  g0uint_lnot_ullint
+
+implement g0uint_lor<ullintknd> =
+  g0uint_lor_ullint
+
+implement g0uint_lxor<ullintknd> =
+  g0uint_lxor_ullint
+
+implement g0uint_land<ullintknd> =
+  g0uint_land_ullint
+
+implement g0uint_isgtz<ullintknd> =
+  g0uint_isgtz_ullint
+
+implement g0uint_iseqz<ullintknd> =
+  g0uint_iseqz_ullint
+
+implement g0uint_isneqz<ullintknd> =
+  g0uint_isneqz_ullint
+
+implement g0uint_lt<ullintknd> =
+  g0uint_lt_ullint
+
+implement g0uint_lte<ullintknd> =
+  g0uint_lte_ullint
+
+implement g0uint_gt<ullintknd> =
+  g0uint_gt_ullint
+
+implement g0uint_gte<ullintknd> =
+  g0uint_gte_ullint
+
+implement g0uint_eq<ullintknd> =
+  g0uint_eq_ullint
+
+implement g0uint_neq<ullintknd> =
+  g0uint_neq_ullint
+
+implement g0uint_compare<ullintknd> =
+  g0uint_compare_ullint
+
+implement g0uint_max<ullintknd> =
+  g0uint_max_ullint
+
+implement g0uint_min<ullintknd> =
+  g0uint_min_ullint
+
+//
+implement fprint_val<ullint> (out, x) =
+  fprint_ullint((out, x))
+
+//
+implement g1uint_succ<ullintknd> =
+  g1uint_succ_ullint
+
+implement g1uint_pred<ullintknd> =
+  g1uint_pred_ullint
+
+implement g1uint_half<ullintknd> =
+  g1uint_half_ullint
+
+implement g1uint_add<ullintknd> =
+  g1uint_add_ullint
+
+implement g1uint_sub<ullintknd> =
+  g1uint_sub_ullint
+
+implement g1uint_mul<ullintknd> =
+  g1uint_mul_ullint
+
+implement g1uint_div<ullintknd> =
+  g1uint_div_ullint
+
+implement g1uint_mod<ullintknd> =
+  g1uint_mod_ullint
+
+implement g1uint_isgtz<ullintknd> =
+  g1uint_isgtz_ullint
+
+implement g1uint_iseqz<ullintknd> =
+  g1uint_iseqz_ullint
+
+implement g1uint_isneqz<ullintknd> =
+  g1uint_isneqz_ullint
+
+implement g1uint_lt<ullintknd> =
+  g1uint_lt_ullint
+
+implement g1uint_lte<ullintknd> =
+  g1uint_lte_ullint
+
+implement g1uint_gt<ullintknd> =
+  g1uint_gt_ullint
+
+implement g1uint_gte<ullintknd> =
+  g1uint_gte_ullint
+
+implement g1uint_eq<ullintknd> =
+  g1uint_eq_ullint
+
+implement g1uint_neq<ullintknd> =
+  g1uint_neq_ullint
+
+implement g1uint_compare<ullintknd> =
+  g1uint_compare_ullint
+
+implement g1uint_max<ullintknd> =
+  g1uint_max_ullint
+
+implement g1uint_min<ullintknd> =
+  g1uint_min_ullint
+
+//
+(* ****** ****** *)
+//
+implement nmod_g1int_int1<lintknd> (x, y) =
+  g1i2i(g1int_nmod<lintknd>(x, g1i2i(y)))
+
+implement nmod_g1int_int1<llintknd> (x, y) =
+  g1i2i(g1int_nmod<llintknd>(x, g1i2i(y)))
+
+//
+(* ****** ****** *)
+(* end of [integer_long.dats] *)
diff --git a/test/data/stdlib/DATS/integer_ptr.out b/test/data/stdlib/DATS/integer_ptr.out
new file mode 100644
--- /dev/null
+++ b/test/data/stdlib/DATS/integer_ptr.out
@@ -0,0 +1,231 @@
+(***********************************************************************)
+(*                                                                     *)
+(*                         Applied Type System                         *)
+(*                                                                     *)
+(***********************************************************************)
+(*
+** ATS/Postiats - Unleashing the Potential of Types!
+** Copyright (C) 2010-2015 Hongwei Xi, ATS Trustful Software, Inc.
+** All rights reserved
+**
+** ATS is free software;  you can  redistribute it and/or modify it under
+** the terms of  the GNU GENERAL PUBLIC LICENSE (GPL) as published by the
+** Free Software Foundation; either version 3, or (at  your  option)  any
+** later version.
+**
+** ATS is distributed in the hope that it will be useful, but WITHOUT ANY
+** WARRANTY; without  even  the  implied  warranty  of MERCHANTABILITY or
+** FITNESS FOR A PARTICULAR PURPOSE.  See the  GNU General Public License
+** for more details.
+**
+** You  should  have  received  a  copy of the GNU General Public License
+** along  with  ATS;  see the  file COPYING.  If not, please write to the
+** Free Software Foundation,  51 Franklin Street, Fifth Floor, Boston, MA
+** 02110-1301, USA.
+*)
+(* ****** ****** *)
+(* Author: Hongwei Xi *)
+(* Authoremail: gmhwxiATgmailDOTcom *)
+(* Start time: February, 2014 *)
+(* ****** ****** *)
+(*
+** Source:
+** $PATSHOME/prelude/DATS/CODEGEN/integer_ptr.atxt
+** Time of generation: Thu Jan 11 11:00:14 2018
+*)
+(* ****** ****** *)
+#define ATS_DYNLOADFLAG 0
+
+// no dynloading
+(* ****** ****** *)
+//
+staload UN = "prelude/SATS/unsafe.sats"
+
+//
+(* ****** ****** *)
+implement g0int2int<intknd,intptrknd> =
+  g0int2int_int_intptr
+
+implement g0int2int<lintknd,intptrknd> =
+  g0int2int_lint_intptr
+
+(* ****** ****** *)
+implement g0uint2uint<uintknd,uintptrknd> =
+  g0uint2uint_uint_uintptr
+
+implement g0uint2uint<ulintknd,uintptrknd> =
+  g0uint2uint_ulint_uintptr
+
+(* ****** ****** *)
+//
+implement g0int_neg<intptrknd> =
+  g0int_neg_intptr
+
+implement g0int_abs<intptrknd> =
+  g0int_abs_intptr
+
+implement g0int_succ<intptrknd> =
+  g0int_succ_intptr
+
+implement g0int_pred<intptrknd> =
+  g0int_pred_intptr
+
+implement g0int_half<intptrknd> =
+  g0int_half_intptr
+
+implement g0int_add<intptrknd> =
+  g0int_add_intptr
+
+implement g0int_sub<intptrknd> =
+  g0int_sub_intptr
+
+implement g0int_mul<intptrknd> =
+  g0int_mul_intptr
+
+implement g0int_div<intptrknd> =
+  g0int_div_intptr
+
+implement g0int_mod<intptrknd> =
+  g0int_mod_intptr
+
+implement g0int_asl<intptrknd> =
+  g0int_asl_intptr
+
+implement g0int_asr<intptrknd> =
+  g0int_asr_intptr
+
+implement g0int_isltz<intptrknd> =
+  g0int_isltz_intptr
+
+implement g0int_isltez<intptrknd> =
+  g0int_isltez_intptr
+
+implement g0int_isgtz<intptrknd> =
+  g0int_isgtz_intptr
+
+implement g0int_isgtez<intptrknd> =
+  g0int_isgtez_intptr
+
+implement g0int_iseqz<intptrknd> =
+  g0int_iseqz_intptr
+
+implement g0int_isneqz<intptrknd> =
+  g0int_isneqz_intptr
+
+implement g0int_lt<intptrknd> =
+  g0int_lt_intptr
+
+implement g0int_lte<intptrknd> =
+  g0int_lte_intptr
+
+implement g0int_gt<intptrknd> =
+  g0int_gt_intptr
+
+implement g0int_gte<intptrknd> =
+  g0int_gte_intptr
+
+implement g0int_eq<intptrknd> =
+  g0int_eq_intptr
+
+implement g0int_neq<intptrknd> =
+  g0int_neq_intptr
+
+implement g0int_compare<intptrknd> =
+  g0int_compare_intptr
+
+implement g0int_max<intptrknd> =
+  g0int_max_intptr
+
+implement g0int_min<intptrknd> =
+  g0int_min_intptr
+
+//
+implement fprint_val<intptr> (out, x) =
+  fprint_intptr((out, x))
+
+//
+implement g0uint_succ<uintptrknd> =
+  g0uint_succ_uintptr
+
+implement g0uint_pred<uintptrknd> =
+  g0uint_pred_uintptr
+
+implement g0uint_half<uintptrknd> =
+  g0uint_half_uintptr
+
+implement g0uint_add<uintptrknd> =
+  g0uint_add_uintptr
+
+implement g0uint_sub<uintptrknd> =
+  g0uint_sub_uintptr
+
+implement g0uint_mul<uintptrknd> =
+  g0uint_mul_uintptr
+
+implement g0uint_div<uintptrknd> =
+  g0uint_div_uintptr
+
+implement g0uint_mod<uintptrknd> =
+  g0uint_mod_uintptr
+
+implement g0uint_lsl<uintptrknd> =
+  g0uint_lsl_uintptr
+
+implement g0uint_lsr<uintptrknd> =
+  g0uint_lsr_uintptr
+
+implement g0uint_lnot<uintptrknd> =
+  g0uint_lnot_uintptr
+
+implement g0uint_lor<uintptrknd> =
+  g0uint_lor_uintptr
+
+implement g0uint_lxor<uintptrknd> =
+  g0uint_lxor_uintptr
+
+implement g0uint_land<uintptrknd> =
+  g0uint_land_uintptr
+
+implement g0uint_isgtz<uintptrknd> =
+  g0uint_isgtz_uintptr
+
+implement g0uint_iseqz<uintptrknd> =
+  g0uint_iseqz_uintptr
+
+implement g0uint_isneqz<uintptrknd> =
+  g0uint_isneqz_uintptr
+
+implement g0uint_lt<uintptrknd> =
+  g0uint_lt_uintptr
+
+implement g0uint_lte<uintptrknd> =
+  g0uint_lte_uintptr
+
+implement g0uint_gt<uintptrknd> =
+  g0uint_gt_uintptr
+
+implement g0uint_gte<uintptrknd> =
+  g0uint_gte_uintptr
+
+implement g0uint_eq<uintptrknd> =
+  g0uint_eq_uintptr
+
+implement g0uint_neq<uintptrknd> =
+  g0uint_neq_uintptr
+
+implement g0uint_compare<uintptrknd> =
+  g0uint_compare_uintptr
+
+implement g0uint_max<uintptrknd> =
+  g0uint_max_uintptr
+
+implement g0uint_min<uintptrknd> =
+  g0uint_min_uintptr
+
+//
+implement fprint_val<uintptr> (out, x) =
+  fprint_uintptr((out, x))
+
+//
+(* ****** ****** *)
+(* end of [integer_ptr.dats] *)
diff --git a/test/data/stdlib/DATS/integer_short.out b/test/data/stdlib/DATS/integer_short.out
new file mode 100644
--- /dev/null
+++ b/test/data/stdlib/DATS/integer_short.out
@@ -0,0 +1,235 @@
+(***********************************************************************)
+(*                                                                     *)
+(*                         Applied Type System                         *)
+(*                                                                     *)
+(***********************************************************************)
+(*
+** ATS/Postiats - Unleashing the Potential of Types!
+** Copyright (C) 2010-2015 Hongwei Xi, ATS Trustful Software, Inc.
+** All rights reserved
+**
+** ATS is free software;  you can  redistribute it and/or modify it under
+** the terms of  the GNU GENERAL PUBLIC LICENSE (GPL) as published by the
+** Free Software Foundation; either version 3, or (at  your  option)  any
+** later version.
+**
+** ATS is distributed in the hope that it will be useful, but WITHOUT ANY
+** WARRANTY; without  even  the  implied  warranty  of MERCHANTABILITY or
+** FITNESS FOR A PARTICULAR PURPOSE.  See the  GNU General Public License
+** for more details.
+**
+** You  should  have  received  a  copy of the GNU General Public License
+** along  with  ATS;  see the  file COPYING.  If not, please write to the
+** Free Software Foundation,  51 Franklin Street, Fifth Floor, Boston, MA
+** 02110-1301, USA.
+*)
+(* ****** ****** *)
+(* Author: Hongwei Xi *)
+(* Authoremail: gmhwxiATgmailDOTcom *)
+(* Start time: February, 2014 *)
+(* ****** ****** *)
+(*
+** Source:
+** $PATSHOME/prelude/DATS/CODEGEN/integer_short.atxt
+** Time of generation: Thu Jan 11 11:00:12 2018
+*)
+(* ****** ****** *)
+#define ATS_DYNLOADFLAG 0
+
+// no dynloading
+(* ****** ****** *)
+//
+staload UN = "prelude/SATS/unsafe.sats"
+
+//
+(* ****** ****** *)
+//
+implement g0int2int<sintknd,intknd> =
+  g0int2int_sint_int
+
+implement g0int2uint<sintknd,uintknd> =
+  g0int2uint_sint_uint
+
+//
+(* ****** ****** *)
+//
+implement g0uint2int<usintknd,intknd> =
+  g0uint2int_usint_int
+
+implement g0uint2uint<usintknd,uintknd> =
+  g0uint2uint_usint_uint
+
+//
+(* ****** ****** *)
+//
+implement g0int_neg<sintknd> =
+  g0int_neg_sint
+
+implement g0int_abs<sintknd> =
+  g0int_abs_sint
+
+implement g0int_succ<sintknd> =
+  g0int_succ_sint
+
+implement g0int_pred<sintknd> =
+  g0int_pred_sint
+
+implement g0int_half<sintknd> =
+  g0int_half_sint
+
+implement g0int_add<sintknd> =
+  g0int_add_sint
+
+implement g0int_sub<sintknd> =
+  g0int_sub_sint
+
+implement g0int_mul<sintknd> =
+  g0int_mul_sint
+
+implement g0int_div<sintknd> =
+  g0int_div_sint
+
+implement g0int_mod<sintknd> =
+  g0int_mod_sint
+
+implement g0int_asl<sintknd> =
+  g0int_asl_sint
+
+implement g0int_asr<sintknd> =
+  g0int_asr_sint
+
+implement g0int_isltz<sintknd> =
+  g0int_isltz_sint
+
+implement g0int_isltez<sintknd> =
+  g0int_isltez_sint
+
+implement g0int_isgtz<sintknd> =
+  g0int_isgtz_sint
+
+implement g0int_isgtez<sintknd> =
+  g0int_isgtez_sint
+
+implement g0int_iseqz<sintknd> =
+  g0int_iseqz_sint
+
+implement g0int_isneqz<sintknd> =
+  g0int_isneqz_sint
+
+implement g0int_lt<sintknd> =
+  g0int_lt_sint
+
+implement g0int_lte<sintknd> =
+  g0int_lte_sint
+
+implement g0int_gt<sintknd> =
+  g0int_gt_sint
+
+implement g0int_gte<sintknd> =
+  g0int_gte_sint
+
+implement g0int_eq<sintknd> =
+  g0int_eq_sint
+
+implement g0int_neq<sintknd> =
+  g0int_neq_sint
+
+implement g0int_compare<sintknd> =
+  g0int_compare_sint
+
+implement g0int_max<sintknd> =
+  g0int_max_sint
+
+implement g0int_min<sintknd> =
+  g0int_min_sint
+
+//
+implement fprint_val<sint> (out, x) =
+  fprint_sint((out, x))
+
+//
+implement g0uint_succ<usintknd> =
+  g0uint_succ_usint
+
+implement g0uint_pred<usintknd> =
+  g0uint_pred_usint
+
+implement g0uint_half<usintknd> =
+  g0uint_half_usint
+
+implement g0uint_add<usintknd> =
+  g0uint_add_usint
+
+implement g0uint_sub<usintknd> =
+  g0uint_sub_usint
+
+implement g0uint_mul<usintknd> =
+  g0uint_mul_usint
+
+implement g0uint_div<usintknd> =
+  g0uint_div_usint
+
+implement g0uint_mod<usintknd> =
+  g0uint_mod_usint
+
+implement g0uint_lsl<usintknd> =
+  g0uint_lsl_usint
+
+implement g0uint_lsr<usintknd> =
+  g0uint_lsr_usint
+
+implement g0uint_lnot<usintknd> =
+  g0uint_lnot_usint
+
+implement g0uint_lor<usintknd> =
+  g0uint_lor_usint
+
+implement g0uint_lxor<usintknd> =
+  g0uint_lxor_usint
+
+implement g0uint_land<usintknd> =
+  g0uint_land_usint
+
+implement g0uint_isgtz<usintknd> =
+  g0uint_isgtz_usint
+
+implement g0uint_iseqz<usintknd> =
+  g0uint_iseqz_usint
+
+implement g0uint_isneqz<usintknd> =
+  g0uint_isneqz_usint
+
+implement g0uint_lt<usintknd> =
+  g0uint_lt_usint
+
+implement g0uint_lte<usintknd> =
+  g0uint_lte_usint
+
+implement g0uint_gt<usintknd> =
+  g0uint_gt_usint
+
+implement g0uint_gte<usintknd> =
+  g0uint_gte_usint
+
+implement g0uint_eq<usintknd> =
+  g0uint_eq_usint
+
+implement g0uint_neq<usintknd> =
+  g0uint_neq_usint
+
+implement g0uint_compare<usintknd> =
+  g0uint_compare_usint
+
+implement g0uint_max<usintknd> =
+  g0uint_max_usint
+
+implement g0uint_min<usintknd> =
+  g0uint_min_usint
+
+//
+implement fprint_val<usint> (out, x) =
+  fprint_usint((out, x))
+
+//
+(* ****** ****** *)
+(* end of [integer_short.dats] *)
diff --git a/test/data/stdlib/DATS/integer_size.out b/test/data/stdlib/DATS/integer_size.out
new file mode 100644
--- /dev/null
+++ b/test/data/stdlib/DATS/integer_size.out
@@ -0,0 +1,450 @@
+(***********************************************************************)
+(*                                                                     *)
+(*                         Applied Type System                         *)
+(*                                                                     *)
+(***********************************************************************)
+(*
+** ATS/Postiats - Unleashing the Potential of Types!
+** Copyright (C) 2010-2015 Hongwei Xi, ATS Trustful Software, Inc.
+** All rights reserved
+**
+** ATS is free software;  you can  redistribute it and/or modify it under
+** the terms of  the GNU GENERAL PUBLIC LICENSE (GPL) as published by the
+** Free Software Foundation; either version 3, or (at  your  option)  any
+** later version.
+**
+** ATS is distributed in the hope that it will be useful, but WITHOUT ANY
+** WARRANTY; without  even  the  implied  warranty  of MERCHANTABILITY or
+** FITNESS FOR A PARTICULAR PURPOSE.  See the  GNU General Public License
+** for more details.
+**
+** You  should  have  received  a  copy of the GNU General Public License
+** along  with  ATS;  see the  file COPYING.  If not, please write to the
+** Free Software Foundation,  51 Franklin Street, Fifth Floor, Boston, MA
+** 02110-1301, USA.
+*)
+(* ****** ****** *)
+(* Author: Hongwei Xi *)
+(* Authoremail: gmhwxiATgmailDOTcom *)
+(* Start time: May, 2012 *)
+(* ****** ****** *)
+(*
+** Source:
+** $PATSHOME/prelude/DATS/CODEGEN/integer_size.atxt
+** Time of generation: Thu Jan 11 11:00:12 2018
+*)
+(* ****** ****** *)
+#define ATS_DYNLOADFLAG 0
+
+// no dynloading
+(* ****** ****** *)
+//
+staload UN = "prelude/SATS/unsafe.sats"
+
+//
+(* ****** ****** *)
+//
+implement g0int2uint<intknd,sizeknd> =
+  g0int2uint_int_size
+
+implement g1int2uint<intknd,sizeknd> =
+  g1int2uint_int_size
+
+//
+implement g0uint2uint<uintknd,sizeknd> =
+  g0uint2uint_uint_size
+
+implement g1uint2uint<uintknd,sizeknd> =
+  g1uint2uint_uint_size
+
+//
+(* ****** ****** *)
+//
+implement g0int2int<intknd,ssizeknd> =
+  g0int2int_int_ssize
+
+implement g1int2int<intknd,ssizeknd> =
+  g1int2int_int_ssize
+
+//
+implement g0uint2int<uintknd,ssizeknd> =
+  g0uint2int_uint_ssize
+
+implement g1uint2int<uintknd,ssizeknd> =
+  g1uint2int_uint_ssize
+
+//
+(* ****** ****** *)
+//
+implement g0uint2int<sizeknd,intknd> =
+  g0uint2int_size_int
+
+implement g1uint2int<sizeknd,intknd> =
+  g1uint2int_size_int
+
+//
+implement g0uint2uint<sizeknd,uintknd> =
+  g0uint2uint_size_uint
+
+implement g1uint2uint<sizeknd,uintknd> =
+  g1uint2uint_size_uint
+
+//
+implement g0uint2uint<sizeknd,sizeknd> =
+  g0uint2uint_size_size
+
+implement g1uint2uint<sizeknd,sizeknd> =
+  g1uint2uint_size_size
+
+//
+(* ****** ****** *)
+//
+implement g0int2int<ssizeknd,intknd> =
+  g0int2int_ssize_int
+
+implement g1int2int<ssizeknd,intknd> =
+  g1int2int_ssize_int
+
+//
+implement g0int2uint<ssizeknd,uintknd> =
+  g0int2uint_ssize_uint
+
+implement g1int2uint<ssizeknd,uintknd> =
+  g1int2uint_ssize_uint
+
+//
+implement g0int2int<ssizeknd,ssizeknd> =
+  g0int2int_ssize_ssize
+
+implement g1int2int<ssizeknd,ssizeknd> =
+  g1int2int_ssize_ssize
+
+//
+(* ****** ****** *)
+//
+implement g0uint2int<sizeknd,ssizeknd> =
+  g0uint2int_size_ssize
+
+implement g1uint2int<sizeknd,ssizeknd> =
+  g1uint2int_size_ssize
+
+//
+implement g0int2uint<ssizeknd,sizeknd> =
+  g0int2uint_ssize_size
+
+implement g1int2uint<ssizeknd,sizeknd> =
+  g1int2uint_ssize_size
+
+//
+(* ****** ****** *)
+//
+implement g0uint_succ<sizeknd> =
+  g0uint_succ_size
+
+implement g0uint_pred<sizeknd> =
+  g0uint_pred_size
+
+implement g0uint_half<sizeknd> =
+  g0uint_half_size
+
+implement g0uint_add<sizeknd> =
+  g0uint_add_size
+
+implement g0uint_sub<sizeknd> =
+  g0uint_sub_size
+
+implement g0uint_mul<sizeknd> =
+  g0uint_mul_size
+
+implement g0uint_div<sizeknd> =
+  g0uint_div_size
+
+implement g0uint_mod<sizeknd> =
+  g0uint_mod_size
+
+implement g0uint_lsl<sizeknd> =
+  g0uint_lsl_size
+
+implement g0uint_lsr<sizeknd> =
+  g0uint_lsr_size
+
+implement g0uint_lnot<sizeknd> =
+  g0uint_lnot_size
+
+implement g0uint_lor<sizeknd> =
+  g0uint_lor_size
+
+implement g0uint_lxor<sizeknd> =
+  g0uint_lxor_size
+
+implement g0uint_land<sizeknd> =
+  g0uint_land_size
+
+implement g0uint_isgtz<sizeknd> =
+  g0uint_isgtz_size
+
+implement g0uint_iseqz<sizeknd> =
+  g0uint_iseqz_size
+
+implement g0uint_isneqz<sizeknd> =
+  g0uint_isneqz_size
+
+implement g0uint_lt<sizeknd> =
+  g0uint_lt_size
+
+implement g0uint_lte<sizeknd> =
+  g0uint_lte_size
+
+implement g0uint_gt<sizeknd> =
+  g0uint_gt_size
+
+implement g0uint_gte<sizeknd> =
+  g0uint_gte_size
+
+implement g0uint_eq<sizeknd> =
+  g0uint_eq_size
+
+implement g0uint_neq<sizeknd> =
+  g0uint_neq_size
+
+implement g0uint_compare<sizeknd> =
+  g0uint_compare_size
+
+implement g0uint_max<sizeknd> =
+  g0uint_max_size
+
+implement g0uint_min<sizeknd> =
+  g0uint_min_size
+
+//
+implement fprint_val<size_t> (out, x) =
+  fprint_size((out, x))
+
+//
+implement g1uint_succ<sizeknd> =
+  g1uint_succ_size
+
+implement g1uint_pred<sizeknd> =
+  g1uint_pred_size
+
+implement g1uint_half<sizeknd> =
+  g1uint_half_size
+
+implement g1uint_add<sizeknd> =
+  g1uint_add_size
+
+implement g1uint_sub<sizeknd> =
+  g1uint_sub_size
+
+implement g1uint_mul<sizeknd> =
+  g1uint_mul_size
+
+implement g1uint_div<sizeknd> =
+  g1uint_div_size
+
+implement g1uint_mod<sizeknd> =
+  g1uint_mod_size
+
+implement g1uint_isgtz<sizeknd> =
+  g1uint_isgtz_size
+
+implement g1uint_iseqz<sizeknd> =
+  g1uint_iseqz_size
+
+implement g1uint_isneqz<sizeknd> =
+  g1uint_isneqz_size
+
+implement g1uint_lt<sizeknd> =
+  g1uint_lt_size
+
+implement g1uint_lte<sizeknd> =
+  g1uint_lte_size
+
+implement g1uint_gt<sizeknd> =
+  g1uint_gt_size
+
+implement g1uint_gte<sizeknd> =
+  g1uint_gte_size
+
+implement g1uint_eq<sizeknd> =
+  g1uint_eq_size
+
+implement g1uint_neq<sizeknd> =
+  g1uint_neq_size
+
+implement g1uint_compare<sizeknd> =
+  g1uint_compare_size
+
+implement g1uint_max<sizeknd> =
+  g1uint_max_size
+
+implement g1uint_min<sizeknd> =
+  g1uint_min_size
+
+//
+(* ****** ****** *)
+//
+implement g0int_neg<ssizeknd> =
+  g0int_neg_ssize
+
+implement g0int_abs<ssizeknd> =
+  g0int_abs_ssize
+
+implement g0int_succ<ssizeknd> =
+  g0int_succ_ssize
+
+implement g0int_pred<ssizeknd> =
+  g0int_pred_ssize
+
+implement g0int_half<ssizeknd> =
+  g0int_half_ssize
+
+implement g0int_add<ssizeknd> =
+  g0int_add_ssize
+
+implement g0int_sub<ssizeknd> =
+  g0int_sub_ssize
+
+implement g0int_mul<ssizeknd> =
+  g0int_mul_ssize
+
+implement g0int_div<ssizeknd> =
+  g0int_div_ssize
+
+implement g0int_mod<ssizeknd> =
+  g0int_mod_ssize
+
+implement g0int_asl<ssizeknd> =
+  g0int_asl_ssize
+
+implement g0int_asr<ssizeknd> =
+  g0int_asr_ssize
+
+implement g0int_isltz<ssizeknd> =
+  g0int_isltz_ssize
+
+implement g0int_isltez<ssizeknd> =
+  g0int_isltez_ssize
+
+implement g0int_isgtz<ssizeknd> =
+  g0int_isgtz_ssize
+
+implement g0int_isgtez<ssizeknd> =
+  g0int_isgtez_ssize
+
+implement g0int_iseqz<ssizeknd> =
+  g0int_iseqz_ssize
+
+implement g0int_isneqz<ssizeknd> =
+  g0int_isneqz_ssize
+
+implement g0int_lt<ssizeknd> =
+  g0int_lt_ssize
+
+implement g0int_lte<ssizeknd> =
+  g0int_lte_ssize
+
+implement g0int_gt<ssizeknd> =
+  g0int_gt_ssize
+
+implement g0int_gte<ssizeknd> =
+  g0int_gte_ssize
+
+implement g0int_eq<ssizeknd> =
+  g0int_eq_ssize
+
+implement g0int_neq<ssizeknd> =
+  g0int_neq_ssize
+
+implement g0int_compare<ssizeknd> =
+  g0int_compare_ssize
+
+implement g0int_max<ssizeknd> =
+  g0int_max_ssize
+
+implement g0int_min<ssizeknd> =
+  g0int_min_ssize
+
+//
+implement fprint_val<ssize_t> (out, x) =
+  fprint_ssize((out, x))
+
+//
+implement g1int_neg<ssizeknd> =
+  g1int_neg_ssize
+
+implement g1int_abs<ssizeknd> =
+  g1int_abs_ssize
+
+implement g1int_succ<ssizeknd> =
+  g1int_succ_ssize
+
+implement g1int_pred<ssizeknd> =
+  g1int_pred_ssize
+
+implement g1int_half<ssizeknd> =
+  g1int_half_ssize
+
+implement g1int_add<ssizeknd> =
+  g1int_add_ssize
+
+implement g1int_sub<ssizeknd> =
+  g1int_sub_ssize
+
+implement g1int_mul<ssizeknd> =
+  g1int_mul_ssize
+
+implement g1int_div<ssizeknd> =
+  g1int_div_ssize
+
+implement g1int_nmod<ssizeknd> =
+  g1int_nmod_ssize
+
+implement g1int_isltz<ssizeknd> =
+  g1int_isltz_ssize
+
+implement g1int_isltez<ssizeknd> =
+  g1int_isltez_ssize
+
+implement g1int_isgtz<ssizeknd> =
+  g1int_isgtz_ssize
+
+implement g1int_isgtez<ssizeknd> =
+  g1int_isgtez_ssize
+
+implement g1int_iseqz<ssizeknd> =
+  g1int_iseqz_ssize
+
+implement g1int_isneqz<ssizeknd> =
+  g1int_isneqz_ssize
+
+implement g1int_lt<ssizeknd> =
+  g1int_lt_ssize
+
+implement g1int_lte<ssizeknd> =
+  g1int_lte_ssize
+
+implement g1int_gt<ssizeknd> =
+  g1int_gt_ssize
+
+implement g1int_gte<ssizeknd> =
+  g1int_gte_ssize
+
+implement g1int_eq<ssizeknd> =
+  g1int_eq_ssize
+
+implement g1int_neq<ssizeknd> =
+  g1int_neq_ssize
+
+implement g1int_compare<ssizeknd> =
+  g1int_compare_ssize
+
+implement g1int_max<ssizeknd> =
+  g1int_max_ssize
+
+implement g1int_min<ssizeknd> =
+  g1int_min_ssize
+
+//
+(* ****** ****** *)
+(* end of [integer_size.dats] *)
