   type 'a equal = {equal : 'a -> 'a -> bool};
   val equal = #equal : 'a equal -> 'a -> 'a -> bool;
 ***************
-*** 483,496 ****
+*** 482,522 ****
+  val heap_int = {countable_heap = countable_int, typerep_heap = typerep_int} :
     int heap;
   
-  fun plus_inta k l =
-!   Int_of_integer (IntInf.+ (integer_of_int k, integer_of_int l));
-  
-  type 'a plus = {plus : 'a -> 'a -> 'a};
-  val plus = #plus : 'a plus -> 'a -> 'a -> 'a;
-  
-  val plus_int = {plus = plus_inta} : int plus;
+! fun uminus_inta k = Int_of_integer (IntInf.~ (integer_of_int k));
   
 ! val zero_inta : int = Int_of_integer (0 : IntInf.int);
   
-  type 'a zero = {zero : 'a};
-  val zero = #zero : 'a zero -> 'a;
---- 503,516 ----
-    int heap;
-  
-  fun plus_inta k l =
-!   Int_of_integer (Int.+ (integer_of_int k, integer_of_int l));
-  
-  type 'a plus = {plus : 'a -> 'a -> 'a};
-  val plus = #plus : 'a plus -> 'a -> 'a -> 'a;
-  
-  val plus_int = {plus = plus_inta} : int plus;
-  
-! val zero_inta : int = Int_of_integer (0 : Int.int);
-  
-  type 'a zero = {zero : 'a};
-  val zero = #zero : 'a zero -> 'a;
-***************
-*** 498,524 ****
-  val zero_int = {zero = zero_inta} : int zero;
-  
-  fun minus_inta k l =
-!   Int_of_integer (IntInf.- (integer_of_int k, integer_of_int l));
-  
-  type 'a minus = {minus : 'a -> 'a -> 'a};
-  val minus = #minus : 'a minus -> 'a -> 'a -> 'a;
-  
-  val minus_int = {minus = minus_inta} : int minus;
-  
-! fun uminus_inta k = Int_of_integer (IntInf.~ (integer_of_int k));
-  
-  type 'a uminus = {uminus : 'a -> 'a};
-  val uminus = #uminus : 'a uminus -> 'a -> 'a;
-  
-  val uminus_int = {uminus = uminus_inta} : int uminus;
-  
-! fun less_eq_int k l = IntInf.<= (integer_of_int k, integer_of_int l);
-  
-  type 'a ord = {less_eq : 'a -> 'a -> bool, less : 'a -> 'a -> bool};
-  val less_eq = #less_eq : 'a ord -> 'a -> 'a -> bool;
-  val less = #less : 'a ord -> 'a -> 'a -> bool;
-  
-! fun less_int k l = IntInf.< (integer_of_int k, integer_of_int l);
-  
-  val ord_int = {less_eq = less_eq_int, less = less_int} : int ord;
-  
---- 518,544 ----
-  val zero_int = {zero = zero_inta} : int zero;
-  
-  fun minus_inta k l =
-!   Int_of_integer (Int.- (integer_of_int k, integer_of_int l));
-  
-  type 'a minus = {minus : 'a -> 'a -> 'a};
-  val minus = #minus : 'a minus -> 'a -> 'a -> 'a;
-  
-  val minus_int = {minus = minus_inta} : int minus;
-  
-! fun uminus_inta k = Int_of_integer (Int.~ (integer_of_int k));
-  
-  type 'a uminus = {uminus : 'a -> 'a};
-  val uminus = #uminus : 'a uminus -> 'a -> 'a;
-  
-  val uminus_int = {uminus = uminus_inta} : int uminus;
-  
-! fun less_eq_int k l = Int.<= (integer_of_int k, integer_of_int l);
-  
-  type 'a ord = {less_eq : 'a -> 'a -> bool, less : 'a -> 'a -> bool};
-  val less_eq = #less_eq : 'a ord -> 'a -> 'a -> bool;
-  val less = #less : 'a ord -> 'a -> 'a -> bool;
-  
-! fun less_int k l = Int.< (integer_of_int k, integer_of_int l);
-  
-  val ord_int = {less_eq = less_eq_int, less = less_int} : int ord;
-  
-***************
-*** 575,599 ****
-  
-  fun max A_ a b = (if less_eq A_ a b then b else a);
-  
-! datatype nat = Nat of IntInf.int;
-  
-  val ord_integer =
-!   {less_eq = (fn a => fn b => IntInf.<= (a, b)),
-!     less = (fn a => fn b => IntInf.< (a, b))}
-!   : IntInf.int ord;
-  
-! fun nat_of_integer k = Nat (max ord_integer (0 : IntInf.int) k);
-  
   datatype num = One | Bit0 of num | Bit1 of num;
