diff --git a/Makefile b/Makefile
index 3c0346bf7698ba83ffd3797c15cc3b3f59e3d6fd..e3d014f7edfcab48bc40e4b8e4978a9988f02898 100644
--- a/Makefile
+++ b/Makefile
@@ -1,5 +1,8 @@
 all:
-	dune build @install caisar.opam nnet.opam
+	dune build --root=. @install caisar.opam nnet.opam
 
 test:
-	dune runtest
+	dune runtest --root=.
+
+promote:
+	dune promote --root=.
diff --git a/caisar.opam b/caisar.opam
index 6fce9b4897ea3c2f5c4218f6adfe6039cfd3d370..ab1d3143c8d58fc1df94a984b7be9b95e5f88125 100644
--- a/caisar.opam
+++ b/caisar.opam
@@ -19,7 +19,7 @@ depends: [
   "odoc" {with-doc}
 ]
 build: [
-  ["dune" "subst"] {dev}
+  ["dune" "subst" "--root" "."] {dev}
   [
     "dune"
     "build"
@@ -27,7 +27,8 @@ build: [
     name
     "-j"
     jobs
-    "--promote-install-files=false"
+    "--promote-install-files"
+    "false"
     "@install"
     "@runtest" {with-test}
     "@doc" {with-doc}
diff --git a/config/drivers/pyrat.drv b/config/drivers/pyrat.drv
index ec70c5839c35a75e1cc259b2c72ec082f6fcf5da..e035485889d5ec0fe9ac4aefc087e14285f25c3e 100644
--- a/config/drivers/pyrat.drv
+++ b/config/drivers/pyrat.drv
@@ -6,7 +6,7 @@ prelude "(* this is the prelude for PyRAT *)"
 valid "^Inconsistent assumption$"
 
 
-printer "alt-ergo"
+printer "why3"
 filename "%f-%t-%g.why"
 
 valid "^File \".*\", line [0-9]+, characters [0-9]+-[0-9]+:Valid"
@@ -25,16 +25,11 @@ steps "Valid (\\([0-9]+.?[0-9]*\\)) (\\([0-9]+.?[0-9]*\\) steps)" 2
 time "why3cpulimit time : %s s"
 
 transformation "inline_trivial"
+transformation "introduce_premises"
 
 transformation "eliminate_builtin"
-transformation "eliminate_recursion"
-transformation "eliminate_inductive"
-transformation "eliminate_algebraic"
-transformation "eliminate_literal"
-transformation "eliminate_epsilon"
-transformation "eliminate_let_term"
-transformation "split_premise_right"
 transformation "simplify_formula"
+transformation "caisar_native_prover"
 
 theory BuiltIn
   syntax type int   "int"
diff --git a/nnet.opam b/nnet.opam
index ea6f2c5285c00613bc4df4880b74b71fc723ad96..4871796a4c568e4a3339f8a81b43c26d01c74ccd 100644
--- a/nnet.opam
+++ b/nnet.opam
@@ -9,7 +9,7 @@ depends: [
   "odoc" {with-doc}
 ]
 build: [
-  ["dune" "subst"] {dev}
+  ["dune" "subst" "--root" "."] {dev}
   [
     "dune"
     "build"
@@ -17,7 +17,8 @@ build: [
     name
     "-j"
     jobs
-    "--promote-install-files=false"
+    "--promote-install-files"
+    "false"
     "@install"
     "@runtest" {with-test}
     "@doc" {with-doc}
diff --git a/src/language.ml b/src/language.ml
index 177c1f749a7e7a7175c445a7fcb8bd2662896ab1..33bd73063a80b3d472aa03f7e4b9fcbbf9945c54 100644
--- a/src/language.ml
+++ b/src/language.ml
@@ -8,6 +8,10 @@ open Base
 
 (* -- Support for the NNet neural network format. *)
 
+let loaded_nnets = Why3.Term.Hls.create 10
+
+let lookup_loaded_nnets = Why3.Term.Hls.find_opt loaded_nnets
+
 let nnet_parser env _ filename _ =
   let open Why3 in
   let header = Nnet.parse filename in
@@ -30,6 +34,7 @@ let nnet_parser env _ filename _ =
         (List.init header.n_inputs ~f)
         (Ty.ty_tuple (List.init header.n_outputs ~f))
     in
+    Why3.Term.Hls.add loaded_nnets ls_nnet_apply filename;
     let th_uc =
       Pmodule.add_pdecl ~vc:false th_uc
         (Pdecl.create_pure_decl (Decl.create_param_decl ls_nnet_apply))
diff --git a/src/language.mli b/src/language.mli
new file mode 100644
index 0000000000000000000000000000000000000000..5a8c544502e299eca9ebafb2421b9cf94fe6a573
--- /dev/null
+++ b/src/language.mli
@@ -0,0 +1,5 @@
+val lookup_loaded_nnets : Why3.Term.lsymbol -> string option
+(** Return the filename of an nnets Why3 representation *)
+
+val register_nnet_support : unit -> unit
+(** register nnet parser *)
diff --git a/src/main.ml b/src/main.ml
index 3c1254e22064d7059ff05c18acca5d9b06291412..3b9031d9dc797c4e0b2824585883fd8f8dfe39e1 100644
--- a/src/main.ml
+++ b/src/main.ml
@@ -10,6 +10,7 @@ module Format = Caml.Format
 
 let caisar = "caisar"
 
+let () = Transformations.init ()
 (* -- Logs. *)
 
 let pp_header =
diff --git a/src/transformations.ml b/src/transformations.ml
new file mode 100644
index 0000000000000000000000000000000000000000..94877c2ca39fefb362bc642538e9f4401fb0a074
--- /dev/null
+++ b/src/transformations.ml
@@ -0,0 +1,31 @@
+open Base
+
+let get_input_variables =
+  let rec aux acc (term : Why3.Term.term) =
+    match term.t_node with
+    | Why3.Term.Tapp (ls, args) -> (
+      match Language.lookup_loaded_nnets ls with
+      | None -> acc
+      | Some _name ->
+        let add acc = function
+          | { Why3.Term.t_node = Tapp (vs, []); _ } -> Why3.Term.Sls.add vs acc
+          | arg ->
+            invalid_arg
+              (Fmt.str "No direct variable in application: %a"
+                 Why3.Pretty.print_term arg)
+        in
+        List.fold ~init:acc ~f:add args)
+    | _ -> Why3.Term.t_fold aux acc term
+  in
+  Why3.Trans.fold_decl
+    (fun decl acc -> Why3.Decl.decl_fold aux acc decl)
+    Why3.Term.Sls.empty
+
+let simplify_goal _input_variables = Why3.Trans.identity
+
+let caisar_native_prover = Why3.Trans.bind get_input_variables simplify_goal
+
+let init () =
+  Why3.Trans.register_transform
+    ~desc:"Transformation for provers that support loading neural networks."
+    "caisar_native_prover" caisar_native_prover
diff --git a/src/transformations.mli b/src/transformations.mli
new file mode 100644
index 0000000000000000000000000000000000000000..1d3779c269fa019d0f01e8b827d7ce09dbf7567a
--- /dev/null
+++ b/src/transformations.mli
@@ -0,0 +1,2 @@
+val init : unit -> unit
+(** register the transformations *)
diff --git a/tests/simple.t b/tests/simple.t
index 2f22cd593564a0dee407d00725de98f6d9818a05..bcda3cab5f7a83e091a1f2d79c92a2ac77558351 100644
--- a/tests/simple.t
+++ b/tests/simple.t
@@ -29,6 +29,7 @@ Test verify
   >   use caisar.NNet
   > 
   >   goal G: forall x1 x2 x3 x4 x5.
+  >      0.0 <. t'real x1 <. 0.1 ->
   >      let (y1,_,_,_,_) = nnet_apply x1 x2 x3 x4 x5 in
   >      0.0 <. t'real y1 <. 0.1
   > end
@@ -47,461 +48,1133 @@ Test verify
   <autodetect>Found prover PyRAT version 1.0, OK.
   <autodetect>3 prover(s) added
   (* this is the prelude for PyRAT *)
+  theory Task
   (* this is a prelude for Alt-Ergo integer arithmetic *)
   (* this is a prelude for Alt-Ergo real arithmetic *)
   type string
   
-  logic match_bool : bool, 'a, 'a -> 'a
+  (* use why3.BuiltIn.BuiltIn *)
+  
+  (* use why3.Bool.Bool *)
+  
+  (* use why3.Tuple0.Tuple0 *)
+  
+  type unit = unit
+  
+  (* use why3.Unit.Unit *)
+  
+  (* clone algebra.Assoc with type t = int, function op = infix_pl,
+    prop Assoc = Assoc1,  *)(* clone algebra.Monoid with type t1 = int, function unit = zero,
+    function op1 = infix_pl, prop Unit_def_r = Unit_def_r1,
+    prop Unit_def_l = Unit_def_l1, prop Assoc2 = Assoc1,  *)(* clone algebra.Group with type t2 = int, function inv = prefix_mn,
+    function unit1 = zero, function op2 = infix_pl,
+    prop Inv_def_r = Inv_def_r1, prop Inv_def_l = Inv_def_l1,
+    prop Unit_def_r2 = Unit_def_r1, prop Unit_def_l2 = Unit_def_l1,
+    prop Assoc3 = Assoc1,  *)(* clone algebra.Comm with type t3 = int, function op3 = infix_pl,
+    prop Comm = Comm1,  *)(* meta AC function infix_pl *)
+  
+  (* clone algebra.CommutativeGroup with type t4 = int,
+    function inv1 = prefix_mn, function unit2 = zero, function op4 = infix_pl,
+    prop Comm2 = Comm1, prop Inv_def_r2 = Inv_def_r1,
+    prop Inv_def_l2 = Inv_def_l1, prop Unit_def_r3 = Unit_def_r1,
+    prop Unit_def_l3 = Unit_def_l1, prop Assoc4 = Assoc1,  *)(* clone algebra.Assoc with type t = int, function op = infix_as,
+    prop Assoc = Assoc5,  *)(* clone algebra.Ring with type t5 = int, function infix_as1 = infix_as,
+    function prefix_mn1 = prefix_mn, function infix_pl1 = infix_pl,
+    function zero1 = zero, prop Mul_distr_r = Mul_distr_r1,
+    prop Mul_distr_l = Mul_distr_l1, prop Assoc6 = Assoc5, prop Comm3 = Comm1,
+    prop Inv_def_r3 = Inv_def_r1, prop Inv_def_l3 = Inv_def_l1,
+    prop Unit_def_r4 = Unit_def_r1, prop Unit_def_l4 = Unit_def_l1,
+    prop Assoc7 = Assoc1,  *)(* clone algebra.Comm with type t3 = int, function op3 = infix_as,
+    prop Comm = Comm4,  *)(* meta AC function infix_as *)
+  
+  (* clone algebra.CommutativeRing with type t6 = int,
+    function infix_as2 = infix_as, function prefix_mn2 = prefix_mn,
+    function infix_pl2 = infix_pl, function zero2 = zero, prop Comm5 = Comm4,
+    prop Mul_distr_r2 = Mul_distr_r1, prop Mul_distr_l2 = Mul_distr_l1,
+    prop Assoc8 = Assoc5, prop Comm6 = Comm1, prop Inv_def_r4 = Inv_def_r1,
+    prop Inv_def_l4 = Inv_def_l1, prop Unit_def_r5 = Unit_def_r1,
+    prop Unit_def_l5 = Unit_def_l1, prop Assoc9 = Assoc1,  *)(* clone algebra.UnitaryCommutativeRing with type t7 = int,
+    function one = one1, function infix_as3 = infix_as,
+    function prefix_mn3 = prefix_mn, function infix_pl3 = infix_pl,
+    function zero3 = zero, prop NonTrivialRing = NonTrivialRing1,
+    prop Unitary = Unitary1, prop Comm7 = Comm4,
+    prop Mul_distr_r3 = Mul_distr_r1, prop Mul_distr_l3 = Mul_distr_l1,
+    prop Assoc10 = Assoc5, prop Comm8 = Comm1, prop Inv_def_r5 = Inv_def_r1,
+    prop Inv_def_l5 = Inv_def_l1, prop Unit_def_r6 = Unit_def_r1,
+    prop Unit_def_l6 = Unit_def_l1, prop Assoc11 = Assoc1,  *)(* clone relations.EndoRelation with type t8 = int,
+    predicate rel = infix_lseq,  *)(* clone relations.Reflexive with type t9 = int, predicate rel1 = infix_lseq,
+    prop Refl = Refl1,  *)(* clone relations.EndoRelation with type t8 = int,
+    predicate rel = infix_lseq,  *)(* clone relations.Transitive with type t10 = int,
+    predicate rel2 = infix_lseq, prop Trans = Trans1,  *)(* clone relations.PreOrder with type t11 = int, predicate rel3 = infix_lseq,
+    prop Trans2 = Trans1, prop Refl2 = Refl1,  *)(* clone relations.EndoRelation with type t8 = int,
+    predicate rel = infix_lseq,  *)(* clone relations.Antisymmetric with type t12 = int,
+    predicate rel4 = infix_lseq, prop Antisymm = Antisymm1,  *)(* clone relations.PartialOrder with type t13 = int,
+    predicate rel5 = infix_lseq, prop Antisymm2 = Antisymm1,
+    prop Trans3 = Trans1, prop Refl3 = Refl1,  *)(* clone relations.EndoRelation with type t8 = int,
+    predicate rel = infix_lseq,  *)(* clone relations.Total with type t14 = int, predicate rel6 = infix_lseq,
+    prop Total = Total1,  *)(* clone relations.TotalOrder with type t15 = int,
+    predicate rel7 = infix_lseq, prop Total2 = Total1,
+    prop Antisymm3 = Antisymm1, prop Trans4 = Trans1, prop Refl4 = Refl1,  *)axiom CompatOrderMult : forall x:int, y:int, z:int. (x <= y) -> (0 <= z) ->
+    ((x * z) <= (y * z))
+  
+  (* clone algebra.OrderedUnitaryCommutativeRing with type t16 = int,
+    predicate infix_lseq1 = infix_lseq, function one2 = one1,
+    function infix_as4 = infix_as, function prefix_mn4 = prefix_mn,
+    function infix_pl4 = infix_pl, function zero4 = zero,
+    prop CompatOrderMult1 = CompatOrderMult,
+    prop CompatOrderAdd = CompatOrderAdd1, prop ZeroLessOne = ZeroLessOne1,
+    prop Total3 = Total1, prop Antisymm4 = Antisymm1, prop Trans5 = Trans1,
+    prop Refl5 = Refl1, prop NonTrivialRing2 = NonTrivialRing1,
+    prop Unitary2 = Unitary1, prop Comm9 = Comm4,
+    prop Mul_distr_r4 = Mul_distr_r1, prop Mul_distr_l4 = Mul_distr_l1,
+    prop Assoc12 = Assoc5, prop Comm10 = Comm1, prop Inv_def_r6 = Inv_def_r1,
+    prop Inv_def_l6 = Inv_def_l1, prop Unit_def_r7 = Unit_def_r1,
+    prop Unit_def_l7 = Unit_def_l1, prop Assoc13 = Assoc1,  *)(* use int.Int *)
+  
+  (* clone algebra.Assoc with type t = real, function op = infix_pl5,
+    prop Assoc = Assoc14,  *)(* clone algebra.Monoid with type t1 = real, function unit = zero5,
+    function op1 = infix_pl5, prop Unit_def_r = Unit_def_r8,
+    prop Unit_def_l = Unit_def_l8, prop Assoc2 = Assoc14,  *)(* clone algebra.Group with type t2 = real, function inv = prefix_mn5,
+    function unit1 = zero5, function op2 = infix_pl5,
+    prop Inv_def_r = Inv_def_r7, prop Inv_def_l = Inv_def_l7,
+    prop Unit_def_r2 = Unit_def_r8, prop Unit_def_l2 = Unit_def_l8,
+    prop Assoc3 = Assoc14,  *)(* clone algebra.Comm with type t3 = real, function op3 = infix_pl5,
+    prop Comm = Comm11,  *)(* meta AC function infix_pl5 *)
+  
+  (* clone algebra.CommutativeGroup with type t4 = real,
+    function inv1 = prefix_mn5, function unit2 = zero5,
+    function op4 = infix_pl5, prop Comm2 = Comm11,
+    prop Inv_def_r2 = Inv_def_r7, prop Inv_def_l2 = Inv_def_l7,
+    prop Unit_def_r3 = Unit_def_r8, prop Unit_def_l3 = Unit_def_l8,
+    prop Assoc4 = Assoc14,  *)(* clone algebra.Assoc with type t = real, function op = infix_as5,
+    prop Assoc = Assoc15,  *)(* clone algebra.Ring with type t5 = real, function infix_as1 = infix_as5,
+    function prefix_mn1 = prefix_mn5, function infix_pl1 = infix_pl5,
+    function zero1 = zero5, prop Mul_distr_r = Mul_distr_r5,
+    prop Mul_distr_l = Mul_distr_l5, prop Assoc6 = Assoc15,
+    prop Comm3 = Comm11, prop Inv_def_r3 = Inv_def_r7,
+    prop Inv_def_l3 = Inv_def_l7, prop Unit_def_r4 = Unit_def_r8,
+    prop Unit_def_l4 = Unit_def_l8, prop Assoc7 = Assoc14,  *)(* clone algebra.Comm with type t3 = real, function op3 = infix_as5,
+    prop Comm = Comm12,  *)(* meta AC function infix_as5 *)
+  
+  (* clone algebra.CommutativeRing with type t6 = real,
+    function infix_as2 = infix_as5, function prefix_mn2 = prefix_mn5,
+    function infix_pl2 = infix_pl5, function zero2 = zero5,
+    prop Comm5 = Comm12, prop Mul_distr_r2 = Mul_distr_r5,
+    prop Mul_distr_l2 = Mul_distr_l5, prop Assoc8 = Assoc15,
+    prop Comm6 = Comm11, prop Inv_def_r4 = Inv_def_r7,
+    prop Inv_def_l4 = Inv_def_l7, prop Unit_def_r5 = Unit_def_r8,
+    prop Unit_def_l5 = Unit_def_l8, prop Assoc9 = Assoc14,  *)(* clone algebra.UnitaryCommutativeRing with type t7 = real,
+    function one = one3, function infix_as3 = infix_as5,
+    function prefix_mn3 = prefix_mn5, function infix_pl3 = infix_pl5,
+    function zero3 = zero5, prop NonTrivialRing = NonTrivialRing3,
+    prop Unitary = Unitary3, prop Comm7 = Comm12,
+    prop Mul_distr_r3 = Mul_distr_r5, prop Mul_distr_l3 = Mul_distr_l5,
+    prop Assoc10 = Assoc15, prop Comm8 = Comm11, prop Inv_def_r5 = Inv_def_r7,
+    prop Inv_def_l5 = Inv_def_l7, prop Unit_def_r6 = Unit_def_r8,
+    prop Unit_def_l6 = Unit_def_l8, prop Assoc11 = Assoc14,  *)axiom add_div : forall x:real, y:real, z:real. not (z = 0.0) ->
+    (((x + y) / z) = ((x / z) + (y / z)))
+  
+  axiom sub_div : forall x:real, y:real, z:real. not (z = 0.0) ->
+    (((x - y) / z) = ((x / z) - (y / z)))
+  
+  axiom neg_div : forall x:real, y:real. not (y = 0.0) ->
+    (((-x) / y) = (-(x / y)))
+  
+  axiom assoc_mul_div : forall x:real, y:real, z:real. not (z = 0.0) ->
+    (((x * y) / z) = (x * (y / z)))
+  
+  axiom assoc_div_mul : forall x:real, y:real, z:real. not (y = 0.0) /\
+    not (z = 0.0) -> (((x / y) / z) = (x / (y * z)))
+  
+  axiom assoc_div_div : forall x:real, y:real, z:real. not (y = 0.0) /\
+    not (z = 0.0) -> ((x / (y / z)) = ((x * z) / y))
+  
+  (* clone algebra.Field with type t17 = real, function infix_sl = infix_sl1,
+    function infix_mn = infix_mn1, function inv2 = inv3, function one4 = one3,
+    function infix_as6 = infix_as5, function prefix_mn6 = prefix_mn5,
+    function infix_pl6 = infix_pl5, function zero6 = zero5,
+    prop assoc_div_div1 = assoc_div_div, prop assoc_div_mul1 = assoc_div_mul,
+    prop assoc_mul_div1 = assoc_mul_div, prop neg_div1 = neg_div,
+    prop sub_div1 = sub_div, prop add_div1 = add_div, prop Inverse = Inverse1,
+    prop NonTrivialRing4 = NonTrivialRing3, prop Unitary4 = Unitary3,
+    prop Comm13 = Comm12, prop Mul_distr_r6 = Mul_distr_r5,
+    prop Mul_distr_l6 = Mul_distr_l5, prop Assoc16 = Assoc15,
+    prop Comm14 = Comm11, prop Inv_def_r8 = Inv_def_r7,
+    prop Inv_def_l8 = Inv_def_l7, prop Unit_def_r9 = Unit_def_r8,
+    prop Unit_def_l9 = Unit_def_l8, prop Assoc17 = Assoc14,  *)(* clone relations.EndoRelation with type t8 = real,
+    predicate rel = infix_lseq2,  *)(* clone relations.Reflexive with type t9 = real,
+    predicate rel1 = infix_lseq2, prop Refl = Refl6,  *)(* clone relations.EndoRelation with type t8 = real,
+    predicate rel = infix_lseq2,  *)(* clone relations.Transitive with type t10 = real,
+    predicate rel2 = infix_lseq2, prop Trans = Trans6,  *)(* clone relations.PreOrder with type t11 = real,
+    predicate rel3 = infix_lseq2, prop Trans2 = Trans6, prop Refl2 = Refl6,  *)(* clone relations.EndoRelation with type t8 = real,
+    predicate rel = infix_lseq2,  *)(* clone relations.Antisymmetric with type t12 = real,
+    predicate rel4 = infix_lseq2, prop Antisymm = Antisymm5,  *)(* clone relations.PartialOrder with type t13 = real,
+    predicate rel5 = infix_lseq2, prop Antisymm2 = Antisymm5,
+    prop Trans3 = Trans6, prop Refl3 = Refl6,  *)(* clone relations.EndoRelation with type t8 = real,
+    predicate rel = infix_lseq2,  *)(* clone relations.Total with type t14 = real, predicate rel6 = infix_lseq2,
+    prop Total = Total4,  *)(* clone relations.TotalOrder with type t15 = real,
+    predicate rel7 = infix_lseq2, prop Total2 = Total4,
+    prop Antisymm3 = Antisymm5, prop Trans4 = Trans6, prop Refl4 = Refl6,  *)axiom CompatOrderMult2 : forall x:real, y:real, z:real. (x <= y) ->
+    (0.0 <= z) -> ((x * z) <= (y * z))
   
-  axiom match_bool_True :
-    (forall z:'a. forall z1:'a. (match_bool(true, z, z1) = z))
+  (* clone algebra.OrderedField with type t18 = real,
+    predicate infix_lseq3 = infix_lseq2, function infix_sl2 = infix_sl1,
+    function infix_mn2 = infix_mn1, function inv4 = inv3, function one5 = one3,
+    function infix_as7 = infix_as5, function prefix_mn7 = prefix_mn5,
+    function infix_pl7 = infix_pl5, function zero7 = zero5,
+    prop CompatOrderMult3 = CompatOrderMult2,
+    prop CompatOrderAdd2 = CompatOrderAdd3, prop ZeroLessOne2 = ZeroLessOne3,
+    prop Total5 = Total4, prop Antisymm6 = Antisymm5, prop Trans7 = Trans6,
+    prop Refl7 = Refl6, prop assoc_div_div2 = assoc_div_div,
+    prop assoc_div_mul2 = assoc_div_mul, prop assoc_mul_div2 = assoc_mul_div,
+    prop neg_div2 = neg_div, prop sub_div2 = sub_div, prop add_div2 = add_div,
+    prop Inverse2 = Inverse1, prop NonTrivialRing5 = NonTrivialRing3,
+    prop Unitary5 = Unitary3, prop Comm15 = Comm12,
+    prop Mul_distr_r7 = Mul_distr_r5, prop Mul_distr_l7 = Mul_distr_l5,
+    prop Assoc18 = Assoc15, prop Comm16 = Comm11, prop Inv_def_r9 = Inv_def_r7,
+    prop Inv_def_l9 = Inv_def_l7, prop Unit_def_r10 = Unit_def_r8,
+    prop Unit_def_l10 = Unit_def_l8, prop Assoc19 = Assoc14,  *)(* use real.Real *)
   
-  axiom match_bool_False :
-    (forall z:'a. forall z1:'a. (match_bool(false, z, z1) = z1))
+  type t19 = <float ...>
   
-  axiom CompatOrderMult :
-    (forall x:int. forall y:int. forall z:int. ((x <= y) -> ((0 <= z) ->
-    ((x * z) <= (y * z)))))
+  function tqtreal t19 : real
   
-  axiom add_div :
-    (forall x:real. forall y:real. forall z:real. ((not (z = 0.0)) ->
-    (((x + y) / z) = ((x / z) + (y / z)))))
+  predicate tqtisFinite t19
   
-  axiom sub_div :
-    (forall x:real. forall y:real. forall z:real. ((not (z = 0.0)) ->
-    (((x - y) / z) = ((x / z) - (y / z)))))
+  (* meta float_type type t19, function tqtreal, predicate tqtisFinite *)
   
-  axiom neg_div :
-    (forall x:real. forall y:real. ((not (y = 0.0)) ->
-    (((-x) / y) = (-(x / y)))))
+  (* meta model_projection function tqtreal *)
   
-  axiom assoc_mul_div :
-    (forall x:real. forall y:real. forall z:real. ((not (z = 0.0)) ->
-    (((x * y) / z) = (x * (y / z)))))
+  function pow2 int : int
   
-  axiom assoc_div_mul :
-    (forall x:real. forall y:real. forall z:real. (((not (y = 0.0)) and
-    (not (z = 0.0))) -> (((x / y) / z) = (x / (y * z)))))
+  axiom Power_0 [@useraxiom] : (pow2 0 = 1)
   
-  axiom assoc_div_div :
-    (forall x:real. forall y:real. forall z:real. (((not (y = 0.0)) and
-    (not (z = 0.0))) -> ((x / (y / z)) = ((x * z) / y))))
+  axiom Power_s [@useraxiom] : forall n:int. (0 <= n) -> (pow2
+    (n + 1) = (2 * pow2 n))
   
-  axiom CompatOrderMult1 :
-    (forall x:real. forall y:real. forall z:real. ((x <= y) -> ((0.0 <= z) ->
-    ((x * z) <= (y * z)))))
+  axiom Power_1 : (pow2 1 = 2)
   
-  type t
+  axiom Power_sum : forall n:int, m:int. (0 <= n) /\ (0 <= m) -> (pow2
+    (n + m) = (pow2 n * pow2 m))
   
-  logic tqtreal : t -> real
+  axiom pow2pos : forall i:int. (0 <= i) -> (0 <  pow2 i)
   
-  logic tqtisFinite : t -> prop
+  axiom pow2_0 : (pow2 0 = 0x1)
   
-  axiom tqtaxiom :
-    (forall x:t. (tqtisFinite(x) ->
-    ((-179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368.0) <= tqtreal(x))))
+  axiom pow2_1 : (pow2 1 = 0x2)
   
-  axiom tqtaxiom1 :
-    (forall x:t. (tqtisFinite(x) ->
-    (tqtreal(x) <= 179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368.0)))
+  axiom pow2_2 : (pow2 2 = 0x4)
   
-  logic pow2 : int -> int
+  axiom pow2_3 : (pow2 3 = 0x8)
   
-  axiom Power_0 : (pow2(0) = 1)
+  axiom pow2_4 : (pow2 4 = 0x10)
   
-  axiom Power_s : (forall n:int. ((0 <= n) -> (pow2((n + 1)) = (2 * pow2(n)))))
+  axiom pow2_5 : (pow2 5 = 0x20)
   
-  axiom Power_1 : (pow2(1) = 2)
+  axiom pow2_6 : (pow2 6 = 0x40)
   
-  axiom Power_sum :
-    (forall n:int. forall m:int. (((0 <= n) and (0 <= m)) ->
-    (pow2((n + m)) = (pow2(n) * pow2(m)))))
+  axiom pow2_7 : (pow2 7 = 0x80)
   
-  axiom pow2pos : (forall i:int. ((0 <= i) -> (0 <  pow2(i))))
+  axiom pow2_8 : (pow2 8 = 0x100)
   
-  axiom pow2_0 : (pow2(0) = 1)
+  axiom pow2_9 : (pow2 9 = 0x200)
   
-  axiom pow2_1 : (pow2(1) = 2)
+  axiom pow2_10 : (pow2 10 = 0x400)
   
-  axiom pow2_2 : (pow2(2) = 4)
+  axiom pow2_11 : (pow2 11 = 0x800)
   
-  axiom pow2_3 : (pow2(3) = 8)
+  axiom pow2_12 : (pow2 12 = 0x1000)
   
-  axiom pow2_4 : (pow2(4) = 16)
+  axiom pow2_13 : (pow2 13 = 0x2000)
   
-  axiom pow2_5 : (pow2(5) = 32)
+  axiom pow2_14 : (pow2 14 = 0x4000)
   
-  axiom pow2_6 : (pow2(6) = 64)
+  axiom pow2_15 : (pow2 15 = 0x8000)
   
-  axiom pow2_7 : (pow2(7) = 128)
+  axiom pow2_16 : (pow2 16 = 0x10000)
   
-  axiom pow2_8 : (pow2(8) = 256)
+  axiom pow2_17 : (pow2 17 = 0x20000)
   
-  axiom pow2_9 : (pow2(9) = 512)
+  axiom pow2_18 : (pow2 18 = 0x40000)
   
-  axiom pow2_10 : (pow2(10) = 1024)
+  axiom pow2_19 : (pow2 19 = 0x80000)
   
-  axiom pow2_11 : (pow2(11) = 2048)
+  axiom pow2_20 : (pow2 20 = 0x100000)
   
-  axiom pow2_12 : (pow2(12) = 4096)
+  axiom pow2_21 : (pow2 21 = 0x200000)
   
-  axiom pow2_13 : (pow2(13) = 8192)
+  axiom pow2_22 : (pow2 22 = 0x400000)
   
-  axiom pow2_14 : (pow2(14) = 16384)
+  axiom pow2_23 : (pow2 23 = 0x800000)
   
-  axiom pow2_15 : (pow2(15) = 32768)
+  axiom pow2_24 : (pow2 24 = 0x1000000)
   
-  axiom pow2_16 : (pow2(16) = 65536)
+  axiom pow2_25 : (pow2 25 = 0x2000000)
   
-  axiom pow2_17 : (pow2(17) = 131072)
+  axiom pow2_26 : (pow2 26 = 0x4000000)
   
-  axiom pow2_18 : (pow2(18) = 262144)
+  axiom pow2_27 : (pow2 27 = 0x8000000)
   
-  axiom pow2_19 : (pow2(19) = 524288)
+  axiom pow2_28 : (pow2 28 = 0x10000000)
   
-  axiom pow2_20 : (pow2(20) = 1048576)
+  axiom pow2_29 : (pow2 29 = 0x20000000)
   
-  axiom pow2_21 : (pow2(21) = 2097152)
+  axiom pow2_30 : (pow2 30 = 0x40000000)
   
-  axiom pow2_22 : (pow2(22) = 4194304)
+  axiom pow2_31 : (pow2 31 = 0x80000000)
   
-  axiom pow2_23 : (pow2(23) = 8388608)
+  axiom pow2_32 : (pow2 32 = 0x100000000)
   
-  axiom pow2_24 : (pow2(24) = 16777216)
+  axiom pow2_33 : (pow2 33 = 0x200000000)
   
-  axiom pow2_25 : (pow2(25) = 33554432)
+  axiom pow2_34 : (pow2 34 = 0x400000000)
   
-  axiom pow2_26 : (pow2(26) = 67108864)
+  axiom pow2_35 : (pow2 35 = 0x800000000)
   
-  axiom pow2_27 : (pow2(27) = 134217728)
+  axiom pow2_36 : (pow2 36 = 0x1000000000)
   
-  axiom pow2_28 : (pow2(28) = 268435456)
+  axiom pow2_37 : (pow2 37 = 0x2000000000)
   
-  axiom pow2_29 : (pow2(29) = 536870912)
+  axiom pow2_38 : (pow2 38 = 0x4000000000)
   
-  axiom pow2_30 : (pow2(30) = 1073741824)
+  axiom pow2_39 : (pow2 39 = 0x8000000000)
   
-  axiom pow2_31 : (pow2(31) = 2147483648)
+  axiom pow2_40 : (pow2 40 = 0x10000000000)
   
-  axiom pow2_32 : (pow2(32) = 4294967296)
+  axiom pow2_41 : (pow2 41 = 0x20000000000)
   
-  axiom pow2_33 : (pow2(33) = 8589934592)
+  axiom pow2_42 : (pow2 42 = 0x40000000000)
   
-  axiom pow2_34 : (pow2(34) = 17179869184)
+  axiom pow2_43 : (pow2 43 = 0x80000000000)
   
-  axiom pow2_35 : (pow2(35) = 34359738368)
+  axiom pow2_44 : (pow2 44 = 0x100000000000)
   
-  axiom pow2_36 : (pow2(36) = 68719476736)
+  axiom pow2_45 : (pow2 45 = 0x200000000000)
   
-  axiom pow2_37 : (pow2(37) = 137438953472)
+  axiom pow2_46 : (pow2 46 = 0x400000000000)
   
-  axiom pow2_38 : (pow2(38) = 274877906944)
+  axiom pow2_47 : (pow2 47 = 0x800000000000)
   
-  axiom pow2_39 : (pow2(39) = 549755813888)
+  axiom pow2_48 : (pow2 48 = 0x1000000000000)
   
-  axiom pow2_40 : (pow2(40) = 1099511627776)
+  axiom pow2_49 : (pow2 49 = 0x2000000000000)
   
-  axiom pow2_41 : (pow2(41) = 2199023255552)
+  axiom pow2_50 : (pow2 50 = 0x4000000000000)
   
-  axiom pow2_42 : (pow2(42) = 4398046511104)
+  axiom pow2_51 : (pow2 51 = 0x8000000000000)
   
-  axiom pow2_43 : (pow2(43) = 8796093022208)
+  axiom pow2_52 : (pow2 52 = 0x10000000000000)
   
-  axiom pow2_44 : (pow2(44) = 17592186044416)
+  axiom pow2_53 : (pow2 53 = 0x20000000000000)
   
-  axiom pow2_45 : (pow2(45) = 35184372088832)
+  axiom pow2_54 : (pow2 54 = 0x40000000000000)
   
-  axiom pow2_46 : (pow2(46) = 70368744177664)
+  axiom pow2_55 : (pow2 55 = 0x80000000000000)
   
-  axiom pow2_47 : (pow2(47) = 140737488355328)
+  axiom pow2_56 : (pow2 56 = 0x100000000000000)
   
-  axiom pow2_48 : (pow2(48) = 281474976710656)
+  axiom pow2_57 : (pow2 57 = 0x200000000000000)
   
-  axiom pow2_49 : (pow2(49) = 562949953421312)
+  axiom pow2_58 : (pow2 58 = 0x400000000000000)
   
-  axiom pow2_50 : (pow2(50) = 1125899906842624)
+  axiom pow2_59 : (pow2 59 = 0x800000000000000)
   
-  axiom pow2_51 : (pow2(51) = 2251799813685248)
+  axiom pow2_60 : (pow2 60 = 0x1000000000000000)
   
-  axiom pow2_52 : (pow2(52) = 4503599627370496)
+  axiom pow2_61 : (pow2 61 = 0x2000000000000000)
   
-  axiom pow2_53 : (pow2(53) = 9007199254740992)
+  axiom pow2_62 : (pow2 62 = 0x4000000000000000)
   
-  axiom pow2_54 : (pow2(54) = 18014398509481984)
+  axiom pow2_63 : (pow2 63 = 0x8000000000000000)
   
-  axiom pow2_55 : (pow2(55) = 36028797018963968)
+  axiom pow2_64 : (pow2 64 = 0x10000000000000000)
   
-  axiom pow2_56 : (pow2(56) = 72057594037927936)
+  (* use bv.Pow2int *)
   
-  axiom pow2_57 : (pow2(57) = 144115188075855872)
+  function abs (x:real) : real = if (0.0 <= x) then x else (-x)
   
-  axiom pow2_58 : (pow2(58) = 288230376151711744)
+  axiom Abs_le : forall x:real, y:real. (abs x <= y) <-> ((-y) <= x) /\
+    (x <= y)
   
-  axiom pow2_59 : (pow2(59) = 576460752303423488)
+  axiom Abs_pos : forall x:real. (0.0 <= abs x)
   
-  axiom pow2_60 : (pow2(60) = 1152921504606846976)
+  axiom Abs_sum : forall x:real, y:real. (abs (x + y) <= (abs x + abs y))
   
-  axiom pow2_61 : (pow2(61) = 2305843009213693952)
+  axiom Abs_prod : forall x:real, y:real. (abs (x * y) = (abs x * abs y))
   
-  axiom pow2_62 : (pow2(62) = 4611686018427387904)
+  axiom triangular_inequality : forall x:real, y:real, z:real. (abs
+    (x - z) <= (abs (x - y) + abs (y - z)))
   
-  axiom pow2_63 : (pow2(63) = 9223372036854775808)
+  (* use real.Abs *)
   
-  axiom pow2_64 : (pow2(64) = 18446744073709551616)
+  function from_int int : real
   
-  function abs(x: real) : real = (if (0.0 <= x) then x else (-x))
+  axiom Zero [@useraxiom] : (from_int 0 = 0.0)
   
-  axiom Abs_le : (forall x:real. forall y:real. ((abs(x) <= y) -> ((-y) <= x)))
+  axiom One [@useraxiom] : (from_int 1 = 1.0)
   
-  axiom Abs_le1 : (forall x:real. forall y:real. ((abs(x) <= y) -> (x <= y)))
+  axiom Add [@useraxiom] : forall x:int, y:int. (from_int (x + y) = (from_int
+    x + from_int y))
   
-  axiom Abs_le2 :
-    (forall x:real. forall y:real. ((((-y) <= x) and (x <= y)) ->
-    (abs(x) <= y)))
+  axiom Sub [@useraxiom] : forall x:int, y:int. (from_int (x - y) = (from_int
+    x - from_int y))
   
-  axiom Abs_pos : (forall x:real. (0.0 <= abs(x)))
+  axiom Mul [@useraxiom] : forall x:int, y:int. (from_int (x * y) = (from_int
+    x * from_int y))
   
-  axiom Abs_sum :
-    (forall x:real. forall y:real. (abs((x + y)) <= (abs(x) + abs(y))))
+  axiom Neg [@useraxiom] : forall x:int. (from_int (-x) = (-from_int x))
   
-  axiom Abs_prod :
-    (forall x:real. forall y:real. (abs((x * y)) = (abs(x) * abs(y))))
+  axiom Injective : forall x:int, y:int. (from_int x = from_int y) -> (x = y)
   
-  axiom triangular_inequality :
-    (forall x:real. forall y:real. forall z:real.
-    (abs((x - z)) <= (abs((x - y)) + abs((y - z)))))
+  axiom Monotonic [@useraxiom] : forall x:int, y:int. (x <= y) -> (from_int
+    x <= from_int y)
   
-  logic from_int : int -> real
+  (* use real.FromInt *)
   
-  axiom Zero : (from_int(0) = 0.0)
+  function truncate real : int
   
-  axiom One : (from_int(1) = 1.0)
+  axiom Truncate_int [@useraxiom] : forall i:int. (truncate (from_int i) = i)
   
-  axiom Add :
-    (forall x:int. forall y:int.
-    (from_int((x + y)) = (from_int(x) + from_int(y))))
+  axiom Truncate_down_pos [@useraxiom] : forall x:real. (0.0 <= x) -> (from_int
+    (truncate x) <= x) /\ (x <  from_int (truncate x + 1))
   
-  axiom Sub :
-    (forall x:int. forall y:int.
-    (from_int((x - y)) = (from_int(x) - from_int(y))))
+  axiom Truncate_up_neg [@useraxiom] : forall x:real. (x <= 0.0) -> (from_int
+    (truncate x - 1) <  x) /\ (x <= from_int (truncate x))
   
-  axiom Mul :
-    (forall x:int. forall y:int.
-    (from_int((x * y)) = (from_int(x) * from_int(y))))
+  axiom Real_of_truncate [@useraxiom] : forall x:real. ((x - 1.0) <= from_int
+    (truncate x)) /\ (from_int (truncate x) <= (x + 1.0))
   
-  axiom Neg : (forall x:int. (from_int((-x)) = (-from_int(x))))
+  axiom Truncate_monotonic [@useraxiom] : forall x:real, y:real. (x <= y) ->
+    (truncate x <= truncate y)
   
-  axiom Injective :
-    (forall x:int. forall y:int. ((from_int(x) = from_int(y)) -> (x = y)))
+  axiom Truncate_monotonic_int1 [@useraxiom] : forall x:real, i:int.
+    (x <= from_int i) -> (truncate x <= i)
   
-  axiom Monotonic :
-    (forall x:int. forall y:int. ((x <= y) -> (from_int(x) <= from_int(y))))
+  axiom Truncate_monotonic_int2 [@useraxiom] : forall x:real, i:int. (from_int
+    i <= x) -> (i <= truncate x)
   
-  logic truncate : real -> int
+  function floor real : int
   
-  axiom Truncate_int : (forall i:int. (truncate(from_int(i)) = i))
+  function ceil real : int
   
-  axiom Truncate_down_pos :
-    (forall x:real. ((0.0 <= x) -> (from_int(truncate(x)) <= x)))
+  axiom Floor_int [@useraxiom] : forall i:int. (floor (from_int i) = i)
   
-  axiom Truncate_down_pos1 :
-    (forall x:real. ((0.0 <= x) -> (x <  from_int((truncate(x) + 1)))))
+  axiom Ceil_int [@useraxiom] : forall i:int. (ceil (from_int i) = i)
   
-  axiom Truncate_up_neg :
-    (forall x:real. ((x <= 0.0) -> (from_int((truncate(x) - 1)) <  x)))
+  axiom Floor_down [@useraxiom] : forall x:real. (from_int (floor x) <= x) /\
+    (x <  from_int (floor x + 1))
   
-  axiom Truncate_up_neg1 :
-    (forall x:real. ((x <= 0.0) -> (x <= from_int(truncate(x)))))
+  axiom Ceil_up [@useraxiom] : forall x:real. (from_int (ceil x - 1) <  x) /\
+    (x <= from_int (ceil x))
   
-  axiom Real_of_truncate :
-    (forall x:real. ((x - 1.0) <= from_int(truncate(x))))
+  axiom Floor_monotonic [@useraxiom] : forall x:real, y:real. (x <= y) ->
+    (floor x <= floor y)
   
-  axiom Real_of_truncate1 :
-    (forall x:real. (from_int(truncate(x)) <= (x + 1.0)))
+  axiom Ceil_monotonic [@useraxiom] : forall x:real, y:real. (x <= y) -> (ceil
+    x <= ceil y)
   
-  axiom Truncate_monotonic :
-    (forall x:real. forall y:real. ((x <= y) -> (truncate(x) <= truncate(y))))
+  (* use real.Truncate *)
   
-  axiom Truncate_monotonic_int1 :
-    (forall x:real. forall i:int. ((x <= from_int(i)) -> (truncate(x) <= i)))
+  (* use real.RealInfix *)
   
-  axiom Truncate_monotonic_int2 :
-    (forall x:real. forall i:int. ((from_int(i) <= x) -> (i <= truncate(x))))
+  type mode =
+    | RNE
+    | RNA
+    | RTP
+    | RTN
+    | RTZ
   
-  logic floor : real -> int
+  predicate to_nearest (m:mode) = (m = RNE) \/ (m = RNA)
   
-  logic ceil : real -> int
+  (* use ieee_float.RoundingMode *)
   
-  axiom Floor_int : (forall i:int. (floor(from_int(i)) = i))
+  function zeroF : t19
   
-  axiom Ceil_int : (forall i:int. (ceil(from_int(i)) = i))
+  function add mode t19 t19 : t19
   
-  axiom Floor_down : (forall x:real. (from_int(floor(x)) <= x))
+  function sub mode t19 t19 : t19
   
-  axiom Floor_down1 : (forall x:real. (x <  from_int((floor(x) + 1))))
+  function mul mode t19 t19 : t19
   
-  axiom Ceil_up : (forall x:real. (from_int((ceil(x) - 1)) <  x))
+  function div mode t19 t19 : t19
   
-  axiom Ceil_up1 : (forall x:real. (x <= from_int(ceil(x))))
+  function abs1 t19 : t19
   
-  axiom Floor_monotonic :
-    (forall x:real. forall y:real. ((x <= y) -> (floor(x) <= floor(y))))
+  function neg t19 : t19
   
-  axiom Ceil_monotonic :
-    (forall x:real. forall y:real. ((x <= y) -> (ceil(x) <= ceil(y))))
+  function fma mode t19 t19 t19 : t19
   
-  type mode = RNE | RNA | RTP | RTN | RTZ
+  function sqrt mode t19 : t19
   
-  logic match_mode : mode, 'a, 'a, 'a, 'a, 'a -> 'a
+  function roundToIntegral mode t19 : t19
   
-  axiom match_mode_RNE :
-    (forall z:'a. forall z1:'a. forall z2:'a. forall z3:'a. forall z4:'a.
-    (match_mode(RNE, z, z1, z2, z3, z4) = z))
+  function min t19 t19 : t19
   
-  axiom match_mode_RNA :
-    (forall z:'a. forall z1:'a. forall z2:'a. forall z3:'a. forall z4:'a.
-    (match_mode(RNA, z, z1, z2, z3, z4) = z1))
+  function max t19 t19 : t19
   
-  axiom match_mode_RTP :
-    (forall z:'a. forall z1:'a. forall z2:'a. forall z3:'a. forall z4:'a.
-    (match_mode(RTP, z, z1, z2, z3, z4) = z2))
+  predicate le t19 t19
   
-  axiom match_mode_RTN :
-    (forall z:'a. forall z1:'a. forall z2:'a. forall z3:'a. forall z4:'a.
-    (match_mode(RTN, z, z1, z2, z3, z4) = z3))
+  predicate lt t19 t19
   
-  axiom match_mode_RTZ :
-    (forall z:'a. forall z1:'a. forall z2:'a. forall z3:'a. forall z4:'a.
-    (match_mode(RTZ, z, z1, z2, z3, z4) = z4))
+  predicate eq t19 t19
   
-  predicate to_nearest(m: mode) = ((m = RNE) or (m = RNA))
+  predicate is_normal t19
   
-  logic zeroF : t
+  predicate is_subnormal t19
   
-  logic add : mode, t, t -> t
+  predicate is_zero t19
   
-  logic sub : mode, t, t -> t
+  predicate is_infinite t19
   
-  logic mul : mode, t, t -> t
+  predicate is_nan t19
   
-  logic div : mode, t, t -> t
+  predicate is_positive t19
   
-  logic abs1 : t -> t
+  predicate is_negative t19
   
-  logic neg : t -> t
+  predicate is_plus_infinity (x:t19) = is_infinite x /\ is_positive x
   
-  logic fma : mode, t, t, t -> t
+  predicate is_minus_infinity (x:t19) = is_infinite x /\ is_negative x
   
-  logic sqrt : mode, t -> t
+  predicate is_plus_zero (x:t19) = is_zero x /\ is_positive x
   
-  logic roundToIntegral : mode, t -> t
+  predicate is_minus_zero (x:t19) = is_zero x /\ is_negative x
   
-  logic min : t, t -> t
+  function of_int mode int : t19
   
-  logic max : t, t -> t
+  function to_int mode t19 : int
   
-  logic le : t, t -> prop
+  function round mode real : real
   
-  logic lt : t, t -> prop
+  function max_int : int
   
-  logic eq : t, t -> prop
+  predicate in_range (x:real) = ((-0x1.FFFFFFFFFFFFFp1023) <= x) /\
+    (x <= 0x1.FFFFFFFFFFFFFp1023)
   
-  logic is_normal : t -> prop
+  predicate in_int_range (i:int) = ((-max_int) <= i) /\ (i <= max_int)
   
-  logic is_subnormal : t -> prop
+  predicate no_overflow (m:mode) (x:real) = in_range (round m x)
   
-  logic is_zero : t -> prop
+  predicate in_safe_int_range (i:int) = ((-9007199254740992) <= i) /\
+    (i <= 9007199254740992)
   
-  logic is_infinite : t -> prop
+  predicate same_sign (x:t19) (y:t19) = is_positive x /\ is_positive y \/
+    is_negative x /\ is_negative y
   
-  logic is_nan : t -> prop
+  predicate diff_sign (x:t19) (y:t19) = is_positive x /\ is_negative y \/
+    is_negative x /\ is_positive y
   
-  logic is_positive : t -> prop
+  predicate product_sign (z:t19) (x:t19) (y:t19) = (same_sign x y ->
+    is_positive z) /\ (diff_sign x y -> is_negative z)
   
-  logic is_negative : t -> prop
+  predicate overflow_value (m:mode) (x:t19) =
+    match m with
+    | RTN -> if is_positive x then tqtisFinite x /\ (tqtreal
+        x = 0x1.FFFFFFFFFFFFFp1023) else is_infinite x
+    | RTP -> if is_positive x then is_infinite x else tqtisFinite x /\ (tqtreal
+        x = (-0x1.FFFFFFFFFFFFFp1023))
+    | RTZ -> if is_positive x then tqtisFinite x /\ (tqtreal
+        x = 0x1.FFFFFFFFFFFFFp1023) else tqtisFinite x /\ (tqtreal
+        x = (-0x1.FFFFFFFFFFFFFp1023))
+    | RNA | RNE -> is_infinite x
+    end
   
-  predicate is_plus_infinity(x: t) = (is_infinite(x) and is_positive(x))
+  predicate sign_zero_result (m:mode) (x:t19) = is_zero x ->
+    match m with
+    | RTN -> is_negative x
+    | _ -> is_positive x
+    end
   
-  predicate is_minus_infinity(x: t) = (is_infinite(x) and is_negative(x))
+  function sqr (x:real) : real = (x * x)
   
-  predicate is_plus_zero(x: t) = (is_zero(x) and is_positive(x))
+  function sqrt1 real : real
+  
+  axiom Sqrt_positive [@useraxiom] : forall x:real. (0.0 <= x) -> (0.0 <= sqrt1
+    x)
+  
+  axiom Sqrt_square [@useraxiom] : forall x:real. (0.0 <= x) -> (sqr (sqrt1
+    x) = x)
+  
+  axiom Square_sqrt [@useraxiom] : forall x:real. (0.0 <= x) -> (sqrt1
+    (x * x) = x)
+  
+  axiom Sqrt_mul [@useraxiom] : forall x:real, y:real. (0.0 <= x) /\
+    (0.0 <= y) -> (sqrt1 (x * y) = (sqrt1 x * sqrt1 y))
+  
+  axiom Sqrt_le [@useraxiom] : forall x:real, y:real. (0.0 <= x) /\ (x <= y) ->
+    (sqrt1 x <= sqrt1 y)
+  
+  (* use real.Square *)
+  
+  predicate same_sign_real (x:t19) (r:real) = is_positive x /\ (0.0 <  r) \/
+    is_negative x /\ (r <  0.0)
+  
+  predicate is_int t19
+  
+  (* clone ieee_float.GenericFloat with type t20 = t19,
+    predicate is_int1 = is_int, predicate same_sign_real1 = same_sign_real,
+    predicate sign_zero_result1 = sign_zero_result,
+    predicate overflow_value1 = overflow_value,
+    predicate product_sign1 = product_sign, predicate diff_sign1 = diff_sign,
+    predicate same_sign1 = same_sign,
+    predicate in_safe_int_range1 = in_safe_int_range,
+    function pow2sb = pow2sb1, predicate no_overflow1 = no_overflow,
+    predicate in_int_range1 = in_int_range, predicate in_range1 = in_range,
+    function emax = emax1, function max_int1 = max_int,
+    function max_real = max_real1, function round1 = round,
+    function to_int1 = to_int, function of_int1 = of_int,
+    function to_real = tqtreal, predicate is_not_nan = is_not_nan1,
+    predicate is_minus_zero1 = is_minus_zero,
+    predicate is_plus_zero1 = is_plus_zero,
+    predicate is_minus_infinity1 = is_minus_infinity,
+    predicate is_plus_infinity1 = is_plus_infinity,
+    predicate is_finite = tqtisFinite, predicate is_negative1 = is_negative,
+    predicate is_positive1 = is_positive, predicate is_nan1 = is_nan,
+    predicate is_infinite1 = is_infinite, predicate is_zero1 = is_zero,
+    predicate is_subnormal1 = is_subnormal, predicate is_normal1 = is_normal,
+    predicate infix_dteq = infix_dteq1, predicate infix_dtgt = infix_dtgt1,
+    predicate infix_dtgteq = infix_dtgteq1, predicate infix_dtls = infix_dtls1,
+    predicate infix_dtlseq = infix_dtlseq1, predicate eq1 = eq,
+    predicate gt = gt1, predicate ge = ge1, predicate lt1 = lt,
+    predicate le1 = le, function max1 = max, function min1 = min,
+    function roundToIntegral1 = roundToIntegral,
+    function infix_dtsl = infix_dtsl1, function infix_dtas = infix_dtas1,
+    function infix_dtmn = infix_dtmn1, function infix_dtpl = infix_dtpl1,
+    function prefix_dtmn = prefix_dtmn1, function sqrt2 = sqrt,
+    function fma1 = fma, function neg1 = neg, function abs2 = abs1,
+    function div1 = div, function mul1 = mul, function sub1 = sub,
+    function add1 = add, function zeroF1 = zeroF, function sb = tqtsb,
+    function eb = tqteb,
+    prop roundToIntegral_is_finite = roundToIntegral_is_finite1,
+    prop neg_to_int = neg_to_int1, prop eq_to_int = eq_to_int1,
+    prop to_int_of_int = to_int_of_int1,
+    prop to_int_monotonic = to_int_monotonic1,
+    prop to_int_roundToIntegral = to_int_roundToIntegral1,
+    prop RNA_up_tie = RNA_up_tie1, prop RNA_down_tie = RNA_down_tie1,
+    prop RNA_up = RNA_up1, prop RNA_down = RNA_down1,
+    prop floor_to_int = floor_to_int1, prop floor_to_real = floor_to_real1,
+    prop floor_lest = floor_lest1, prop floor_le = floor_le1,
+    prop ceil_to_int = ceil_to_int1, prop ceil_to_real = ceil_to_real1,
+    prop ceil_lest = ceil_lest1, prop ceil_le = ceil_le1,
+    prop truncate_pos = truncate_pos1, prop truncate_neg = truncate_neg1,
+    prop truncate_int = truncate_int1, prop int_to_real = int_to_real1,
+    prop is_int_is_finite = is_int_is_finite1,
+    prop is_int_to_int = is_int_to_int1, prop is_int_of_int = is_int_of_int1,
+    prop abs_int = abs_int1, prop neg_int = neg_int1, prop fma_int = fma_int1,
+    prop mul_int = mul_int1, prop sub_int = sub_int1, prop add_int = add_int1,
+    prop eq_is_int = eq_is_int1,
+    prop roundToIntegral_is_int = roundToIntegral_is_int1,
+    prop big_float_is_int = big_float_is_int1,
+    prop of_int_is_int = of_int_is_int1, prop zeroF_is_int = zeroF_is_int1,
+    prop Max_l = Max_l1, prop Max_r = Max_r1, prop Min_l = Min_l1,
+    prop Min_r = Min_r1, prop of_int_mul_exact = of_int_mul_exact1,
+    prop of_int_sub_exact = of_int_sub_exact1,
+    prop of_int_add_exact = of_int_add_exact1,
+    prop sqrt_special = sqrt_special1, prop fma_special = fma_special1,
+    prop abs_special = abs_special1, prop neg_special = neg_special1,
+    prop div_special = div_special1, prop mul_special = mul_special1,
+    prop sub_special = sub_special1, prop add_special = add_special1,
+    prop sqrt_finite_rev = sqrt_finite_rev1, prop sqrt_finite = sqrt_finite1,
+    prop fma_finite_rev_n = fma_finite_rev_n1,
+    prop fma_finite_rev = fma_finite_rev1, prop fma_finite = fma_finite1,
+    prop abs_universal = abs_universal1, prop abs_finite_rev = abs_finite_rev1,
+    prop abs_finite = abs_finite1, prop neg_finite_rev = neg_finite_rev1,
+    prop neg_finite = neg_finite1, prop div_finite_rev_n = div_finite_rev_n1,
+    prop div_finite_rev = div_finite_rev1, prop div_finite = div_finite1,
+    prop mul_finite_rev_n = mul_finite_rev_n1,
+    prop mul_finite_rev = mul_finite_rev1, prop mul_finite = mul_finite1,
+    prop sub_finite_rev_n = sub_finite_rev_n1,
+    prop sub_finite_rev = sub_finite_rev1, prop sub_finite = sub_finite1,
+    prop add_finite_rev_n = add_finite_rev_n1,
+    prop add_finite_rev = add_finite_rev1, prop add_finite = add_finite1,
+    prop same_sign_product = same_sign_product1,
+    prop diff_sign_product = diff_sign_product1,
+    prop diff_sign_trans = diff_sign_trans1,
+    prop negative_or_positive = negative_or_positive1,
+    prop negative_xor_positive = negative_xor_positive1,
+    prop to_real_negative = to_real_negative1,
+    prop negative_to_real = negative_to_real1,
+    prop to_real_positive = to_real_positive1,
+    prop positive_to_real = positive_to_real1,
+    prop lt_lt_finite = lt_lt_finite1, prop lt_special = lt_special1,
+    prop le_special = le_special1, prop not_gt_le = not_gt_le1,
+    prop not_lt_ge = not_lt_ge1, prop le_ge_asym = le_ge_asym1,
+    prop lt_le_trans = lt_le_trans1, prop le_lt_trans = le_lt_trans1,
+    prop le_finite = le_finite1, prop lt_finite = lt_finite1,
+    prop eq_special = eq_special1, prop eq_to_real_finite = eq_to_real_finite1,
+    prop eq_zero = eq_zero1, prop eq_trans = eq_trans1, prop eq_sym = eq_sym1,
+    prop eq_refl = eq_refl1, prop eq_feq = eq_feq1, prop feq_eq = feq_eq1,
+    prop Exact_rounding_for_integers = Exact_rounding_for_integers1,
+    prop pow2sb = pow2sb1, prop Round_up_neg = Round_up_neg1,
+    prop Round_down_neg = Round_down_neg1, prop Round_up_ge = Round_up_ge1,
+    prop Round_down_le = Round_down_le1, prop Round_to_real = Round_to_real1,
+    prop Round_idempotent = Round_idempotent1,
+    prop Round_monotonic = Round_monotonic1,
+    prop Bounded_real_no_overflow = Bounded_real_no_overflow1,
+    prop is_finite = is_finite1, prop max_real_int = max_real_int1,
+    prop max_int = max_int1, prop zero_of_int = zero_of_int1,
+    prop zero_to_real = zero_to_real1, prop zeroF_is_zero = zeroF_is_zero1,
+    prop zeroF_is_positive = zeroF_is_positive1,
+    prop is_not_finite = is_not_finite1, prop is_not_nan = is_not_nan1,
+    prop sb_gt_1 = sb_gt_11, prop eb_gt_1 = eb_gt_11,  *)(* use ieee_float.Float64 *)
   
-  predicate is_minus_zero(x: t) = (is_zero(x) and is_negative(x))
+  type input_type = t19
   
-  logic of_int : mode, int -> t
+  (* use caisar.NNet *)
   
-  logic to_int : mode, t -> int
+  type tuple5 'a 'a1 'a2 'a3 'a4 =
+    | Tuple5 'a 'a1 'a2 'a3 'a4
   
-  logic round : mode, real -> real
+  (* use why3.Tuple5.Tuple51 *)
   
-  logic max_int1 : int
+  function nnet_apply t19 t19 t19 t19 t19 : tuple5 t19 t19 t19 t19 t19
   
-  predicate in_range(x: real) = (((-0x1.FFFFFFFFFFFFFp1023) <= x) and
-    (x <= 0x1.FFFFFFFFFFFFFp1023))
+  (* use AsTuple *)
   
-  predicate in_int_range(i: int) = (((-max_int1) <= i) and (i <= max_int1))
+  (* meta syntax_type type int, "int", 0 *)
   
-  predicate no_overflow(m: mode, x: real) = in_range(round(m, x))
+  (* meta syntax_type type real, "real", 0 *)
   
-  predicate in_safe_int_range(i: int) = (((-9007199254740992) <= i) and
-    (i <= 9007199254740992))
+  (* meta syntax_logic predicate infix_eq, "(%1 = %2)", 0 *)
   
-  predicate same_sign(x: t, y: t) = ((is_positive(x) and is_positive(y)) or
-    (is_negative(x) and is_negative(y)))
+  (* meta eliminate_algebraic "keep_enums" *)
   
-  predicate diff_sign(x: t, y: t) = ((is_positive(x) and is_negative(y)) or
-    (is_negative(x) and is_positive(y)))
+  (* meta eliminate_algebraic "keep_recs" *)
   
-  predicate product_sign(z: t, x: t, y: t) = ((same_sign(x, y) ->
-    is_positive(z)) and (diff_sign(x, y) -> is_negative(z)))
+  (* meta syntax_type type bool, "bool", 0 *)
   
-  predicate overflow_value(m: mode, x: t) = ((((((m = RNE) ->
-    is_infinite(x)) and ((m = RNA) -> is_infinite(x))) and ((m = RTP) ->
-    (if is_positive(x) then is_infinite(x) else (tqtisFinite(x) and
-    (tqtreal(x) = (-0x1.FFFFFFFFFFFFFp1023)))))) and ((m = RTN) ->
-    (if is_positive(x) then (tqtisFinite(x) and
-    (tqtreal(x) = 0x1.FFFFFFFFFFFFFp1023)) else is_infinite(x)))) and
-    ((m = RTZ) -> (if is_positive(x) then (tqtisFinite(x) and
-    (tqtreal(x) = 0x1.FFFFFFFFFFFFFp1023)) else (tqtisFinite(x) and
-    (tqtreal(x) = (-0x1.FFFFFFFFFFFFFp1023))))))
+  (* meta syntax_logic function True, "true", 0 *)
   
-  predicate sign_zero_result(m: mode, x: t) = (is_zero(x) -> ((((((m = RNE) ->
-    is_positive(x)) and ((m = RNA) -> is_positive(x))) and ((m = RTP) ->
-    is_positive(x))) and ((m = RTN) -> is_negative(x))) and ((m = RTZ) ->
-    is_positive(x))))
+  (* meta syntax_logic function False, "false", 0 *)
   
-  function sqr(x: real) : real = (x * x)
+  (* meta syntax_type type tuple0, "unit", 0 *)
   
-  logic sqrt1 : real -> real
+  (* meta syntax_logic function Tuple01, "void", 0 *)
   
-  axiom Sqrt_positive : (forall x:real. ((0.0 <= x) -> (0.0 <= sqrt1(x))))
+  (* meta syntax_logic function zero, "0", 0 *)
   
-  axiom Sqrt_square : (forall x:real. ((0.0 <= x) -> (sqr(sqrt1(x)) = x)))
+  (* meta syntax_logic function one1, "1", 0 *)
   
-  axiom Square_sqrt : (forall x:real. ((0.0 <= x) -> (sqrt1((x * x)) = x)))
+  (* meta syntax_logic function infix_pl, "(%1 + %2)", 0 *)
   
-  axiom Sqrt_mul :
-    (forall x:real. forall y:real. (((0.0 <= x) and (0.0 <= y)) ->
-    (sqrt1((x * y)) = (sqrt1(x) * sqrt1(y)))))
+  (* meta syntax_logic function infix_mn3, "(%1 - %2)", 0 *)
   
-  axiom Sqrt_le :
-    (forall x:real. forall y:real. (((0.0 <= x) and (x <= y)) ->
-    (sqrt1(x) <= sqrt1(y))))
+  (* meta syntax_logic function infix_as, "(%1 * %2)", 0 *)
   
-  predicate same_sign_real(x: t, r: real) = ((is_positive(x) and (0.0 <  r)) or
-    (is_negative(x) and (r <  0.0)))
+  (* meta syntax_logic function prefix_mn, "(-%1)", 0 *)
   
-  logic is_int : t -> prop
+  (* meta invalid trigger predicate infix_lseq *)
   
-  type ('a, 'a1, 'a2, 'a3, 'a4) tuple5 = { Tuple5_proj_1 : 'a; Tuple5_proj_2 :
-  'a1; Tuple5_proj_3 : 'a2; Tuple5_proj_4 : 'a3; Tuple5_proj_5 : 'a4
-  }
+  (* meta invalid trigger predicate infix_ls *)
   
-  logic nnet_apply : t, t, t, t, t -> (t, t, t, t, t) tuple5
+  (* meta invalid trigger predicate infix_gteq *)
   
-  goal G :
-    (forall x1:t. forall x2:t. forall x3:t. forall x4:t. forall x5:t.
-    (forall x:t. forall x6:t. forall x7:t. forall x8:t. forall x9:t.
-    ((nnet_apply(x1, x2, x3, x4, x5) = { Tuple5_proj_1 = x; Tuple5_proj_2 = x6;
-    Tuple5_proj_3 = x7; Tuple5_proj_4 = x8; Tuple5_proj_5 = x9 }) ->
-    ((0.0 <  tqtreal(x)) and (tqtreal(x) <  0.1)))))
+  (* meta invalid trigger predicate infix_gt *)
+  
+  (* meta syntax_logic predicate infix_lseq, "(%1 <= %2)", 0 *)
+  
+  (* meta syntax_logic predicate infix_ls, "(%1 <  %2)", 0 *)
+  
+  (* meta syntax_logic predicate infix_gteq, "(%1 >= %2)", 0 *)
+  
+  (* meta syntax_logic predicate infix_gt, "(%1 >  %2)", 0 *)
+  
+  (* meta remove_prop prop Comm4 *)
+  
+  (* meta remove_prop prop Assoc5 *)
+  
+  (* meta remove_prop prop Unit_def_l1 *)
+  
+  (* meta remove_prop prop Unit_def_r1 *)
+  
+  (* meta remove_prop prop Inv_def_l1 *)
+  
+  (* meta remove_prop prop Inv_def_r1 *)
+  
+  (* meta remove_prop prop Assoc1 *)
+  
+  (* meta remove_prop prop Mul_distr_l1 *)
+  
+  (* meta remove_prop prop Mul_distr_r1 *)
+  
+  (* meta remove_prop prop Comm1 *)
+  
+  (* meta remove_prop prop Unitary1 *)
+  
+  (* meta remove_prop prop Refl1 *)
+  
+  (* meta remove_prop prop Trans1 *)
+  
+  (* meta remove_prop prop Total1 *)
+  
+  (* meta remove_prop prop Antisymm1 *)
+  
+  (* meta remove_prop prop NonTrivialRing1 *)
+  
+  (* meta remove_prop prop CompatOrderAdd1 *)
+  
+  (* meta remove_prop prop ZeroLessOne1 *)
+  
+  (* meta syntax_logic function zero5, "0.0", 0 *)
+  
+  (* meta syntax_logic function one3, "1.0", 0 *)
+  
+  (* meta syntax_logic function infix_pl5, "(%1 + %2)", 0 *)
+  
+  (* meta syntax_logic function infix_mn1, "(%1 - %2)", 0 *)
+  
+  (* meta syntax_logic function infix_as5, "(%1 * %2)", 0 *)
+  
+  (* meta syntax_logic function infix_sl1, "(%1 / %2)", 0 *)
+  
+  (* meta syntax_logic function prefix_mn5, "(-%1)", 0 *)
+  
+  (* meta syntax_logic function inv3, "(1.0 / %1)", 0 *)
+  
+  (* meta invalid trigger predicate infix_lseq2 *)
+  
+  (* meta invalid trigger predicate infix_ls1 *)
+  
+  (* meta invalid trigger predicate infix_gteq1 *)
+  
+  (* meta invalid trigger predicate infix_gt1 *)
+  
+  (* meta syntax_logic predicate infix_lseq2, "(%1 <= %2)", 0 *)
+  
+  (* meta syntax_logic predicate infix_ls1, "(%1 <  %2)", 0 *)
+  
+  (* meta syntax_logic predicate infix_gteq1, "(%1 >= %2)", 0 *)
+  
+  (* meta syntax_logic predicate infix_gt1, "(%1 >  %2)", 0 *)
+  
+  (* meta remove_prop prop Comm12 *)
+  
+  (* meta remove_prop prop Assoc15 *)
+  
+  (* meta remove_prop prop Unit_def_l8 *)
+  
+  (* meta remove_prop prop Unit_def_r8 *)
+  
+  (* meta remove_prop prop Inv_def_l7 *)
+  
+  (* meta remove_prop prop Inv_def_r7 *)
+  
+  (* meta remove_prop prop Assoc14 *)
+  
+  (* meta remove_prop prop Mul_distr_l5 *)
+  
+  (* meta remove_prop prop Mul_distr_r5 *)
+  
+  (* meta remove_prop prop Comm11 *)
+  
+  (* meta remove_prop prop Unitary3 *)
+  
+  (* meta remove_prop prop Refl6 *)
+  
+  (* meta remove_prop prop Trans6 *)
+  
+  (* meta remove_prop prop Total4 *)
+  
+  (* meta remove_prop prop Antisymm5 *)
+  
+  (* meta remove_prop prop Inverse1 *)
+  
+  (* meta remove_prop prop NonTrivialRing3 *)
+  
+  (* meta remove_prop prop CompatOrderAdd3 *)
+  
+  (* meta remove_prop prop ZeroLessOne3 *)
+  
+  (* meta syntax_logic function infix_pldt, "(%1 + %2)", 0 *)
+  
+  (* meta syntax_logic function infix_mndt, "(%1 - %2)", 0 *)
+  
+  (* meta syntax_logic function infix_asdt, "(%1 * %2)", 0 *)
+  
+  (* meta syntax_logic function infix_sldt, "(%1 / %2)", 0 *)
+  
+  (* meta syntax_logic function prefix_mndt, "(-%1)", 0 *)
+  
+  (* meta invalid trigger predicate infix_lseqdt *)
+  
+  (* meta invalid trigger predicate infix_lsdt *)
+  
+  (* meta invalid trigger predicate infix_gteqdt *)
+  
+  (* meta invalid trigger predicate infix_gtdt *)
+  
+  (* meta syntax_logic predicate infix_lseqdt, "(%1 <= %2)", 0 *)
+  
+  (* meta syntax_logic predicate infix_lsdt, "(%1 <  %2)", 0 *)
+  
+  (* meta syntax_logic predicate infix_gteqdt, "(%1 >= %2)", 0 *)
+  
+  (* meta syntax_logic predicate infix_gtdt, "(%1 >  %2)", 0 *)
+  
+  (* meta syntax_logic predicate is_not_nan1, "", 0 *)
+  
+  (* meta remove_prop prop eb_gt_11 *)
+  
+  (* meta remove_prop prop sb_gt_11 *)
+  
+  (* meta remove_prop prop is_not_nan1 *)
+  
+  (* meta remove_prop prop is_not_finite1 *)
+  
+  (* meta remove_prop prop zeroF_is_positive1 *)
+  
+  (* meta remove_prop prop zeroF_is_zero1 *)
+  
+  (* meta remove_prop prop zero_to_real1 *)
+  
+  (* meta remove_prop prop zero_of_int1 *)
+  
+  (* meta remove_prop prop max_int1 *)
+  
+  (* meta remove_prop prop max_real_int1 *)
+  
+  (* meta remove_prop prop is_finite1 *)
+  
+  (* meta remove_prop prop Bounded_real_no_overflow1 *)
+  
+  (* meta remove_prop prop Round_monotonic1 *)
+  
+  (* meta remove_prop prop Round_idempotent1 *)
+  
+  (* meta remove_prop prop Round_to_real1 *)
+  
+  (* meta remove_prop prop Round_down_le1 *)
+  
+  (* meta remove_prop prop Round_up_ge1 *)
+  
+  (* meta remove_prop prop Round_down_neg1 *)
+  
+  (* meta remove_prop prop Round_up_neg1 *)
+  
+  (* meta remove_prop prop pow2sb1 *)
+  
+  (* meta remove_prop prop Exact_rounding_for_integers1 *)
+  
+  (* meta remove_prop prop feq_eq1 *)
+  
+  (* meta remove_prop prop eq_feq1 *)
+  
+  (* meta remove_prop prop eq_refl1 *)
+  
+  (* meta remove_prop prop eq_sym1 *)
+  
+  (* meta remove_prop prop eq_trans1 *)
+  
+  (* meta remove_prop prop eq_zero1 *)
+  
+  (* meta remove_prop prop eq_to_real_finite1 *)
+  
+  (* meta remove_prop prop eq_special1 *)
+  
+  (* meta remove_prop prop lt_finite1 *)
+  
+  (* meta remove_prop prop le_finite1 *)
+  
+  (* meta remove_prop prop le_lt_trans1 *)
+  
+  (* meta remove_prop prop lt_le_trans1 *)
+  
+  (* meta remove_prop prop le_ge_asym1 *)
+  
+  (* meta remove_prop prop not_lt_ge1 *)
+  
+  (* meta remove_prop prop not_gt_le1 *)
+  
+  (* meta remove_prop prop le_special1 *)
+  
+  (* meta remove_prop prop lt_special1 *)
+  
+  (* meta remove_prop prop lt_lt_finite1 *)
+  
+  (* meta remove_prop prop positive_to_real1 *)
+  
+  (* meta remove_prop prop to_real_positive1 *)
+  
+  (* meta remove_prop prop negative_to_real1 *)
+  
+  (* meta remove_prop prop to_real_negative1 *)
+  
+  (* meta remove_prop prop negative_xor_positive1 *)
+  
+  (* meta remove_prop prop negative_or_positive1 *)
+  
+  (* meta remove_prop prop diff_sign_trans1 *)
+  
+  (* meta remove_prop prop diff_sign_product1 *)
+  
+  (* meta remove_prop prop same_sign_product1 *)
+  
+  (* meta remove_prop prop add_finite1 *)
+  
+  (* meta remove_prop prop add_finite_rev1 *)
+  
+  (* meta remove_prop prop add_finite_rev_n1 *)
+  
+  (* meta remove_prop prop sub_finite1 *)
+  
+  (* meta remove_prop prop sub_finite_rev1 *)
+  
+  (* meta remove_prop prop sub_finite_rev_n1 *)
+  
+  (* meta remove_prop prop mul_finite1 *)
+  
+  (* meta remove_prop prop mul_finite_rev1 *)
+  
+  (* meta remove_prop prop mul_finite_rev_n1 *)
+  
+  (* meta remove_prop prop div_finite1 *)
+  
+  (* meta remove_prop prop div_finite_rev1 *)
+  
+  (* meta remove_prop prop div_finite_rev_n1 *)
+  
+  (* meta remove_prop prop neg_finite1 *)
+  
+  (* meta remove_prop prop neg_finite_rev1 *)
+  
+  (* meta remove_prop prop abs_finite1 *)
+  
+  (* meta remove_prop prop abs_finite_rev1 *)
+  
+  (* meta remove_prop prop abs_universal1 *)
+  
+  (* meta remove_prop prop fma_finite1 *)
+  
+  (* meta remove_prop prop fma_finite_rev1 *)
+  
+  (* meta remove_prop prop fma_finite_rev_n1 *)
+  
+  (* meta remove_prop prop sqrt_finite1 *)
+  
+  (* meta remove_prop prop sqrt_finite_rev1 *)
+  
+  (* meta remove_prop prop add_special1 *)
+  
+  (* meta remove_prop prop sub_special1 *)
+  
+  (* meta remove_prop prop mul_special1 *)
+  
+  (* meta remove_prop prop div_special1 *)
+  
+  (* meta remove_prop prop neg_special1 *)
+  
+  (* meta remove_prop prop abs_special1 *)
+  
+  (* meta remove_prop prop fma_special1 *)
+  
+  (* meta remove_prop prop sqrt_special1 *)
+  
+  (* meta remove_prop prop of_int_add_exact1 *)
+  
+  (* meta remove_prop prop of_int_sub_exact1 *)
+  
+  (* meta remove_prop prop of_int_mul_exact1 *)
+  
+  (* meta remove_prop prop Min_r1 *)
+  
+  (* meta remove_prop prop Min_l1 *)
+  
+  (* meta remove_prop prop Max_r1 *)
+  
+  (* meta remove_prop prop Max_l1 *)
+  
+  (* meta remove_prop prop zeroF_is_int1 *)
+  
+  (* meta remove_prop prop of_int_is_int1 *)
+  
+  (* meta remove_prop prop big_float_is_int1 *)
+  
+  (* meta remove_prop prop roundToIntegral_is_int1 *)
+  
+  (* meta remove_prop prop eq_is_int1 *)
+  
+  (* meta remove_prop prop add_int1 *)
+  
+  (* meta remove_prop prop sub_int1 *)
+  
+  (* meta remove_prop prop mul_int1 *)
+  
+  (* meta remove_prop prop fma_int1 *)
+  
+  (* meta remove_prop prop neg_int1 *)
+  
+  (* meta remove_prop prop abs_int1 *)
+  
+  (* meta remove_prop prop is_int_of_int1 *)
+  
+  (* meta remove_prop prop is_int_to_int1 *)
+  
+  (* meta remove_prop prop is_int_is_finite1 *)
+  
+  (* meta remove_prop prop int_to_real1 *)
+  
+  (* meta remove_prop prop truncate_int1 *)
+  
+  (* meta remove_prop prop truncate_neg1 *)
+  
+  (* meta remove_prop prop truncate_pos1 *)
+  
+  (* meta remove_prop prop ceil_le1 *)
+  
+  (* meta remove_prop prop ceil_lest1 *)
+  
+  (* meta remove_prop prop ceil_to_real1 *)
+  
+  (* meta remove_prop prop ceil_to_int1 *)
+  
+  (* meta remove_prop prop floor_le1 *)
+  
+  (* meta remove_prop prop floor_lest1 *)
+  
+  (* meta remove_prop prop floor_to_real1 *)
+  
+  (* meta remove_prop prop floor_to_int1 *)
+  
+  (* meta remove_prop prop RNA_down1 *)
+  
+  (* meta remove_prop prop RNA_up1 *)
+  
+  (* meta remove_prop prop RNA_down_tie1 *)
+  
+  (* meta remove_prop prop RNA_up_tie1 *)
+  
+  (* meta remove_prop prop to_int_roundToIntegral1 *)
+  
+  (* meta remove_prop prop to_int_monotonic1 *)
+  
+  (* meta remove_prop prop to_int_of_int1 *)
+  
+  (* meta remove_prop prop eq_to_int1 *)
+  
+  (* meta remove_prop prop neg_to_int1 *)
+  
+  (* meta remove_prop prop roundToIntegral_is_finite1 *)
+  
+  (* meta remove_prop prop round_bound_ne *)
+  
+  (* meta remove_prop prop round_bound *)
+  
+  function x1 [@introduced] : t19
+  
+  function x2 [@introduced] : t19
+  
+  function x3 [@introduced] : t19
+  
+  function x4 [@introduced] : t19
+  
+  function x5 [@introduced] : t19
+  
+  axiom H [@introduced] : (0.0 <  tqtreal x1)
+  
+  axiom H1 [@introduced] : (tqtreal x1 <  0.1)
+  
+  goal G : match nnet_apply x1 x2 x3 x4 x5 with
+    | Tuple5 y1 _ _ _ _ -> (0.0 <  tqtreal y1) /\ (tqtreal y1 <  0.1)
+    end
+  
+  end