diff --git a/src/interpretation.ml b/src/interpretation.ml
index 5db1a812ecdf39b5567d57533b4be1ab986ed4d8..fe84a10acc9e9f2bbb92f11f21c518cdfd90f2f8 100644
--- a/src/interpretation.ml
+++ b/src/interpretation.ml
@@ -42,6 +42,7 @@ type caisar_op =
 type caisar_env = {
   caisar_op_of_ls : caisar_op Term.Hls.t;
   ls_of_caisar_op : (caisar_op, Term.lsymbol) Hashtbl.t;
+  env : Env.env;
   cwd : string;
 }
 
@@ -65,10 +66,11 @@ let term_of_caisar_op ?(args = []) engine op ty =
   let t_args, ty_args = List.unzip args in
   Term.t_app_infer (ls_of_caisar_op engine op ty_args ty) t_args
 
-let caisar_env _env cwd =
+let caisar_env env cwd =
   {
     ls_of_caisar_op = Hashtbl.Poly.create ();
     caisar_op_of_ls = Term.Hls.create 10;
+    env;
     cwd;
   }
 
@@ -76,6 +78,20 @@ let print_caisar_op fmt caisar_env =
   Pp.print_iter2 Term.Hls.iter Pp.newline Pp.comma Pretty.print_ls pp_caisar_op
     fmt caisar_env.caisar_op_of_ls
 
+let const_real_of_float value =
+  let neg = Float.is_negative value in
+  let value = Fmt.str "%.64f" (Float.abs value) in
+  (* Split into integer and fractional parts. *)
+  let int_frac = String.split value ~on:'.' in
+  let int = List.hd_exn int_frac in
+  let frac =
+    match List.tl_exn int_frac with
+    | [] -> ""
+    | [ s ] -> s
+    | _ -> assert false (* Since every float has one '.' at most. *)
+  in
+  Constant.ConstReal (Number.real_literal ~radix:10 ~neg ~int ~frac ~exp:None)
+
 let builtin_caisar : caisar_env CRE.built_in_theories list =
   let error_message ls =
     Fmt.str "Invalid arguments for '%a'" Pretty.print_ls ls
@@ -102,7 +118,7 @@ let builtin_caisar : caisar_env CRE.built_in_theories list =
         in
         let ty_features =
           match ty with
-          | Some { ty_node = Tyapp (_, [ a; _ ]); _ } -> Some a
+          | Some { ty_node = Tyapp (_, [ ty; _ ]); _ } -> Some ty
           | _ -> assert false
         in
         let t_features, t_label =
@@ -134,19 +150,60 @@ let builtin_caisar : caisar_env CRE.built_in_theories list =
   (* Tensor *)
   let tget : _ CRE.builtin =
    fun engine ls vl ty ->
-    Fmt.pr "--@.hash_get: ls:%a , ty:%a@." Pretty.print_ls ls
+    Fmt.pr "--@.tget: ls:%a , ty:%a@." Pretty.print_ls ls
       Fmt.(option ~none:nop Pretty.print_ty)
       ty;
     match vl with
     | [
-     Term ({ t_node = Tapp (lsapp1, lsapp1_args); _ } as t1);
-     Term ({ t_node = Tapp (lsapp2, _); _ } as t2);
+     Term ({ t_node = Tapp (ls1, tl1); _ } as t1);
+     Term ({ t_node = Tapp (ls2, _); _ } as t2);
     ] -> (
       Fmt.pr "Terms: %a , %a@." Pretty.print_term t1 Pretty.print_term t2;
-      match (caisar_op_of_ls engine lsapp1, caisar_op_of_ls engine lsapp2) with
-      | Tensor n1, Index (I_csv i1) ->
-        assert (i1 <= n1);
-        Term (List.nth_exn lsapp1_args i1)
+      match (caisar_op_of_ls engine ls1, caisar_op_of_ls engine ls2) with
+      | Tensor n, Index (I_csv i) ->
+        assert (i <= n);
+        Term (List.nth_exn tl1 i)
+      | _ -> assert false)
+    | [ Term t1; Term t2 ] ->
+      Fmt.pr "Terms: %a , %a@." Pretty.print_term t1 Pretty.print_term t2;
+      Term (Term.t_app_infer ls [ t1; t2 ])
+    | _ -> invalid_arg (error_message ls)
+  in
+  let tminus : _ CRE.builtin =
+   fun engine ls vl ty ->
+    Fmt.pr "--@.tminus: ls:%a , ty:%a@." Pretty.print_ls ls
+      Fmt.(option ~none:nop Pretty.print_ty)
+      ty;
+    match vl with
+    | [
+     Term ({ t_node = Tapp (ls1, tl1); _ } as t1);
+     Term ({ t_node = Tapp (ls2, _); _ } as t2);
+    ] -> (
+      Fmt.pr "Terms: %a , %a@." Pretty.print_term t1 Pretty.print_term t2;
+      match (caisar_op_of_ls engine ls1, caisar_op_of_ls engine ls2) with
+      | Tensor n, Data (D_csv d) ->
+        assert (n = List.length d);
+        let data_ty =
+          match ty with
+          | Some { ty_node = Tyapp (_, [ ty ]); _ } -> ty
+          | _ -> assert false
+        in
+        let data_cst =
+          List.map d ~f:(fun d ->
+            let cst = const_real_of_float (Float.of_string d) in
+            Term.t_const cst data_ty)
+        in
+        let minus =
+          (* TODO: generalize wrt [data_ty]. *)
+          let { env; _ } = CRE.user_env engine in
+          let th = Env.read_theory env [ "ieee_float" ] "Float64" in
+          Theory.(ns_find_ls th.th_export [ Ident.op_infix ".-" ])
+        in
+        let args =
+          List.map2_exn tl1 data_cst ~f:(fun tl c ->
+            (Term.t_app_infer minus [ tl; c ], data_ty))
+        in
+        Term (term_of_caisar_op ~args engine (Tensor n) ty)
       | _ -> assert false)
     | [ Term t1; Term t2 ] ->
       Fmt.pr "Terms: %a , %a@." Pretty.print_term t1 Pretty.print_term t2;
@@ -213,7 +270,11 @@ let builtin_caisar : caisar_env CRE.built_in_theories list =
       "Vector",
       [],
       [ (Ident.op_get "" (* ([]) *), None, vget); ("length", None, length) ] );
-    ([ "interpretation" ], "Tensor", [], [ (Ident.op_infix "#", None, tget) ]);
+    ( [ "interpretation" ],
+      "Tensor",
+      [],
+      [ (Ident.op_infix "#", None, tget); (Ident.op_infix "-", None, tminus) ]
+    );
     ( [ "interpretation" ],
       "Classifier",
       [],
diff --git a/tests/interpretation_dataset.t b/tests/interpretation_dataset.t
index 4b0ea5879a6009f550503101b98cd6851de6dd78..1f5cb9597ced78bcfe566348af0c54f2a3ebc879 100644
--- a/tests/interpretation_dataset.t
+++ b/tests/interpretation_dataset.t
@@ -65,12 +65,16 @@ Test interpret on dataset
   int)
   ls: caisar_op1
   --