-  
-! fun def_hashmap_size_int x = (fn _ => nat_of_integer (16 : IntInf.int)) x;
-  
-  type 'a hashable =
-    {hashcode : 'a -> Word32.word, def_hashmap_size : 'a itself -> nat};
-  val hashcode = #hashcode : 'a hashable -> 'a -> Word32.word;
-  val def_hashmap_size = #def_hashmap_size : 'a hashable -> 'a itself -> nat;
-  
-! fun uint32_of_int i = Word32.fromLargeInt (IntInf.toLarge (integer_of_int i));
-  
-  fun hashcode_int i = uint32_of_int i;
-  
---- 595,619 ----
-  
-  fun max A_ a b = (if less_eq A_ a b then b else a);
-  
-! datatype nat = Nat of Int.int;
-  
-  val ord_integer =
-!   {less_eq = (fn a => fn b => Int.<= (a, b)),
-!     less = (fn a => fn b => Int.< (a, b))}
-!   : Int.int ord;
-  
-! fun nat_of_integer k = Nat (max ord_integer (0 : Int.int) k);
-  
-  datatype num = One | Bit0 of num | Bit1 of num;
-  
-! fun def_hashmap_size_int x = (fn _ => nat_of_integer (16 : Int.int)) x;
-  
-  type 'a hashable =
-    {hashcode : 'a -> Word32.word, def_hashmap_size : 'a itself -> nat};
-  val hashcode = #hashcode : 'a hashable -> 'a -> Word32.word;
-  val def_hashmap_size = #def_hashmap_size : 'a hashable -> 'a itself -> nat;
-  
-! fun uint32_of_int i = Word32.fromLargeInt (Int.toLarge (integer_of_int i));
-  
-  fun hashcode_int i = uint32_of_int i;
-  
-***************
-*** 926,932 ****
-  
-  fun integer_of_nat (Nat x) = x;
-  
-! fun equal_nata m n = (((integer_of_nat m) : IntInf.int) = (integer_of_nat n));
-  
-  val equal_nat = {equal = equal_nata} : nat equal;
-  
---- 946,952 ----
-  
-  fun integer_of_nat (Nat x) = x;
-  
-! fun equal_nata m n = (((integer_of_nat m) : Int.int) = (integer_of_nat n));
-  
-  val equal_nat = {equal = equal_nata} : nat equal;
-  
-***************
-*** 939,962 ****
-  val heap_nat = {countable_heap = countable_nat, typerep_heap = typerep_nat} :
-    nat heap;
-  
-! val one_nata : nat = Nat (1 : IntInf.int);
-  
-  type 'a one = {one : 'a};
-  val one = #one : 'a one -> 'a;
-  
-  val one_nat = {one = one_nata} : nat one;
-  
-! fun plus_nata m n = Nat (IntInf.+ (integer_of_nat m, integer_of_nat n));
-  
-  val plus_nat = {plus = plus_nata} : nat plus;
-  
-! val zero_nata : nat = Nat (0 : IntInf.int);
-  
-  val zero_nat = {zero = zero_nata} : nat zero;
-  
-! fun less_eq_nat m n = IntInf.<= (integer_of_nat m, integer_of_nat n);
-  
-! fun less_nat m n = IntInf.< (integer_of_nat m, integer_of_nat n);
-  
-  val ord_nat = {less_eq = less_eq_nat, less = less_nat} : nat ord;
-  
---- 959,982 ----
-  val heap_nat = {countable_heap = countable_nat, typerep_heap = typerep_nat} :
-    nat heap;
-  
-! val one_nata : nat = Nat (1 : Int.int);
-  
-  type 'a one = {one : 'a};
-  val one = #one : 'a one -> 'a;
-  
-  val one_nat = {one = one_nata} : nat one;
-  
-! fun plus_nata m n = Nat (Int.+ (integer_of_nat m, integer_of_nat n));
-  
-  val plus_nat = {plus = plus_nata} : nat plus;
-  
-! val zero_nata : nat = Nat (0 : Int.int);
-  
-  val zero_nat = {zero = zero_nata} : nat zero;
-  
-! fun less_eq_nat m n = Int.<= (integer_of_nat m, integer_of_nat n);
-  
-! fun less_nat m n = Int.< (integer_of_nat m, integer_of_nat n);
-  
-  val ord_nat = {less_eq = less_eq_nat, less = less_nat} : nat ord;
-  
-***************
-*** 971,977 ****
-  
-  val order_nat = {preorder_order = preorder_nat} : nat order;
-  
-! fun def_hashmap_size_nat x = (fn _ => nat_of_integer (16 : IntInf.int)) x;
-  
-  fun int_of_nat n = Int_of_integer (integer_of_nat n);
-  
---- 991,997 ----
-  
-  val order_nat = {preorder_order = preorder_nat} : nat order;
-  
-! fun def_hashmap_size_nat x = (fn _ => nat_of_integer (16 : Int.int)) x;
-  
-  fun int_of_nat n = Int_of_integer (integer_of_nat n);
-  
-***************
-*** 1025,1044 ****
-      typerep_heap = typerep_list (typerep_heap A_)}
-    : ('a list) heap;
-  
-! fun times_nat m n = Nat (IntInf.* (integer_of_nat m, integer_of_nat n));
-  
-  fun def_hashmap_size_list A_ =
-    (fn _ =>
-!     times_nat (nat_of_integer (2 : IntInf.int)) (def_hashmap_size A_ Type));
-  
-  fun foldl f a [] = a
-    | foldl f a (x :: xs) = foldl f (f a x) xs;
-  
-  fun hashcode_list A_ =
-    foldl (fn h => fn x =>
-!           Word32.+ (Word32.* (h, Word32.fromLargeInt (IntInf.toLarge (33 : IntInf.int))), hashcode
-              A_ x))
-!     (Word32.fromLargeInt (IntInf.toLarge (5381 : IntInf.int)));
-  
-  fun hashable_list A_ =
-    {hashcode = hashcode_list A_, def_hashmap_size = def_hashmap_size_list A_} :
---- 1045,1064 ----
-      typerep_heap = typerep_list (typerep_heap A_)}
-    : ('a list) heap;
-  
-! fun times_nat m n = Nat (Int.* (integer_of_nat m, integer_of_nat n));
-  
-  fun def_hashmap_size_list A_ =
-    (fn _ =>
-!     times_nat (nat_of_integer (2 : Int.int)) (def_hashmap_size A_ Type));
-  
-  fun foldl f a [] = a
-    | foldl f a (x :: xs) = foldl f (f a x) xs;
-  
-  fun hashcode_list A_ =
-    foldl (fn h => fn x =>
-!           Word32.+ (Word32.* (h, Word32.fromLargeInt (Int.toLarge (33 : Int.int))), hashcode
-              A_ x))
-!     (Word32.fromLargeInt (Int.toLarge (5381 : Int.int)));
-  
-  fun hashable_list A_ =
-    {hashcode = hashcode_list A_, def_hashmap_size = def_hashmap_size_list A_} :
-***************
-*** 1582,1588 ****
-  
-  fun hashcode_prod A_ B_ x =
-    Word32.+ (Word32.* (hashcode A_
-!                         (fst x), Word32.fromLargeInt (IntInf.toLarge (33 : IntInf.int))), hashcode
-              B_ (snd x));
-  
-  fun hashable_prod A_ B_ =
---- 1602,1608 ----
-  
-  fun hashcode_prod A_ B_ x =
-    Word32.+ (Word32.* (hashcode A_
-!                         (fst x), Word32.fromLargeInt (Int.toLarge (33 : Int.int))), hashcode
-              B_ (snd x));
-  
-  fun hashable_prod A_ B_ =
-***************
-*** 1659,1671 ****
-  
-  fun id x = (fn xa => xa) x;
-  
-! fun nat k = Nat (max ord_integer (0 : IntInf.int) (integer_of_int k));
-  
-  fun suc n = plus_nata n one_nata;
-  
-  fun minus_nat m n =
-!   Nat (max ord_integer (0 : IntInf.int)
-!         (IntInf.- (integer_of_nat m, integer_of_nat n)));
-  
-  fun nth (x :: xs) n =
-    (if equal_nata n zero_nata then x else nth xs (minus_nat n one_nata));
---- 1679,1691 ----
-  
-  fun id x = (fn xa => xa) x;
-  
-! fun nat k = Nat (max ord_integer (0 : Int.int) (integer_of_int k));
-  
-  fun suc n = plus_nata n one_nata;
-  
-  fun minus_nat m n =
-!   Nat (max ord_integer (0 : Int.int)
-!         (Int.- (integer_of_nat m, integer_of_nat n)));
-  
-  fun nth (x :: xs) n =
-    (if equal_nata n zero_nata then x else nth xs (minus_nat n one_nata));
-***************
-*** 1683,1699 ****
-  fun ball (Set xs) p = list_all p xs;
-  
-  fun len A_ a =
-!   (fn f_ => fn () => f_ (((fn () => IntInf.fromInt (Array.length a))) ()) ())
-      (fn i => (fn () => (nat_of_integer i)));
-  
-  fun new A_ =
-!   (fn a => fn b => (fn () => Array.array (IntInf.toInt a, b))) o integer_of_nat;
-  
-! fun ntha A_ a n = (fn () => Array.sub (a, IntInf.toInt (integer_of_nat n)));
-  
-  fun upd A_ i x a =
-    (fn f_ => fn () => f_
-!     (((fn () => Array.update (a, IntInf.toInt (integer_of_nat i), x))) ()) ())
-      (fn _ => (fn () => a));
-  
-  fun maps f [] = []
---- 1703,1719 ----
-  fun ball (Set xs) p = list_all p xs;
-  
-  fun len A_ a =
-!   (fn f_ => fn () => f_ (((fn () => Int.fromInt (Array.length a))) ()) ())
-      (fn i => (fn () => (nat_of_integer i)));
-  
-  fun new A_ =
-!   (fn a => fn b => (fn () => Array.array (Int.toInt a, b))) o integer_of_nat;
-  
-! fun ntha A_ a n = (fn () => Array.sub (a, Int.toInt (integer_of_nat n)));
-  
-  fun upd A_ i x a =
-    (fn f_ => fn () => f_
-!     (((fn () => Array.update (a, Int.toInt (integer_of_nat i), x))) ()) ())
-      (fn _ => (fn () => a));
-  
-  fun maps f [] = []
-***************
-*** 1708,1718 ****
-  fun image f (Set xs) = Set (map f xs);
-  
-  fun make A_ n f =
-!   (fn () => Array.tabulate (IntInf.toInt (integer_of_nat n),
-!     (f o nat_of_integer) o IntInf.fromInt));
-  
-  fun sub asa n =
-!   (Vector.sub o (fn (a, b) => (a, IntInf.toInt b))) (asa, integer_of_nat n);
-  
-  fun foldr f [] = id
-    | foldr f (x :: xs) = f x o foldr f xs;
---- 1728,1738 ----
-  fun image f (Set xs) = Set (map f xs);
-  
-  fun make A_ n f =
-!   (fn () => Array.tabulate (Int.toInt (integer_of_nat n),
-!     (f o nat_of_integer) o Int.fromInt));
-  
-  fun sub asa n =
-!   (Vector.sub o (fn (a, b) => (a, Int.toInt b))) (asa, integer_of_nat n);
-  
-  fun foldr f [] = id
-    | foldr f (x :: xs) = f x o foldr f xs;
-***************
-*** 1831,1837 ****
-  
-  fun cODE_ABORT _ = raise Fail "Misc.CODE_ABORT";
-  
-! val one_int : int = Int_of_integer (1 : IntInf.int);
-  
-  fun int_of x = (if x then one_int else zero_inta);
-  
---- 1851,1857 ----
-  
-  fun cODE_ABORT _ = raise Fail "Misc.CODE_ABORT";
-  
-! val one_int : int = Int_of_integer (1 : Int.int);
-  
-  fun int_of x = (if x then one_int else zero_inta);
-  
-***************
-*** 1944,1978 ****
-  fun ht_new (A1_, A2_) B_ = ht_new_sz (A1_, A2_) B_ (def_hashmap_size A1_ Type);
   
   fun sgn_integer k =
 !   (if ((k : IntInf.int) = (0 : IntInf.int)) then (0 : IntInf.int)

                                   (case nth prog (plus_nata pc one_nata)
                                     of NONE => false
***************
*** 3186,3192 ****
                                     | SOME (CEXP _) => false)))
                           then (case (nth prog (plus_nata pc one_nata),
                                        check_conj_blocka A_ prog

*** UPPAAL_Model_Checker_patched.sml	2018-12-17 09:53:11.000000000 +0100
--- UPPAAL_Model_Checker_int.sml	2018-12-17 11:28:29.000000000 +0100
***************
*** 1,29 ****
  
