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))