-  hash_get: ls:(#) , ty:t
+  tget: ls:(#) , ty:t
   Terms: perturbed_image , v
   --
-  hash_get: ls:(#) , ty:t
+  tget: ls:(#) , ty:t
   Terms: perturbed_image , v
   --
+  tminus: ls:(-) , ty:tensor
+  t
+  Terms: perturbed_image , y2
+  --
   valid_index: perturbed_image - y2 v1
   ls_of_caisar_op: (Interpretation.Index (Interpretation.I_csv 4))
   ty: vector
@@ -93,34 +97,34 @@ Test interpret on dataset
   int
   ls: caisar_op6
   --
-  hash_get: ls:(#) , ty:t
+  tget: ls:(#) , ty:t
   Terms: perturbed_image - y2 , caisar_op2
   --
-  hash_get: ls:(#) , ty:t
+  tget: ls:(#) , ty:t
   Terms: perturbed_image - y2 , caisar_op2
   --
-  hash_get: ls:(#) , ty:t
+  tget: ls:(#) , ty:t
   Terms: perturbed_image - y2 , caisar_op3
   --
-  hash_get: ls:(#) , ty:t
+  tget: ls:(#) , ty:t
   Terms: perturbed_image - y2 , caisar_op3
   --
-  hash_get: ls:(#) , ty:t
+  tget: ls:(#) , ty:t
   Terms: perturbed_image - y2 , caisar_op4
   --
-  hash_get: ls:(#) , ty:t
+  tget: ls:(#) , ty:t
   Terms: perturbed_image - y2 , caisar_op4
   --
-  hash_get: ls:(#) , ty:t
+  tget: ls:(#) , ty:t
   Terms: perturbed_image - y2 , caisar_op5
   --
-  hash_get: ls:(#) , ty:t
+  tget: ls:(#) , ty:t
   Terms: perturbed_image - y2 , caisar_op5
   --
-  hash_get: ls:(#) , ty:t
+  tget: ls:(#) , ty:t
   Terms: perturbed_image - y2 , caisar_op6
   --
-  hash_get: ls:(#) , ty:t
+  tget: ls:(#) , ty:t
   Terms: perturbed_image - y2 , caisar_op6
   --
   apply_classifier: ls:(@@) , ty:vector
@@ -165,40 +169,80 @@ Test interpret on dataset
   vget: ls:([]) , ty:t
   Terms: y0 @@ perturbed_image , 2
   --
-  hash_get: ls:(#) , ty:t
+  tget: ls:(#) , ty:t
   Terms: perturbed_image1 , v2
   --
-  hash_get: ls:(#) , ty:t
+  tget: ls:(#) , ty:t
   Terms: perturbed_image1 , v2
   --
-  hash_get: ls:(#) , ty:t
+  tminus: ls:(-) , ty:tensor
+  t
+  Terms: perturbed_image1 , y21
+  --
+  tget: ls:(#) , ty:t
   Terms: perturbed_image1 - y21 , caisar_op2
   --
-  hash_get: ls:(#) , ty:t
+  tminus: ls:(-) , ty:tensor
+  t
+  Terms: perturbed_image1 , y21
+  --
+  tget: ls:(#) , ty:t
   Terms: perturbed_image1 - y21 , caisar_op2
   --
-  hash_get: ls:(#) , ty:t
+  tminus: ls:(-) , ty:tensor
+  t
+  Terms: perturbed_image1 , y21
+  --
+  tget: ls:(#) , ty:t
   Terms: perturbed_image1 - y21 , caisar_op3
   --
-  hash_get: ls:(#) , ty:t
+  tminus: ls:(-) , ty:tensor
+  t
+  Terms: perturbed_image1 , y21
+  --
+  tget: ls:(#) , ty:t
   Terms: perturbed_image1 - y21 , caisar_op3
   --
-  hash_get: ls:(#) , ty:t
+  tminus: ls:(-) , ty:tensor
+  t
+  Terms: perturbed_image1 , y21
+  --
+  tget: ls:(#) , ty:t
   Terms: perturbed_image1 - y21 , caisar_op4
   --
-  hash_get: ls:(#) , ty:t
+  tminus: ls:(-) , ty:tensor
+  t
+  Terms: perturbed_image1 , y21
+  --
+  tget: ls:(#) , ty:t
   Terms: perturbed_image1 - y21 , caisar_op4
   --
-  hash_get: ls:(#) , ty:t
+  tminus: ls:(-) , ty:tensor
+  t
+  Terms: perturbed_image1 , y21
+  --
+  tget: ls:(#) , ty:t
   Terms: perturbed_image1 - y21 , caisar_op5
   --
-  hash_get: ls:(#) , ty:t
+  tminus: ls:(-) , ty:tensor
+  t
+  Terms: perturbed_image1 , y21
+  --
+  tget: ls:(#) , ty:t
   Terms: perturbed_image1 - y21 , caisar_op5
   --
-  hash_get: ls:(#) , ty:t
+  tminus: ls:(-) , ty:tensor
+  t
+  Terms: perturbed_image1 , y21
+  --
+  tget: ls:(#) , ty:t
   Terms: perturbed_image1 - y21 , caisar_op6
   --
-  hash_get: ls:(#) , ty:t
+  tminus: ls:(-) , ty:tensor
+  t
+  Terms: perturbed_image1 , y21
+  --
+  tget: ls:(#) , ty:t
   Terms: perturbed_image1 - y21 , caisar_op6
   --
   apply_classifier: ls:(@@) , ty:vector
@@ -243,40 +287,80 @@ Test interpret on dataset
   vget: ls:([]) , ty:t
   Terms: caisar_op @@ perturbed_image1 , y31
   --
-  hash_get: ls:(#) , ty:t
+  tget: ls:(#) , ty:t
   Terms: perturbed_image2 , v3
   --
-  hash_get: ls:(#) , ty:t
+  tget: ls:(#) , ty:t
   Terms: perturbed_image2 , v3
   --
-  hash_get: ls:(#) , ty:t
+  tminus: ls:(-) , ty:tensor
+  t
+  Terms: perturbed_image2 , y22
+  --
+  tget: ls:(#) , ty:t
   Terms: perturbed_image2 - y22 , caisar_op2
   --
-  hash_get: ls:(#) , ty:t
+  tminus: ls:(-) , ty:tensor
+  t
+  Terms: perturbed_image2 , y22
+  --
+  tget: ls:(#) , ty:t
   Terms: perturbed_image2 - y22 , caisar_op2
   --
-  hash_get: ls:(#) , ty:t
+  tminus: ls:(-) , ty:tensor
+  t
+  Terms: perturbed_image2 , y22
+  --
+  tget: ls:(#) , ty:t
   Terms: perturbed_image2 - y22 , caisar_op3
   --
-  hash_get: ls:(#) , ty:t
+  tminus: ls:(-) , ty:tensor
+  t
+  Terms: perturbed_image2 , y22
+  --
+  tget: ls:(#) , ty:t
   Terms: perturbed_image2 - y22 , caisar_op3
   --
-  hash_get: ls:(#) , ty:t
+  tminus: ls:(-) , ty:tensor
+  t
+  Terms: perturbed_image2 , y22
+  --
+  tget: ls:(#) , ty:t
   Terms: perturbed_image2 - y22 , caisar_op4
   --
-  hash_get: ls:(#) , ty:t
+  tminus: ls:(-) , ty:tensor
+  t
+  Terms: perturbed_image2 , y22
+  --
+  tget: ls:(#) , ty:t
   Terms: perturbed_image2 - y22 , caisar_op4
   --
-  hash_get: ls:(#) , ty:t
+  tminus: ls:(-) , ty:tensor
+  t
+  Terms: perturbed_image2 , y22
+  --
+  tget: ls:(#) , ty:t
   Terms: perturbed_image2 - y22 , caisar_op5
   --
-  hash_get: ls:(#) , ty:t
+  tminus: ls:(-) , ty:tensor
+  t
+  Terms: perturbed_image2 , y22
+  --
+  tget: ls:(#) , ty:t
   Terms: perturbed_image2 - y22 , caisar_op5
   --
-  hash_get: ls:(#) , ty:t
+  tminus: ls:(-) , ty:tensor
+  t
+  Terms: perturbed_image2 , y22
+  --
+  tget: ls:(#) , ty:t
   Terms: perturbed_image2 - y22 , caisar_op6
   --
-  hash_get: ls:(#) , ty:t
+  tminus: ls:(-) , ty:tensor
+  t
+  Terms: perturbed_image2 , y22
+  --
+  tget: ls:(#) , ty:t
   Terms: perturbed_image2 - y22 , caisar_op6
   --
   apply_classifier: ls:(@@) , ty:vector
@@ -337,40 +421,80 @@ Test interpret on dataset
   reduce_match@(caisar_op7,
   1)
   --
-  hash_get: ls:(#) , ty:t
+  tget: ls:(#) , ty:t
   Terms: perturbed_image3 , v4
   --
-  hash_get: ls:(#) , ty:t
+  tget: ls:(#) , ty:t
   Terms: perturbed_image3 , v4
   --
-  hash_get: ls:(#) , ty:t
+  tminus: ls:(-) , ty:tensor
+  t
+  Terms: perturbed_image3 , y23
+  --
+  tget: ls:(#) , ty:t
   Terms: perturbed_image3 - y23 , caisar_op2
   --
-  hash_get: ls:(#) , ty:t
+  tminus: ls:(-) , ty:tensor
+  t
+  Terms: perturbed_image3 , y23
+  --
+  tget: ls:(#) , ty:t
   Terms: perturbed_image3 - y23 , caisar_op2
   --
-  hash_get: ls:(#) , ty:t
+  tminus: ls:(-) , ty:tensor
+  t
+  Terms: perturbed_image3 , y23
+  --
+  tget: ls:(#) , ty:t
   Terms: perturbed_image3 - y23 , caisar_op3
   --
-  hash_get: ls:(#) , ty:t
+  tminus: ls:(-) , ty:tensor
+  t
+  Terms: perturbed_image3 , y23
+  --
+  tget: ls:(#) , ty:t
   Terms: perturbed_image3 - y23 , caisar_op3
   --
-  hash_get: ls:(#) , ty:t
+  tminus: ls:(-) , ty:tensor
+  t
+  Terms: perturbed_image3 , y23
+  --
+  tget: ls:(#) , ty:t
   Terms: perturbed_image3 - y23 , caisar_op4
   --
-  hash_get: ls:(#) , ty:t
+  tminus: ls:(-) , ty:tensor
+  t
+  Terms: perturbed_image3 , y23
+  --
+  tget: ls:(#) , ty:t
   Terms: perturbed_image3 - y23 , caisar_op4
   --
-  hash_get: ls:(#) , ty:t
+  tminus: ls:(-) , ty:tensor
+  t
+  Terms: perturbed_image3 , y23
+  --
+  tget: ls:(#) , ty:t
   Terms: perturbed_image3 - y23 , caisar_op5
   --
-  hash_get: ls:(#) , ty:t
+  tminus: ls:(-) , ty:tensor
+  t
+  Terms: perturbed_image3 , y23
+  --
+  tget: ls:(#) , ty:t
   Terms: perturbed_image3 - y23 , caisar_op5
   --
-  hash_get: ls:(#) , ty:t
+  tminus: ls:(-) , ty:tensor
+  t
+  Terms: perturbed_image3 , y23
+  --
+  tget: ls:(#) , ty:t
   Terms: perturbed_image3 - y23 , caisar_op6
   --
-  hash_get: ls:(#) , ty:t
+  tminus: ls:(-) , ty:tensor
+  t
+  Terms: perturbed_image3 , y23
+  --
+  tget: ls:(#) , ty:t
   Terms: perturbed_image3 - y23 , caisar_op6
   --
   apply_classifier: ls:(@@) , ty:vector
@@ -438,75 +562,195 @@ Test interpret on dataset
   ty: vector
   int
   --
-  hash_get: ls:(#) , ty:t
+  tget: ls:(#) , ty:t
   Terms: caisar_op8 caisar_es caisar_es1 caisar_es2 caisar_es3 caisar_es4 , caisar_op2
   --
-  hash_get: ls:(#) , ty:t
+  tget: ls:(#) , ty:t
   Terms: caisar_op8 caisar_es caisar_es1 caisar_es2 caisar_es3 caisar_es4 , caisar_op2
   --
-  hash_get: ls:(#) , ty:t
+  tget: ls:(#) , ty:t
   Terms: caisar_op8 caisar_es caisar_es1 caisar_es2 caisar_es3 caisar_es4 , caisar_op3
   --
-  hash_get: ls:(#) , ty:t
+  tget: ls:(#) , ty:t
   Terms: caisar_op8 caisar_es caisar_es1 caisar_es2 caisar_es3 caisar_es4 , caisar_op3
   --
-  hash_get: ls:(#) , ty:t
+  tget: ls:(#) , ty:t
   Terms: caisar_op8 caisar_es caisar_es1 caisar_es2 caisar_es3 caisar_es4 , caisar_op4
   --
-  hash_get: ls:(#) , ty:t
+  tget: ls:(#) , ty:t
   Terms: caisar_op8 caisar_es caisar_es1 caisar_es2 caisar_es3 caisar_es4 , caisar_op4
   --
-  hash_get: ls:(#) , ty:t
+  tget: ls:(#) , ty:t
   Terms: caisar_op8 caisar_es caisar_es1 caisar_es2 caisar_es3 caisar_es4 , caisar_op5
   --
-  hash_get: ls:(#) , ty:t
+  tget: ls:(#) , ty:t
   Terms: caisar_op8 caisar_es caisar_es1 caisar_es2 caisar_es3 caisar_es4 , caisar_op5
   --
-  hash_get: ls:(#) , ty:t
+  tget: ls:(#) , ty:t
   Terms: caisar_op8 caisar_es caisar_es1 caisar_es2 caisar_es3 caisar_es4 , caisar_op6
   --
-  hash_get: ls:(#) , ty:t
+  tget: ls:(#) , ty:t
   Terms: caisar_op8 caisar_es caisar_es1 caisar_es2 caisar_es3 caisar_es4 , caisar_op6
   --
-  hash_get: ls:(#) , ty:t
-  Terms: caisar_op8 caisar_es caisar_es1 caisar_es2 caisar_es3 caisar_es4
-         - caisar_op7 , caisar_op2
+  tminus: ls:(-) , ty:tensor
+  t
+  Terms: caisar_op8 caisar_es caisar_es1 caisar_es2 caisar_es3 caisar_es4 , caisar_op7
+  ls_of_caisar_op: (Interpretation.Tensor 5)
+  ty: tensor
+  t
+  --
+  tget: ls:(#) , ty:t
+  Terms: caisar_op8 (caisar_es .- (0.0:t)) (caisar_es1 .- (1.0:t))
+         (caisar_es2
+          .- (0.78431372499999996161790249971090815961360931396484375:t))
+         (caisar_es3
+          .- (0.01960784299999999980013143385804141871631145477294921875:t))
+         (caisar_es4
+          .- (0.776470588000000017103729987866245210170745849609375:t)) , caisar_op2
   --
-  hash_get: ls:(#) , ty:t
-  Terms: caisar_op8 caisar_es caisar_es1 caisar_es2 caisar_es3 caisar_es4
-         - caisar_op7 , caisar_op2
+  tminus: ls:(-) , ty:tensor
+  t
+  Terms: caisar_op8 caisar_es caisar_es1 caisar_es2 caisar_es3 caisar_es4 , caisar_op7
+  ls_of_caisar_op: (Interpretation.Tensor 5)
+  ty: tensor
+  t
   --
-  hash_get: ls:(#) , ty:t
-  Terms: caisar_op8 caisar_es caisar_es1 caisar_es2 caisar_es3 caisar_es4
-         - caisar_op7 , caisar_op3
+  tget: ls:(#) , ty:t
+  Terms: caisar_op8 (caisar_es .- (0.0:t)) (caisar_es1 .- (1.0:t))
+         (caisar_es2
+          .- (0.78431372499999996161790249971090815961360931396484375:t))
+         (caisar_es3
+          .- (0.01960784299999999980013143385804141871631145477294921875:t))
+         (caisar_es4
+          .- (0.776470588000000017103729987866245210170745849609375:t)) , caisar_op2
   --
-  hash_get: ls:(#) , ty:t
-  Terms: caisar_op8 caisar_es caisar_es1 caisar_es2 caisar_es3 caisar_es4
-         - caisar_op7 , caisar_op3
+  tminus: ls:(-) , ty:tensor
+  t
+  Terms: caisar_op8 caisar_es caisar_es1 caisar_es2 caisar_es3 caisar_es4 , caisar_op7
+  ls_of_caisar_op: (Interpretation.Tensor 5)
+  ty: tensor
+  t
+  --
+  tget: ls:(#) , ty:t
+  Terms: caisar_op8 (caisar_es .- (0.0:t)) (caisar_es1 .- (1.0:t))
+         (caisar_es2
+          .- (0.78431372499999996161790249971090815961360931396484375:t))
+         (caisar_es3
+          .- (0.01960784299999999980013143385804141871631145477294921875:t))
+         (caisar_es4
+          .- (0.776470588000000017103729987866245210170745849609375:t)) , caisar_op3
   --
-  hash_get: ls:(#) , ty:t
-  Terms: caisar_op8 caisar_es caisar_es1 caisar_es2 caisar_es3 caisar_es4
-         - caisar_op7 , caisar_op4
+  tminus: ls:(-) , ty:tensor
+  t
+  Terms: caisar_op8 caisar_es caisar_es1 caisar_es2 caisar_es3 caisar_es4 , caisar_op7
+  ls_of_caisar_op: (Interpretation.Tensor 5)
+  ty: tensor
+  t
+  --
+  tget: ls:(#) , ty:t
+  Terms: caisar_op8 (caisar_es .- (0.0:t)) (caisar_es1 .- (1.0:t))
+         (caisar_es2
+          .- (0.78431372499999996161790249971090815961360931396484375:t))
+         (caisar_es3
+          .- (0.01960784299999999980013143385804141871631145477294921875:t))
+         (caisar_es4
+          .- (0.776470588000000017103729987866245210170745849609375:t)) , caisar_op3
+  --
+  tminus: ls:(-) , ty:tensor
+  t
+  Terms: caisar_op8 caisar_es caisar_es1 caisar_es2 caisar_es3 caisar_es4 , caisar_op7
+  ls_of_caisar_op: (Interpretation.Tensor 5)
+  ty: tensor
+  t
+  --
+  tget: ls:(#) , ty:t
+  Terms: caisar_op8 (caisar_es .- (0.0:t)) (caisar_es1 .- (1.0:t))
+         (caisar_es2
+          .- (0.78431372499999996161790249971090815961360931396484375:t))
+         (caisar_es3
+          .- (0.01960784299999999980013143385804141871631145477294921875:t))
+         (caisar_es4
+          .- (0.776470588000000017103729987866245210170745849609375:t)) , caisar_op4
+  --
+  tminus: ls:(-) , ty:tensor
+  t
+  Terms: caisar_op8 caisar_es caisar_es1 caisar_es2 caisar_es3 caisar_es4 , caisar_op7
+  ls_of_caisar_op: (Interpretation.Tensor 5)
+  ty: tensor
+  t
+  --
+  tget: ls:(#) , ty:t
+  Terms: caisar_op8 (caisar_es .- (0.0:t)) (caisar_es1 .- (1.0:t))
+         (caisar_es2
+          .- (0.78431372499999996161790249971090815961360931396484375:t))
+         (caisar_es3
+          .- (0.01960784299999999980013143385804141871631145477294921875:t))
+         (caisar_es4
+          .- (0.776470588000000017103729987866245210170745849609375:t)) , caisar_op4
+  --
+  tminus: ls:(-) , ty:tensor
+  t
+  Terms: caisar_op8 caisar_es caisar_es1 caisar_es2 caisar_es3 caisar_es4 , caisar_op7
+  ls_of_caisar_op: (Interpretation.Tensor 5)
+  ty: tensor
+  t
+  --
+  tget: ls:(#) , ty:t
+  Terms: caisar_op8 (caisar_es .- (0.0:t)) (caisar_es1 .- (1.0:t))
+         (caisar_es2
+          .- (0.78431372499999996161790249971090815961360931396484375:t))
+         (caisar_es3
+          .- (0.01960784299999999980013143385804141871631145477294921875:t))
+         (caisar_es4
+          .- (0.776470588000000017103729987866245210170745849609375:t)) , caisar_op5
+  --
+  tminus: ls:(-) , ty:tensor
+  t
+  Terms: caisar_op8 caisar_es caisar_es1 caisar_es2 caisar_es3 caisar_es4 , caisar_op7
+  ls_of_caisar_op: (Interpretation.Tensor 5)
+  ty: tensor
+  t
   --
-  hash_get: ls:(#) , ty:t
-  Terms: caisar_op8 caisar_es caisar_es1 caisar_es2 caisar_es3 caisar_es4
-         - caisar_op7 , caisar_op4
+  tget: ls:(#) , ty:t
+  Terms: caisar_op8 (caisar_es .- (0.0:t)) (caisar_es1 .- (1.0:t))
+         (caisar_es2
+          .- (0.78431372499999996161790249971090815961360931396484375:t))
+         (caisar_es3
+          .- (0.01960784299999999980013143385804141871631145477294921875:t))
+         (caisar_es4
+          .- (0.776470588000000017103729987866245210170745849609375:t)) , caisar_op5
   --
-  hash_get: ls:(#) , ty:t
-  Terms: caisar_op8 caisar_es caisar_es1 caisar_es2 caisar_es3 caisar_es4
-         - caisar_op7 , caisar_op5
+  tminus: ls:(-) , ty:tensor
+  t
+  Terms: caisar_op8 caisar_es caisar_es1 caisar_es2 caisar_es3 caisar_es4 , caisar_op7
+  ls_of_caisar_op: (Interpretation.Tensor 5)
+  ty: tensor
+  t
   --
-  hash_get: ls:(#) , ty:t
-  Terms: caisar_op8 caisar_es caisar_es1 caisar_es2 caisar_es3 caisar_es4
-         - caisar_op7 , caisar_op5
+  tget: ls:(#) , ty:t
+  Terms: caisar_op8 (caisar_es .- (0.0:t)) (caisar_es1 .- (1.0:t))
+         (caisar_es2
+          .- (0.78431372499999996161790249971090815961360931396484375:t))
+         (caisar_es3
+          .- (0.01960784299999999980013143385804141871631145477294921875:t))
+         (caisar_es4
+          .- (0.776470588000000017103729987866245210170745849609375:t)) , caisar_op6
   --
-  hash_get: ls:(#) , ty:t
-  Terms: caisar_op8 caisar_es caisar_es1 caisar_es2 caisar_es3 caisar_es4
-         - caisar_op7 , caisar_op6
+  tminus: ls:(-) , ty:tensor
+  t
+  Terms: caisar_op8 caisar_es caisar_es1 caisar_es2 caisar_es3 caisar_es4 , caisar_op7
+  ls_of_caisar_op: (Interpretation.Tensor 5)
+  ty: tensor
+  t
   --
-  hash_get: ls:(#) , ty:t
-  Terms: caisar_op8 caisar_es caisar_es1 caisar_es2 caisar_es3 caisar_es4
-         - caisar_op7 , caisar_op6
+  tget: ls:(#) , ty:t
+  Terms: caisar_op8 (caisar_es .- (0.0:t)) (caisar_es1 .- (1.0:t))
+         (caisar_es2
+          .- (0.78431372499999996161790249971090815961360931396484375:t))
+         (caisar_es3
+          .- (0.01960784299999999980013143385804141871631145477294921875:t))
+         (caisar_es4
+          .- (0.776470588000000017103729987866245210170745849609375:t)) , caisar_op6
   --
   apply_classifier: ls:(@@) , ty:vector
   t
@@ -562,46 +806,6 @@ Test interpret on dataset
   Terms: caisar_op
          @@ caisar_op8 caisar_es caisar_es1 caisar_es2 caisar_es3 caisar_es4 , y34
   --
-  hash_get: ls:(#) , ty:t
-  Terms: caisar_op8 caisar_es5 caisar_es6 caisar_es7 caisar_es8 caisar_es9
-         - caisar_op7 , caisar_op2
-  --
-  hash_get: ls:(#) , ty:t
-  Terms: caisar_op8 caisar_es5 caisar_es6 caisar_es7 caisar_es8 caisar_es9
-         - caisar_op7 , caisar_op2
-  --
-  hash_get: ls:(#) , ty:t
-  Terms: caisar_op8 caisar_es5 caisar_es6 caisar_es7 caisar_es8 caisar_es9
-         - caisar_op7 , caisar_op3
-  --
-  hash_get: ls:(#) , ty:t
-  Terms: caisar_op8 caisar_es5 caisar_es6 caisar_es7 caisar_es8 caisar_es9
-         - caisar_op7 , caisar_op3
-  --
-  hash_get: ls:(#) , ty:t
-  Terms: caisar_op8 caisar_es5 caisar_es6 caisar_es7 caisar_es8 caisar_es9
-         - caisar_op7 , caisar_op4
-  --
-  hash_get: ls:(#) , ty:t
-  Terms: caisar_op8 caisar_es5 caisar_es6 caisar_es7 caisar_es8 caisar_es9
-         - caisar_op7 , caisar_op4
-  --
-  hash_get: ls:(#) , ty:t
-  Terms: caisar_op8 caisar_es5 caisar_es6 caisar_es7 caisar_es8 caisar_es9
-         - caisar_op7 , caisar_op5
-  --
-  hash_get: ls:(#) , ty:t
-  Terms: caisar_op8 caisar_es5 caisar_es6 caisar_es7 caisar_es8 caisar_es9
-         - caisar_op7 , caisar_op5
-  --
-  hash_get: ls:(#) , ty:t
-  Terms: caisar_op8 caisar_es5 caisar_es6 caisar_es7 caisar_es8 caisar_es9
-         - caisar_op7 , caisar_op6
-  --
-  hash_get: ls:(#) , ty:t
-  Terms: caisar_op8 caisar_es5 caisar_es6 caisar_es7 caisar_es8 caisar_es9
-         - caisar_op7 , caisar_op6
-  --
   apply_classifier: ls:(@@) , ty:vector
   t
   Terms: caisar_op , caisar_op8 caisar_es5 caisar_es6 caisar_es7 caisar_es8
@@ -669,40 +873,80 @@ Test interpret on dataset
   reduce_match@(caisar_op9,
   0)
   --
-  hash_get: ls:(#) , ty:t
+  tget: ls:(#) , ty:t
   Terms: perturbed_image5 , v6
   --
-  hash_get: ls:(#) , ty:t
+  tget: ls:(#) , ty:t
   Terms: perturbed_image5 , v6
   --
-  hash_get: ls:(#) , ty:t
+  tminus: ls:(-) , ty:tensor
+  t
+  Terms: perturbed_image5 , y24
+  --
+  tget: ls:(#) , ty:t
   Terms: perturbed_image5 - y24 , caisar_op2
   --
-  hash_get: ls:(#) , ty:t
+  tminus: ls:(-) , ty:tensor
+  t
+  Terms: perturbed_image5 , y24
+  --
+  tget: ls:(#) , ty:t
   Terms: perturbed_image5 - y24 , caisar_op2
   --
-  hash_get: ls:(#) , ty:t
+  tminus: ls:(-) , ty:tensor
+  t
+  Terms: perturbed_image5 , y24
+  --
+  tget: ls:(#) , ty:t
   Terms: perturbed_image5 - y24 , caisar_op3
   --
-  hash_get: ls:(#) , ty:t
+  tminus: ls:(-) , ty:tensor
+  t
+  Terms: perturbed_image5 , y24
+  --
+  tget: ls:(#) , ty:t
   Terms: perturbed_image5 - y24 , caisar_op3
   --
-  hash_get: ls:(#) , ty:t
+  tminus: ls:(-) , ty:tensor
+  t
+  Terms: perturbed_image5 , y24
+  --
+  tget: ls:(#) , ty:t
   Terms: perturbed_image5 - y24 , caisar_op4
   --
-  hash_get: ls:(#) , ty:t
+  tminus: ls:(-) , ty:tensor
+  t
+  Terms: perturbed_image5 , y24
+  --
+  tget: ls:(#) , ty:t
   Terms: perturbed_image5 - y24 , caisar_op4
   --
-  hash_get: ls:(#) , ty:t
+  tminus: ls:(-) , ty:tensor
+  t
+  Terms: perturbed_image5 , y24
+  --
+  tget: ls:(#) , ty:t
   Terms: perturbed_image5 - y24 , caisar_op5
   --
-  hash_get: ls:(#) , ty:t
+  tminus: ls:(-) , ty:tensor
+  t
+  Terms: perturbed_image5 , y24
+  --
+  tget: ls:(#) , ty:t
   Terms: perturbed_image5 - y24 , caisar_op5
   --
-  hash_get: ls:(#) , ty:t
+  tminus: ls:(-) , ty:tensor
+  t
+  Terms: perturbed_image5 , y24
+  --
+  tget: ls:(#) , ty:t
   Terms: perturbed_image5 - y24 , caisar_op6
   --
-  hash_get: ls:(#) , ty:t
+  tminus: ls:(-) , ty:tensor
+  t
+  Terms: perturbed_image5 , y24
+  --
+  tget: ls:(#) , ty:t
   Terms: perturbed_image5 - y24 , caisar_op6
   --
   apply_classifier: ls:(@@) , ty:vector
@@ -770,75 +1014,195 @@ Test interpret on dataset
   ty: vector
   int
   --
-  hash_get: ls:(#) , ty:t
+  tget: ls:(#) , ty:t
   Terms: caisar_op8 caisar_es10 caisar_es11 caisar_es12 caisar_es13 caisar_es14 , caisar_op2
   --
-  hash_get: ls:(#) , ty:t
+  tget: ls:(#) , ty:t
   Terms: caisar_op8 caisar_es10 caisar_es11 caisar_es12 caisar_es13 caisar_es14 , caisar_op2
   --
-  hash_get: ls:(#) , ty:t
+  tget: ls:(#) , ty:t
   Terms: caisar_op8 caisar_es10 caisar_es11 caisar_es12 caisar_es13 caisar_es14 , caisar_op3
   --
-  hash_get: ls:(#) , ty:t
+  tget: ls:(#) , ty:t
   Terms: caisar_op8 caisar_es10 caisar_es11 caisar_es12 caisar_es13 caisar_es14 , caisar_op3
   --
-  hash_get: ls:(#) , ty:t
+  tget: ls:(#) , ty:t
   Terms: caisar_op8 caisar_es10 caisar_es11 caisar_es12 caisar_es13 caisar_es14 , caisar_op4
   --
-  hash_get: ls:(#) , ty:t
+  tget: ls:(#) , ty:t
   Terms: caisar_op8 caisar_es10 caisar_es11 caisar_es12 caisar_es13 caisar_es14 , caisar_op4
   --
-  hash_get: ls:(#) , ty:t
+  tget: ls:(#) , ty:t
   Terms: caisar_op8 caisar_es10 caisar_es11 caisar_es12 caisar_es13 caisar_es14 , caisar_op5
   --
-  hash_get: ls:(#) , ty:t
+  tget: ls:(#) , ty:t
   Terms: caisar_op8 caisar_es10 caisar_es11 caisar_es12 caisar_es13 caisar_es14 , caisar_op5
   --
-  hash_get: ls:(#) , ty:t
+  tget: ls:(#) , ty:t
   Terms: caisar_op8 caisar_es10 caisar_es11 caisar_es12 caisar_es13 caisar_es14 , caisar_op6
   --
-  hash_get: ls:(#) , ty:t
+  tget: ls:(#) , ty:t
   Terms: caisar_op8 caisar_es10 caisar_es11 caisar_es12 caisar_es13 caisar_es14 , caisar_op6
   --
-  hash_get: ls:(#) , ty:t
-  Terms: caisar_op8 caisar_es10 caisar_es11 caisar_es12 caisar_es13 caisar_es14
-         - caisar_op9 , caisar_op2
+  tminus: ls:(-) , ty:tensor
+  t
+  Terms: caisar_op8 caisar_es10 caisar_es11 caisar_es12 caisar_es13 caisar_es14 , caisar_op9
+  ls_of_caisar_op: (Interpretation.Tensor 5)
+  ty: tensor
+  t
+  --
+  tget: ls:(#) , ty:t
+  Terms: caisar_op8 (caisar_es10 .- (1.0:t)) (caisar_es11 .- (0.0:t))
+         (caisar_es12
+          .- (0.01960784299999999980013143385804141871631145477294921875:t))
+         (caisar_es13
+          .- (0.776470588000000017103729987866245210170745849609375:t))
+         (caisar_es14
+          .- (0.78431372499999996161790249971090815961360931396484375:t)) , caisar_op2
+  --
+  tminus: ls:(-) , ty:tensor
+  t
+  Terms: caisar_op8 caisar_es10 caisar_es11 caisar_es12 caisar_es13 caisar_es14 , caisar_op9
+  ls_of_caisar_op: (Interpretation.Tensor 5)
+  ty: tensor
+  t
+  --
+  tget: ls:(#) , ty:t
+  Terms: caisar_op8 (caisar_es10 .- (1.0:t)) (caisar_es11 .- (0.0:t))
+         (caisar_es12
+          .- (0.01960784299999999980013143385804141871631145477294921875:t))
+         (caisar_es13
+          .- (0.776470588000000017103729987866245210170745849609375:t))
+         (caisar_es14
+          .- (0.78431372499999996161790249971090815961360931396484375:t)) , caisar_op2
   --
-  hash_get: ls:(#) , ty:t
-  Terms: caisar_op8 caisar_es10 caisar_es11 caisar_es12 caisar_es13 caisar_es14
-         - caisar_op9 , caisar_op2
+  tminus: ls:(-) , ty:tensor
+  t
+  Terms: caisar_op8 caisar_es10 caisar_es11 caisar_es12 caisar_es13 caisar_es14 , caisar_op9
+  ls_of_caisar_op: (Interpretation.Tensor 5)
+  ty: tensor
+  t
   --
-  hash_get: ls:(#) , ty:t
-  Terms: caisar_op8 caisar_es10 caisar_es11 caisar_es12 caisar_es13 caisar_es14
-         - caisar_op9 , caisar_op3
+  tget: ls:(#) , ty:t
+  Terms: caisar_op8 (caisar_es10 .- (1.0:t)) (caisar_es11 .- (0.0:t))
+         (caisar_es12
+          .- (0.01960784299999999980013143385804141871631145477294921875:t))
+         (caisar_es13
+          .- (0.776470588000000017103729987866245210170745849609375:t))
+         (caisar_es14
+          .- (0.78431372499999996161790249971090815961360931396484375:t)) , caisar_op3
   --
-  hash_get: ls:(#) , ty:t
-  Terms: caisar_op8 caisar_es10 caisar_es11 caisar_es12 caisar_es13 caisar_es14
-         - caisar_op9 , caisar_op3
+  tminus: ls:(-) , ty:tensor
+  t
+  Terms: caisar_op8 caisar_es10 caisar_es11 caisar_es12 caisar_es13 caisar_es14 , caisar_op9
+  ls_of_caisar_op: (Interpretation.Tensor 5)
+  ty: tensor
+  t
+  --
+  tget: ls:(#) , ty:t
+  Terms: caisar_op8 (caisar_es10 .- (1.0:t)) (caisar_es11 .- (0.0:t))
+         (caisar_es12
+          .- (0.01960784299999999980013143385804141871631145477294921875:t))
+         (caisar_es13
+          .- (0.776470588000000017103729987866245210170745849609375:t))
+         (caisar_es14
+          .- (0.78431372499999996161790249971090815961360931396484375:t)) , caisar_op3
+  --
+  tminus: ls:(-) , ty:tensor
+  t
+  Terms: caisar_op8 caisar_es10 caisar_es11 caisar_es12 caisar_es13 caisar_es14 , caisar_op9
+  ls_of_caisar_op: (Interpretation.Tensor 5)
+  ty: tensor
+  t
   --
-  hash_get: ls:(#) , ty:t
-  Terms: caisar_op8 caisar_es10 caisar_es11 caisar_es12 caisar_es13 caisar_es14
-         - caisar_op9 , caisar_op4
+  tget: ls:(#) , ty:t
+  Terms: caisar_op8 (caisar_es10 .- (1.0:t)) (caisar_es11 .- (0.0:t))
+         (caisar_es12
+          .- (0.01960784299999999980013143385804141871631145477294921875:t))
+         (caisar_es13
+          .- (0.776470588000000017103729987866245210170745849609375:t))
+         (caisar_es14
+          .- (0.78431372499999996161790249971090815961360931396484375:t)) , caisar_op4
   --
-  hash_get: ls:(#) , ty:t
-  Terms: caisar_op8 caisar_es10 caisar_es11 caisar_es12 caisar_es13 caisar_es14
-         - caisar_op9 , caisar_op4
+  tminus: ls:(-) , ty:tensor
+  t
+  Terms: caisar_op8 caisar_es10 caisar_es11 caisar_es12 caisar_es13 caisar_es14 , caisar_op9
+  ls_of_caisar_op: (Interpretation.Tensor 5)
+  ty: tensor
+  t
   --
-  hash_get: ls:(#) , ty:t
-  Terms: caisar_op8 caisar_es10 caisar_es11 caisar_es12 caisar_es13 caisar_es14
-         - caisar_op9 , caisar_op5
+  tget: ls:(#) , ty:t
+  Terms: caisar_op8 (caisar_es10 .- (1.0:t)) (caisar_es11 .- (0.0:t))
+         (caisar_es12
+          .- (0.01960784299999999980013143385804141871631145477294921875:t))
+         (caisar_es13
+          .- (0.776470588000000017103729987866245210170745849609375:t))
+         (caisar_es14
+          .- (0.78431372499999996161790249971090815961360931396484375:t)) , caisar_op4
   --
-  hash_get: ls:(#) , ty:t
-  Terms: caisar_op8 caisar_es10 caisar_es11 caisar_es12 caisar_es13 caisar_es14
-         - caisar_op9 , caisar_op5
+  tminus: ls:(-) , ty:tensor
+  t
+  Terms: caisar_op8 caisar_es10 caisar_es11 caisar_es12 caisar_es13 caisar_es14 , caisar_op9
+  ls_of_caisar_op: (Interpretation.Tensor 5)
+  ty: tensor
+  t
   --
-  hash_get: ls:(#) , ty:t
-  Terms: caisar_op8 caisar_es10 caisar_es11 caisar_es12 caisar_es13 caisar_es14
-         - caisar_op9 , caisar_op6
+  tget: ls:(#) , ty:t
+  Terms: caisar_op8 (caisar_es10 .- (1.0:t)) (caisar_es11 .- (0.0:t))
+         (caisar_es12
+          .- (0.01960784299999999980013143385804141871631145477294921875:t))
+         (caisar_es13
+          .- (0.776470588000000017103729987866245210170745849609375:t))
+         (caisar_es14
+          .- (0.78431372499999996161790249971090815961360931396484375:t)) , caisar_op5
   --
-  hash_get: ls:(#) , ty:t
-  Terms: caisar_op8 caisar_es10 caisar_es11 caisar_es12 caisar_es13 caisar_es14
-         - caisar_op9 , caisar_op6
+  tminus: ls:(-) , ty:tensor
+  t
+  Terms: caisar_op8 caisar_es10 caisar_es11 caisar_es12 caisar_es13 caisar_es14 , caisar_op9
+  ls_of_caisar_op: (Interpretation.Tensor 5)
+  ty: tensor
+  t
+  --
+  tget: ls:(#) , ty:t
+  Terms: caisar_op8 (caisar_es10 .- (1.0:t)) (caisar_es11 .- (0.0:t))
+         (caisar_es12
+          .- (0.01960784299999999980013143385804141871631145477294921875:t))
+         (caisar_es13
+          .- (0.776470588000000017103729987866245210170745849609375:t))
+         (caisar_es14
+          .- (0.78431372499999996161790249971090815961360931396484375:t)) , caisar_op5
+  --
+  tminus: ls:(-) , ty:tensor
+  t
+  Terms: caisar_op8 caisar_es10 caisar_es11 caisar_es12 caisar_es13 caisar_es14 , caisar_op9
+  ls_of_caisar_op: (Interpretation.Tensor 5)
+  ty: tensor
+  t
+  --
+  tget: ls:(#) , ty:t
+  Terms: caisar_op8 (caisar_es10 .- (1.0:t)) (caisar_es11 .- (0.0:t))
+         (caisar_es12
+          .- (0.01960784299999999980013143385804141871631145477294921875:t))
+         (caisar_es13
+          .- (0.776470588000000017103729987866245210170745849609375:t))
+         (caisar_es14
+          .- (0.78431372499999996161790249971090815961360931396484375:t)) , caisar_op6
+  --
+  tminus: ls:(-) , ty:tensor
+  t
+  Terms: caisar_op8 caisar_es10 caisar_es11 caisar_es12 caisar_es13 caisar_es14 , caisar_op9
+  ls_of_caisar_op: (Interpretation.Tensor 5)
+  ty: tensor
+  t
+  --
+  tget: ls:(#) , ty:t
+  Terms: caisar_op8 (caisar_es10 .- (1.0:t)) (caisar_es11 .- (0.0:t))
+         (caisar_es12
+          .- (0.01960784299999999980013143385804141871631145477294921875:t))
+         (caisar_es13
+          .- (0.776470588000000017103729987866245210170745849609375:t))
+         (caisar_es14
+          .- (0.78431372499999996161790249971090815961360931396484375:t)) , caisar_op6
   --
   apply_classifier: ls:(@@) , ty:vector
   t
@@ -900,46 +1264,6 @@ Test interpret on dataset
          @@ caisar_op8 caisar_es10 caisar_es11 caisar_es12 caisar_es13
             caisar_es14 , y36
   --
-  hash_get: ls:(#) , ty:t
-  Terms: caisar_op8 caisar_es15 caisar_es16 caisar_es17 caisar_es18 caisar_es19
-         - caisar_op9 , caisar_op2
-  --
-  hash_get: ls:(#) , ty:t
-  Terms: caisar_op8 caisar_es15 caisar_es16 caisar_es17 caisar_es18 caisar_es19
-         - caisar_op9 , caisar_op2
-  --
-  hash_get: ls:(#) , ty:t
-  Terms: caisar_op8 caisar_es15 caisar_es16 caisar_es17 caisar_es18 caisar_es19
-         - caisar_op9 , caisar_op3
-  --
-  hash_get: ls:(#) , ty:t
-  Terms: caisar_op8 caisar_es15 caisar_es16 caisar_es17 caisar_es18 caisar_es19
-         - caisar_op9 , caisar_op3
-  --
-  hash_get: ls:(#) , ty:t
-  Terms: caisar_op8 caisar_es15 caisar_es16 caisar_es17 caisar_es18 caisar_es19
-         - caisar_op9 , caisar_op4
-  --
-  hash_get: ls:(#) , ty:t
-  Terms: caisar_op8 caisar_es15 caisar_es16 caisar_es17 caisar_es18 caisar_es19
-         - caisar_op9 , caisar_op4
-  --
-  hash_get: ls:(#) , ty:t
-  Terms: caisar_op8 caisar_es15 caisar_es16 caisar_es17 caisar_es18 caisar_es19
-         - caisar_op9 , caisar_op5
-  --
-  hash_get: ls:(#) , ty:t
-  Terms: caisar_op8 caisar_es15 caisar_es16 caisar_es17 caisar_es18 caisar_es19
-         - caisar_op9 , caisar_op5
-  --
-  hash_get: ls:(#) , ty:t
-  Terms: caisar_op8 caisar_es15 caisar_es16 caisar_es17 caisar_es18 caisar_es19
-         - caisar_op9 , caisar_op6
-  --
-  hash_get: ls:(#) , ty:t
-  Terms: caisar_op8 caisar_es15 caisar_es16 caisar_es17 caisar_es18 caisar_es19
-         - caisar_op9 , caisar_op6
-  --
   apply_classifier: ls:(@@) , ty:vector
   t
   Terms: caisar_op , caisar_op8 caisar_es15 caisar_es16 caisar_es17 caisar_es18
@@ -1007,50 +1331,30 @@ Test interpret on dataset
          le (0.0:t) caisar_es21 /\ le caisar_es21 (1.0:t)) /\
         le (0.0:t) caisar_es20 /\ le caisar_es20 (1.0:t) ->
         ((((le (neg (0.375:t))
-            ((caisar_op8 caisar_es20 caisar_es21 caisar_es22 caisar_es23
-              caisar_es24 - caisar_op7)
-             # caisar_op2) /\
+            (sub RNE caisar_es24
+             (0.776470588000000017103729987866245210170745849609375:t)) /\
             le
-            ((caisar_op8 caisar_es20 caisar_es21 caisar_es22 caisar_es23
-              caisar_es24 - caisar_op7)
-             # caisar_op2)
+            (sub RNE caisar_es24
+             (0.776470588000000017103729987866245210170745849609375:t))
             (0.375:t)) /\
            le (neg (0.375:t))
-           ((caisar_op8 caisar_es20 caisar_es21 caisar_es22 caisar_es23
-             caisar_es24 - caisar_op7)
-            # caisar_op3) /\
+           (sub RNE caisar_es23
+            (0.01960784299999999980013143385804141871631145477294921875:t)) /\
            le
-           ((caisar_op8 caisar_es20 caisar_es21 caisar_es22 caisar_es23
-             caisar_es24 - caisar_op7)
-            # caisar_op3)
+           (sub RNE caisar_es23
+            (0.01960784299999999980013143385804141871631145477294921875:t))
            (0.375:t)) /\
           le (neg (0.375:t))
-          ((caisar_op8 caisar_es20 caisar_es21 caisar_es22 caisar_es23
-            caisar_es24 - caisar_op7)
-           # caisar_op4) /\
+          (sub RNE caisar_es22
+           (0.78431372499999996161790249971090815961360931396484375:t)) /\
           le
-          ((caisar_op8 caisar_es20 caisar_es21 caisar_es22 caisar_es23
-            caisar_es24 - caisar_op7)
-           # caisar_op4)
+          (sub RNE caisar_es22
+           (0.78431372499999996161790249971090815961360931396484375:t))
           (0.375:t)) /\
-         le (neg (0.375:t))
-         ((caisar_op8 caisar_es20 caisar_es21 caisar_es22 caisar_es23
-           caisar_es24 - caisar_op7)
-          # caisar_op5) /\
-         le
-         ((caisar_op8 caisar_es20 caisar_es21 caisar_es22 caisar_es23
-           caisar_es24 - caisar_op7)
-          # caisar_op5)
-         (0.375:t)) /\
-        le (neg (0.375:t))
-        ((caisar_op8 caisar_es20 caisar_es21 caisar_es22 caisar_es23
-          caisar_es24 - caisar_op7)
-         # caisar_op6) /\
-        le
-        ((caisar_op8 caisar_es20 caisar_es21 caisar_es22 caisar_es23
-          caisar_es24 - caisar_op7)
-         # caisar_op6)
-        (0.375:t) ->
+         le (neg (0.375:t)) (sub RNE caisar_es21 (1.0:t)) /\
+         le (sub RNE caisar_es21 (1.0:t)) (0.375:t)) /\
+        le (neg (0.375:t)) (sub RNE caisar_es20 (0.0:t)) /\
+        le (sub RNE caisar_es20 (0.0:t)) (0.375:t) ->
         lt
         (caisar_op
          @@ caisar_op8 caisar_es20 caisar_es21 caisar_es22 caisar_es23
@@ -1077,50 +1381,30 @@ Test interpret on dataset
          le (0.0:t) caisar_es21 /\ le caisar_es21 (1.0:t)) /\
         le (0.0:t) caisar_es20 /\ le caisar_es20 (1.0:t) ->
         ((((le (neg (0.375:t))
-            ((caisar_op8 caisar_es20 caisar_es21 caisar_es22 caisar_es23
-              caisar_es24 - caisar_op9)
-             # caisar_op2) /\
+            (sub RNE caisar_es24
+             (0.78431372499999996161790249971090815961360931396484375:t)) /\
             le
-            ((caisar_op8 caisar_es20 caisar_es21 caisar_es22 caisar_es23
-              caisar_es24 - caisar_op9)
-             # caisar_op2)
+            (sub RNE caisar_es24
+             (0.78431372499999996161790249971090815961360931396484375:t))
             (0.375:t)) /\
            le (neg (0.375:t))
-           ((caisar_op8 caisar_es20 caisar_es21 caisar_es22 caisar_es23
-             caisar_es24 - caisar_op9)
-            # caisar_op3) /\
+           (sub RNE caisar_es23
+            (0.776470588000000017103729987866245210170745849609375:t)) /\
            le
-           ((caisar_op8 caisar_es20 caisar_es21 caisar_es22 caisar_es23
-             caisar_es24 - caisar_op9)
-            # caisar_op3)
+           (sub RNE caisar_es23
+            (0.776470588000000017103729987866245210170745849609375:t))
            (0.375:t)) /\
           le (neg (0.375:t))
-          ((caisar_op8 caisar_es20 caisar_es21 caisar_es22 caisar_es23
-            caisar_es24 - caisar_op9)
-           # caisar_op4) /\
+          (sub RNE caisar_es22
+           (0.01960784299999999980013143385804141871631145477294921875:t)) /\
           le
-          ((caisar_op8 caisar_es20 caisar_es21 caisar_es22 caisar_es23
-            caisar_es24 - caisar_op9)
-           # caisar_op4)
+          (sub RNE caisar_es22
+           (0.01960784299999999980013143385804141871631145477294921875:t))
           (0.375:t)) /\
-         le (neg (0.375:t))
-         ((caisar_op8 caisar_es20 caisar_es21 caisar_es22 caisar_es23
-           caisar_es24 - caisar_op9)
-          # caisar_op5) /\
-         le
-         ((caisar_op8 caisar_es20 caisar_es21 caisar_es22 caisar_es23
-           caisar_es24 - caisar_op9)
-          # caisar_op5)
-         (0.375:t)) /\
-        le (neg (0.375:t))
-        ((caisar_op8 caisar_es20 caisar_es21 caisar_es22 caisar_es23
-          caisar_es24 - caisar_op9)
-         # caisar_op6) /\
-        le
-        ((caisar_op8 caisar_es20 caisar_es21 caisar_es22 caisar_es23
-          caisar_es24 - caisar_op9)
-         # caisar_op6)
-        (0.375:t) ->
+         le (neg (0.375:t)) (sub RNE caisar_es21 (0.0:t)) /\
+         le (sub RNE caisar_es21 (0.0:t)) (0.375:t)) /\
+        le (neg (0.375:t)) (sub RNE caisar_es20 (1.0:t)) /\
+        le (sub RNE caisar_es20 (1.0:t)) (0.375:t) ->
         lt
         (caisar_op
          @@ caisar_op8 caisar_es20 caisar_es21 caisar_es22 caisar_es23
@@ -1146,11 +1430,11 @@ Test interpret on dataset
   caisar_op,
   (Interpretation.Classifier
      "$TESTCASE_ROOT/TestNetwork.nnet")
+  caisar_op1, (Interpretation.Dataset <csv>)
   caisar_op9,
   (Interpretation.Data
      (Interpretation.D_csv
         ["1.0"; "0.0"; "0.019607843"; "0.776470588"; "0.784313725"]))
-  caisar_op1, (Interpretation.Dataset <csv>)
   caisar_op8, (Interpretation.Tensor 5)
   caisar_op2, (Interpretation.Index (Interpretation.I_csv 4))
   caisar_op3, (Interpretation.Index (Interpretation.I_csv 3))