From e55e1d35222725807ca2ee8093fec68f92acd7ff Mon Sep 17 00:00:00 2001
From: Raphael Rieu-Helft <raphael.rieu-helft@lri.fr>
Date: Tue, 5 Jun 2018 16:53:45 +0200
Subject: [PATCH] Add schoolbook GMP functions to examples and bench

---
 bench/bench                                   |     3 +-
 examples/multiprecision/add.mlw               |   548 +
 examples/multiprecision/add/why3session.xml   |  1307 ++
 examples/multiprecision/add/why3shapes.gz     |   Bin 0 -> 15032 bytes
 examples/multiprecision/compare.mlw           |    87 +
 .../multiprecision/compare/why3session.xml    |   147 +
 examples/multiprecision/compare/why3shapes.gz |   Bin 0 -> 2057 bytes
 examples/multiprecision/div.mlw               |  4433 +++++++
 examples/multiprecision/div/why3session.xml   | 10635 ++++++++++++++++
 examples/multiprecision/div/why3shapes.gz     |   Bin 0 -> 118256 bytes
 examples/multiprecision/lemmas.mlw            |   207 +
 .../multiprecision/lemmas/why3session.xml     |   272 +
 examples/multiprecision/lemmas/why3shapes.gz  |   Bin 0 -> 3300 bytes
 examples/multiprecision/lineardecision.mlw    |  2105 +++
 .../lineardecision/why3session.xml            |  4352 +++++++
 .../lineardecision/why3shapes.gz              |   Bin 0 -> 55540 bytes
 examples/multiprecision/logical.mlw           |   389 +
 .../multiprecision/logical/why3session.xml    |   899 ++
 examples/multiprecision/logical/why3shapes.gz |   Bin 0 -> 10701 bytes
 examples/multiprecision/mul.mlw               |   601 +
 examples/multiprecision/mul/why3session.xml   |  1471 +++
 examples/multiprecision/mul/why3shapes.gz     |   Bin 0 -> 15958 bytes
 examples/multiprecision/sub.mlw               |   546 +
 examples/multiprecision/sub/why3session.xml   |  1261 ++
 examples/multiprecision/sub/why3shapes.gz     |   Bin 0 -> 14208 bytes
 examples/multiprecision/types.mlw             |    14 +
 examples/multiprecision/types/why3session.xml |     7 +
 examples/multiprecision/types/why3shapes.gz   |   Bin 0 -> 20 bytes
 examples/multiprecision/util.mlw              |    65 +
 examples/multiprecision/util/why3session.xml  |   172 +
 examples/multiprecision/util/why3shapes.gz    |   Bin 0 -> 1708 bytes
 examples/multiprecision/wmpn.mlw              |    13 +
 examples/multiprecision/wmpn/why3session.xml  |     7 +
 examples/multiprecision/wmpn/why3shapes.gz    |   Bin 0 -> 20 bytes
 34 files changed, 29540 insertions(+), 1 deletion(-)
 create mode 100644 examples/multiprecision/add.mlw
 create mode 100644 examples/multiprecision/add/why3session.xml
 create mode 100644 examples/multiprecision/add/why3shapes.gz
 create mode 100644 examples/multiprecision/compare.mlw
 create mode 100644 examples/multiprecision/compare/why3session.xml
 create mode 100644 examples/multiprecision/compare/why3shapes.gz
 create mode 100644 examples/multiprecision/div.mlw
 create mode 100644 examples/multiprecision/div/why3session.xml
 create mode 100644 examples/multiprecision/div/why3shapes.gz
 create mode 100644 examples/multiprecision/lemmas.mlw
 create mode 100644 examples/multiprecision/lemmas/why3session.xml
 create mode 100644 examples/multiprecision/lemmas/why3shapes.gz
 create mode 100644 examples/multiprecision/lineardecision.mlw
 create mode 100644 examples/multiprecision/lineardecision/why3session.xml
 create mode 100644 examples/multiprecision/lineardecision/why3shapes.gz
 create mode 100644 examples/multiprecision/logical.mlw
 create mode 100644 examples/multiprecision/logical/why3session.xml
 create mode 100644 examples/multiprecision/logical/why3shapes.gz
 create mode 100644 examples/multiprecision/mul.mlw
 create mode 100644 examples/multiprecision/mul/why3session.xml
 create mode 100644 examples/multiprecision/mul/why3shapes.gz
 create mode 100644 examples/multiprecision/sub.mlw
 create mode 100644 examples/multiprecision/sub/why3session.xml
 create mode 100644 examples/multiprecision/sub/why3shapes.gz
 create mode 100644 examples/multiprecision/types.mlw
 create mode 100644 examples/multiprecision/types/why3session.xml
 create mode 100644 examples/multiprecision/types/why3shapes.gz
 create mode 100644 examples/multiprecision/util.mlw
 create mode 100644 examples/multiprecision/util/why3session.xml
 create mode 100644 examples/multiprecision/util/why3shapes.gz
 create mode 100644 examples/multiprecision/wmpn.mlw
 create mode 100644 examples/multiprecision/wmpn/why3session.xml
 create mode 100644 examples/multiprecision/wmpn/why3shapes.gz

diff --git a/bench/bench b/bench/bench
index 8c3b007e7c..07e4a113ec 100755
--- a/bench/bench
+++ b/bench/bench
@@ -269,8 +269,8 @@ goods examples/avl "-L examples/avl"
 goods examples/verifythis_2016_matrix_multiplication "-L examples/verifythis_2016_matrix_multiplication"
 goods examples/double_wp "-L examples/double_wp"
 goods examples/ring_decision "-L examples/ring_decision"
+goods examples/multiprecision "-L examples/multiprecision"
 goods examples/in_progress
-goods examples/in_progress/multiprecision "-L examples/in_progress/multiprecision"
 echo ""
 
 echo "=== Checking replay (no prover) ==="
@@ -290,6 +290,7 @@ replay examples/avl "-L examples/avl --merging-only"
 #replay examples/to_port/verifythis_2016_matrix_multiplication "-L examples/to_port/verifythis_2016_matrix_multiplication --merging-only"
 replay examples/double_wp "-L examples/double_wp --merging-only"
 replay examples/ring_decision "-L examples/ring_decision --merging-only"
+replay examples/multiprecision "-L examples/multiprecision --merging-only"
 #replay examples/in_progress --merging-only
 #replay examples/in_progress/multiprecision "-L examples/in_progress/multiprecision --merging-only"
 echo ""
diff --git a/examples/multiprecision/add.mlw b/examples/multiprecision/add.mlw
new file mode 100644
index 0000000000..57f19fe3e2
--- /dev/null
+++ b/examples/multiprecision/add.mlw
@@ -0,0 +1,548 @@
+module Add
+
+  use import int.Int
+  use import mach.int.Int32
+  use import mach.int.UInt64GMP as Limb
+  use import int.Power
+  use import ref.Ref
+  use import mach.c.C
+  use import array.Array
+  use import map.Map
+  use import types.Types
+  use import lemmas.Lemmas
+
+  (** [add_limb r x y sz] adds to [x] the value of the limb [y],
+      writes the result in [r] and returns the carry. [r] and [x]
+      have size [sz]. This corresponds to the function [mpn_add_1] *)
+  (* r and x must be separated. This is enforced by Why3 regions in typing *)
+  let add_limb (r x:t) (y:limb) (sz:int32) : limb
+    requires { valid x sz }
+    requires { valid r sz }
+    requires { sz > 0 } (* ? GMP does the same for 0 and 1*)
+    ensures { value r sz + (power radix sz) * result =
+              value x sz + y }
+    ensures { 0 <= result <= 1 }
+    ensures { forall j. (j < offset r \/ offset r + sz <= j)
+              -> (pelts r)[j] = old (pelts r)[j] }
+    writes { r.data.elts }
+  =
+    let limb_zero = Limb.of_int 0 in
+    let c = ref y in
+    let lx = ref limb_zero in
+    let i = ref (Int32.of_int 0) in
+    while Int32.(<) !i sz && (not (Limb.(=) !c limb_zero)) do
+      invariant { 0 <= !i <= sz }
+      invariant { !i > 0 -> 0 <= !c <= 1 }
+      invariant { value r !i + (power radix !i) * !c =
+                  value x !i + y }
+      invariant { forall j. (j < offset r \/ offset r + sz <= j)
+                -> (pelts r)[j] = old (pelts r)[j] }
+      variant { sz - !i }
+      label StartLoop in
+      lx := get_ofs x !i;
+      let (res, carry) = add_with_carry !lx !c limb_zero in
+      set_ofs r !i res;
+      assert { value r !i + (power radix !i) * !c =
+                  value x !i + y };
+      c := carry;
+      value_tail r !i;
+      value_tail x !i;
+      assert { value r (!i+1) + (power radix (!i+1)) * !c
+             = value x (!i+1) + y
+             (* by
+             value r !i + (power radix !i) * !c
+             = value r k + (power radix k) * res
+                               + (power radix !i) * !c
+             = value r k + (power radix k) * res
+                               + (power radix k) * radix * !c
+             = value r k + (power radix k) * (res + radix * !c)
+             = value r k +
+               (power radix k) * (!lx + (!c at StartLoop))
+             = value r k + (power radix k) * (!c at StartLoop)
+                               + (power radix k) * !lx
+             = value x k + y + (power radix k) * !lx
+             = value x !i + y*) };
+      i := Int32.(+) !i (Int32.of_int 1);
+    done;
+    if Int32.(=) !i sz then !c
+    else begin
+    while Int32.(<) !i sz do
+      invariant { !c  = 0 }
+      invariant { 0 <= !i <= sz }
+      invariant { value r !i + (power radix !i) * !c =
+                  value x !i + y }
+      invariant { forall j. (j < offset r \/ offset r + sz <= j)
+                -> (pelts r)[j] = old (pelts r)[j] }
+      variant { sz - !i }
+      lx := get_ofs x !i;
+      set_ofs r !i !lx;
+      assert { value r !i + (power radix !i) * !c =
+                  value x !i + y };
+      let ghost k = p2i !i in
+      i := Int32.(+) !i (Int32.of_int 1);
+      value_sub_tail (pelts r) r.offset (r.offset + k);
+      value_sub_tail (pelts x) x.offset (x.offset + k);
+    done;
+    !c
+    end
+
+
+  (** [add_limbs r x y sz] adds [x[0..sz-1]] and [y[0..sz-1]] and writes the result in [r].
+      Returns the carry, either [0] or [1]. Corresponds to the function [mpn_add_n]. *)
+
+  let add_limbs (r x y:t) (sz:int32) : limb
+    requires { valid x sz }
+    requires { valid y sz }
+    requires { valid r sz }
+    ensures { 0 <= result <= 1 }
+    ensures { value r sz + (power radix sz) * result =
+            value x sz + value y sz }
+    ensures { forall j. (j < offset r \/ offset r + sz <= j)
+              -> (pelts r)[j] = old (pelts r)[j] }
+    writes { r.data.elts }
+    =
+    let limb_zero = Limb.of_int 0 in
+    let lx = ref limb_zero in
+    let ly = ref limb_zero in
+    let c = ref limb_zero in
+    let i = ref (Int32.of_int 0) in
+    while Int32.(<) !i sz do
+      variant { sz - !i }
+      invariant { 0 <= !i <= sz }
+      invariant { value r !i + (power radix !i) * !c =
+                value x !i + value y !i }
+      invariant { 0 <= !c <= 1 }
+      invariant { forall j. (j < offset r \/ offset r + sz <= j)
+                -> (pelts r)[j] = old (pelts r)[j] }
+      label StartLoop in
+      lx := get_ofs x !i;
+      ly := get_ofs y !i;
+      let res, carry = add_with_carry !lx !ly !c in
+      set_ofs r !i res;
+      assert { value r !i + (power radix !i) * !c =
+                value x !i + value y !i
+               by value r !i = (value r !i at StartLoop) };
+      c := carry;
+      value_tail r !i;
+      value_tail x !i;
+      value_tail y !i;
+      assert { value r (!i+1) + (power radix (!i+1)) * !c =
+                value x (!i+1) + value y (!i+1)
+              (*by
+              value r !i + (power radix !i) * !c
+              = value r k + (power radix k) * res
+                   + (power radix !i) * !c
+              = value r k + (power radix k) * res
+                   + (power radix k) * radix * !c
+              = value r k + (power radix k) * (res + radix * !c)
+              = value r k +
+                  (power radix k) * (!lx + !ly + (!c at StartLoop))
+              = value r k + (power radix k) * (!c at StartLoop)
+                 + (power radix k) * (!lx + !ly)
+              = value x k + value y k
+                 + (power radix k) * (!lx + !ly)
+              = value x k + (power radix k) * !lx
+                 + value y k + (power radix k) * !ly
+              = value x !i
+                 + value y k + (power radix k) * !ly
+              = value x !i
+                 + (value y k + (power radix k) * !ly)
+              = value x !i + value y !i*) };
+      i := Int32.(+) !i (Int32.of_int 1);
+    done;
+    !c
+
+  (** [add r x y sx sy] adds [(x, sx)] to [(y,sy)] and writes the
+      result in [(r, sx)].  [sx] must be greater than or equal to
+      [sy]. Returns carry, either 0 or 1. Corresponds to [mpn_add]. *)
+  let add (r x y:t) (sx sy:int32) : limb
+    requires { 0 <= sy <= sx }
+    requires { valid x sx }
+    requires { valid y sy }
+    requires { valid r sx }
+    ensures { value r sx + (power radix sx) * result =
+              value x sx + value y sy }
+    ensures { forall j. (j < offset r \/ offset r + sx <= j)
+              -> (pelts r)[j] = old (pelts r)[j] }
+    ensures { 0 <= result <= 1 }
+    writes { r.data.elts }
+ =
+    let limb_zero = Limb.of_int 0 in
+    let lx = ref limb_zero in
+    let ly = ref limb_zero in
+    let c = ref limb_zero in
+    let i = ref (Int32.of_int 0) in
+    while Int32.(<) !i sy do
+      variant { sy - !i }
+      invariant { 0 <= !i <= sy }
+      invariant { value r !i + (power radix !i) * !c =
+                value x !i + value y !i }
+      invariant { 0 <= !c <= 1 }
+      invariant { forall j. (j < offset r \/ offset r + sx <= j)
+                -> (pelts r)[j] = old (pelts r)[j] }
+      label StartLoop in
+      lx := get_ofs x !i;
+      ly := get_ofs y !i;
+      let res, carry = add_with_carry !lx !ly !c in
+      set_ofs r !i res;
+      assert { value r !i + (power radix !i) * !c =
+                value x !i + value y !i };
+      c := carry;
+      value_tail r !i;
+      value_tail x !i;
+      value_tail y !i;
+      assert { value r (!i+1) + (power radix (!i+1)) * !c =
+                value x (!i+1) + value y (!i+1)
+              (*by
+              value r !i + (power radix !i) * !c
+              = value r k + (power radix k) * res
+                   + (power radix !i) * !c
+              = value r k + (power radix k) * res
+                   + (power radix k) * radix * !c
+              = value r k + (power radix k) * (res + radix * !c)
+              = value r k +
+                  (power radix k) * (!lx + !ly + (!c at StartLoop))
+              = value r k + (power radix k) * (!c at StartLoop)
+                 + (power radix k) * (!lx + !ly)
+              = value x k + value y k
+                 + (power radix k) * (!lx + !ly)
+              = value x k + (power radix k) * !lx
+                 + value y k + (power radix k) * !ly
+              = value x !i
+                 + value y k + (power radix k) * !ly
+              = value x !i
+                 + (value y k + (power radix k) * !ly)
+              = value x !i + value y !i*) };
+      i := Int32.(+) !i (Int32.of_int 1);
+    done;
+    try
+    begin while Int32.(<) !i sx do
+      variant { sx - !i }
+      invariant { sy <= !i <= sx }
+      invariant { value r !i + (power radix !i) * !c =
+                value x !i + value y sy }
+      invariant { 0 <= !c <= 1 }
+      invariant { forall j. (j < offset r \/ offset r + sx <= j)
+                -> (pelts r)[j] = old (pelts r)[j] }
+      (if (Limb.(=) !c (Limb.of_int 0)) then raise Break);
+      label StartLoop2 in
+      lx := get_ofs x !i;
+      let res, carry = add_with_carry !lx limb_zero !c in
+      set_ofs r !i res;
+      assert { value r !i + (power radix !i) * !c =
+                value x !i + value y sy };
+      c := carry;
+      value_tail r !i;
+      value_tail x !i;
+      assert { value r (!i+1) + (power radix (!i+1)) * !c =
+                value x (!i+1) + value y sy
+              (*by
+              value r !i + (power radix !i) * !c
+              = value r k + (power radix k) * res
+                   + (power radix !i) * !c
+              = value r k + (power radix k) * res
+                   + (power radix k) * radix * !c
+              = value r k + (power radix k) * (res + radix * !c)
+              = value r k +
+                  (power radix k) * (!lx + 0 + (!c at StartLoop2))
+              = value r k + (power radix k) * (!c at StartLoop2)
+                 + (power radix k) * !lx
+              = value x k + value y sy
+                 + (power radix k) * !lx
+              = value x !i
+                 + value y sy*) };
+      i := Int32.(+) !i (Int32.of_int 1);
+    done;
+    assert { !i = sx }
+    end
+    with Break -> assert { !c = 0 }
+    end;
+    while Int32.(<) !i sx do
+      variant { sx - !i }
+      invariant { sy <= !i <= sx }
+      invariant { !i = sx \/ !c = 0 }
+      invariant { value r !i + power radix !i * !c =
+                value x !i + value y sy }
+      invariant { forall j. (j < offset r \/ offset r + sx <= j)
+                -> (pelts r)[j] = old (pelts r)[j] }
+      assert { !c = 0 by !i < sx };
+      lx := get_ofs x !i;
+      set_ofs r !i !lx;
+      value_tail r !i;
+      value_tail x !i;
+      assert { value r !i = value x !i + value y sy }; (* true with this, should not be needed *)
+      assert { value r (!i+1) + power radix (!i+1) * !c
+               = value x (!i+1) + value y sy
+               (*
+               by
+               value r !i + power radix !i * !c
+                 = value r !i
+                 = value r k + power radix k * !lx
+               so value x !i
+                  = value x k + power radix k * !lx
+               so value r k
+                  = value r k + power radix k * !c
+                  = value x k + value y sy*) };
+      i := Int32.(+) !i (Int32.of_int 1);
+    done;
+    !c
+
+  let add_in_place (x y:t) (sx sy:int32) : limb
+    requires { 0 <= sy <= sx }
+    requires { valid x sx }
+    requires { valid y sy }
+    ensures  { value x sx + (power radix sx) * result
+               = value (old x) sx + value y sy }
+    ensures  { 0 <= result <= 1 }
+    ensures { forall j. j < x.offset \/ x.offset + sx <= j ->
+              (pelts x)[j] = (pelts (old x))[j] }
+    writes   { x.data.elts }
+  =
+    let ghost ox = { x } in
+    let limb_zero = Limb.of_int 0 in
+    let lx = ref limb_zero in
+    let ly = ref limb_zero in
+    let c = ref limb_zero in
+    let i = ref (Int32.of_int 0) in
+    while Int32.(<) !i sy do
+      variant   { sy - !i }
+      invariant { 0 <= !i <= sy }
+      invariant { value x !i + (power radix !i) * !c =
+                  value ox !i + value y !i }
+      invariant { 0 <= !c <= 1 }
+      invariant { forall j. !i <= j < sx ->
+                  (pelts x)[x.offset + j] = (pelts ox)[x.offset + j] }
+      invariant { forall j. j < x.offset \/ x.offset + sx <= j ->
+                  (pelts x)[j] = (pelts (old x))[j] }
+      label StartLoop in
+      lx := get_ofs x !i;
+      assert { !lx = (pelts ox)[ox.offset + !i] };
+      ly := get_ofs y !i;
+      let res, carry = add_with_carry !lx !ly !c in
+      set_ofs x !i res;
+      assert { forall j. !i < j < sx ->
+                 (pelts x)[x.offset + j]
+                 = (pelts ox)[x.offset + j]
+                 by (pelts x)[x.offset + j]
+                 = (pelts (x at StartLoop))[x.offset + j]
+                 = (pelts ox)[x.offset + j]};
+      assert { value x !i + (power radix !i) * !c = value ox !i + value y !i };
+      c := carry;
+      value_tail x !i;
+      value_tail ox !i;
+      value_tail y !i;
+      assert { value x (!i+1) + (power radix (!i+1)) * !c =
+                value ox (!i+1) + value y (!i+1)
+              (*by value ox k + (power radix k) * !lx
+                 = value ox !i
+              so value x !i + (power radix !i) * !c
+              = value x k + (power radix k) * res
+                   + (power radix !i) * !c
+              = value x k + (power radix k) * res
+                   + (power radix k) * radix * !c
+              = value x k + (power radix k) * (res + radix * !c)
+              = value x k +
+                  (power radix k) * (!lx + !ly + (!c at StartLoop))
+              = value x k + (power radix k) * (!c at StartLoop)
+                 + (power radix k) * (!lx + !ly)
+              = value ox k + value y k
+                 + (power radix k) * (!lx + !ly)
+              = (value ox k + (power radix k) * !lx)
+                 + (value y k + (power radix k) * !ly)
+              = value ox !i
+                 + (value y k + (power radix k) * !ly)
+              = value ox !i
+                 + (value y k + (power radix k) * !ly)
+              = value ox !i + value y !i*) };
+      i := Int32.(+) !i (Int32.of_int 1);
+    done;
+    try
+    while Int32.(<) !i sx do
+      variant   { sx - !i }
+      invariant { sy <= !i <= sx }
+      invariant { value x !i + (power radix !i) * !c =
+                  value ox !i + value y sy }
+      invariant { 0 <= !c <= 1 }
+      invariant { forall j. !i <= j < sx ->
+                  (pelts x)[x.offset + j] = (pelts ox) [x.offset + j] }
+      invariant { forall j. j < x.offset \/ x.offset + sx <= j ->
+                  (pelts x)[j] = (pelts (old x))[j] }
+      (if (Limb.(=) !c limb_zero) then raise ReturnLimb limb_zero);
+      label StartLoop2 in
+      lx := get_ofs x !i;
+      assert { !lx = (pelts ox)[ox.offset + !i] };
+      let res, carry = add_with_carry !lx limb_zero !c in
+      value_sub_update_no_change (pelts x) (x.offset + p2i !i)
+                                           (x.offset + p2i !i + 1)
+                                           (x.offset + p2i sx) res;
+      set_ofs x !i res;
+      assert { value x !i + (power radix !i) * !c = value ox !i + value y sy };
+      c := carry;
+      assert { forall j. !i < j < sx ->
+                  (pelts x)[x.offset + j] = (pelts ox) [x.offset + j] };
+      value_tail ox !i;
+      value_tail x !i;
+      assert { value x (!i+1) + (power radix (!i+1)) * !c =
+                value ox (!i+1) + value y sy
+              (*by value ox k + (power radix k) * !lx
+                 = value ox !i
+              so
+              value x !i + (power radix !i) * !c
+              = value x k + (power radix k) * res
+                   + (power radix !i) * !c
+              = value x k + (power radix k) * res
+                   + (power radix k) * radix * !c
+              = value x k + (power radix k) * (res + radix * !c)
+              = value x k +
+                  (power radix k) * (!lx + 0 + (!c at StartLoop2))
+              = value x k + (power radix k) * (!c at StartLoop2)
+                 + (power radix k) * !lx
+              = value ox k + value y sy
+                 + (power radix k) * !lx
+              = value ox !i
+                 + value y sy*) };
+      i := Int32.(+) !i (Int32.of_int 1);
+    done;
+    assert { !i = sx };
+    !c
+    with ReturnLimb n -> begin
+      assert { n = 0 = !c };
+      assert { forall j. x.offset + !i <= j < x.offset + sx
+               -> (pelts x)[j] = (pelts ox)[j]
+               by !i <= j - x.offset < sx
+               so (pelts x)[x.offset + (j - x.offset)]
+                  = (pelts ox)[x.offset + (j - x.offset)] };
+      value_sub_frame (pelts x) (pelts ox) (x.offset + p2i !i) (x.offset + p2i sx);
+      value_sub_concat (pelts x) x.offset (x.offset + p2i !i) (x.offset + p2i sx);
+      value_sub_concat (pelts ox) x.offset (x.offset + p2i !i) (x.offset + p2i sx);
+      assert { value x sx = value (old x) sx + value y sy };
+      n
+      end
+    end
+
+  use import int.EuclideanDivision
+
+  (** [incr x y sz] adds to [x] the value of the limb [y] in place.
+      [x] has size [sz]. The addition must not overflow. This corresponds
+      to [mpn_incr] *)
+  let incr (x:t) (y:limb) (ghost sz:int32) : unit
+    requires { valid x sz }
+    requires { sz > 0 }
+    requires { value x sz + y < power radix sz }
+    ensures  { value x sz = value (old x) sz + y }
+    ensures { forall j. j < x.offset \/ x.offset + sz <= j ->
+              (pelts x)[j] = (pelts (old x))[j] }
+    writes   { x.data.elts }
+  =
+    let ghost ox = { x } in
+    let c = ref y in
+    let lx : ref limb = ref 0 in
+    let i : ref int32 = ref 0 in
+    while not (Limb.(=) !c 0) do
+      invariant { 0 <= !i <= sz }
+      invariant { !i = sz -> !c = 0 }
+      invariant { !i > 0 -> 0 <= !c <= 1 }
+      invariant { value x !i + (power radix !i) * !c
+                  = value ox !i + y }
+      invariant { forall j. !i <= j < sz ->
+                  (pelts x)[x.offset + j] = (pelts ox)[x.offset + j] }
+      invariant { forall j. j < x.offset \/ x.offset + sz <= j ->
+                  (pelts x)[j] = (pelts ox)[j] }
+      variant   { sz - !i }
+      label StartLoop in
+      lx := get_ofs x !i;
+      assert { !lx = (pelts ox)[ox.offset + !i] };
+      let (res, carry) = add_with_carry !lx !c 0 in (*TODO*)
+      assert { res + radix * carry = !lx + !c }; (* TODO remove this *)
+      value_sub_update_no_change (pelts x) (x.offset + p2i !i)
+                                           (x.offset + p2i !i + 1)
+                                           (x.offset + p2i sz) res;
+      set_ofs x !i res;
+      assert { forall j. !i < j < sz ->
+                 (pelts x)[x.offset + j]
+                 = (pelts ox)[x.offset + j] };
+      assert { value x !i + (power radix !i) * !c = value ox !i + y };
+      c := carry;
+      value_tail x !i;
+      value_tail ox !i;
+      assert { value x (!i+1) + power radix (!i+1) * !c =
+               value ox (!i+1) + y };
+      i := Int32.(+) !i 1;
+      assert { !i = sz -> !c = 0
+               by value x sz + power radix sz * !c = value ox sz + y
+                  so value ox sz + y < power radix sz
+                  so 0 <= !c <= 1};
+    done;
+    value_concat x !i sz;
+    value_concat ox !i sz;
+    assert { forall j. x.offset + !i <= j < x.offset + sz ->
+             (pelts x)[j] = (pelts ox)[j]
+             by let k = j - x.offset in
+                !i <= k < sz
+                so (pelts x)[x.offset + k] = (pelts ox)[x.offset + k]};
+    value_sub_frame (pelts x) (pelts ox) (x.offset + p2i !i) (x.offset + p2i sz)
+
+  (** [incr_1 x sz] adds 1 to [x] in place.
+      [x] has size [sz]. The addition must not overflow.
+      This corresponds to [mpn_incr] *)
+  let incr_1 (x:t) (ghost sz:int32) : unit
+    requires { valid x sz }
+    requires { sz > 0 }
+    requires { value x sz + 1 < power radix sz }
+    ensures  { value x sz = value (old x) sz + 1 }
+    ensures { forall j. j < x.offset \/ x.offset + sz <= j ->
+              (pelts x)[j] = (pelts (old x))[j] }
+    writes   { x.data.elts }
+  =
+    let ghost ox = { x } in
+    let r : ref limb = ref 0 in
+    let ghost c : ref limb = ref 1 in
+    let lx : ref limb = ref 0 in
+    let i : ref int32 = ref 0 in
+    while (Limb.(=) !r 0) do
+      invariant { 0 <= !i <= sz }
+      invariant { !i = sz -> !r <> 0 }
+      invariant { !r <> 0 <-> !c = 0 }
+      invariant { 0 <= !c <= 1 }
+      invariant { value x !i + (power radix !i) * !c
+                  = value ox !i + 1 }
+      invariant { forall j. !i <= j < sz ->
+                  (pelts x)[x.offset + j] = (pelts ox)[x.offset + j] }
+      invariant { forall j. j < x.offset \/ x.offset + sz <= j ->
+                  (pelts x)[j] = (pelts ox)[j] }
+      variant   { sz - !i }
+      label StartLoop in
+      lx := get_ofs x !i;
+      assert { !lx = (pelts ox)[ox.offset + !i] };
+      let res = add_mod !lx 1 in
+      r := res;
+      ghost (if Limb.(=) res 0 then c := 1 else c := 0);
+      assert { res + radix * !c = !lx + 1 };
+      value_sub_update_no_change (pelts x) (x.offset + p2i !i)
+                                           (x.offset + p2i !i + 1)
+                                           (x.offset + p2i sz) res;
+      set_ofs x !i res;
+      assert { forall j. !i < j < sz ->
+                 (pelts x)[x.offset + j]
+                 = (pelts ox)[x.offset + j] };
+      assert { value x !i + (power radix !i) * (!c at StartLoop) = value ox !i + 1 };
+      value_tail x !i;
+      value_tail ox !i;
+      assert { value x (!i+1) + power radix (!i+1) * !c =
+               value ox (!i+1) + 1 };
+      i := Int32.(+) !i 1;
+      assert { !i = sz -> !c = 0
+               by value x sz + power radix sz * !c = value ox sz + 1
+                  so value ox sz + 1 < power radix sz
+                  so 0 <= !c <= 1};
+    done;
+    value_concat x !i sz;
+    value_concat ox !i sz;
+    assert { forall j. x.offset + !i <= j < x.offset + sz ->
+             (pelts x)[j] = (pelts ox)[j]
+             by let k = j - x.offset in
+                !i <= k < sz
+                so (pelts x)[x.offset + k] = (pelts ox)[x.offset + k]};
+    value_sub_frame (pelts x) (pelts ox) (x.offset + p2i !i) (x.offset + p2i sz)
+
+end
\ No newline at end of file
diff --git a/examples/multiprecision/add/why3session.xml b/examples/multiprecision/add/why3session.xml
new file mode 100644
index 0000000000..bd1f243383
--- /dev/null
+++ b/examples/multiprecision/add/why3session.xml
@@ -0,0 +1,1307 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE why3session PUBLIC "-//Why3//proof session v5//EN"
+"http://why3.lri.fr/why3session.dtd">
+<why3session shape_version="4">
+<prover id="0" name="Eprover" version="1.9.1-001" timelimit="5" steplimit="0" memlimit="2000"/>
+<prover id="1" name="CVC3" version="2.4.1" timelimit="5" steplimit="0" memlimit="1000"/>
+<prover id="2" name="CVC4" version="1.4" timelimit="1" steplimit="0" memlimit="1000"/>
+<prover id="3" name="Z3" version="4.5.0" timelimit="1" steplimit="0" memlimit="1000"/>
+<prover id="4" name="Z3" version="4.4.1" timelimit="5" steplimit="0" memlimit="1000"/>
+<prover id="5" name="Alt-Ergo" version="2.0.0" timelimit="5" steplimit="0" memlimit="1000"/>
+<file name="../add.mlw" proved="true">
+<theory name="Add" proved="true">
+ <goal name="VC add_limb" expl="VC for add_limb" proved="true">
+ <transf name="split_goal_right" proved="true" >
+  <goal name="VC add_limb.0" expl="integer overflow" proved="true">
+  <proof prover="4"><result status="valid" time="0.03"/></proof>
+  <proof prover="5"><result status="valid" time="0.04" steps="20"/></proof>
+  </goal>
+  <goal name="VC add_limb.1" expl="integer overflow" proved="true">
+  <proof prover="4"><result status="valid" time="0.03"/></proof>
+  <proof prover="5"><result status="valid" time="0.03" steps="21"/></proof>
+  </goal>
+  <goal name="VC add_limb.2" expl="loop invariant init" proved="true">
+  <proof prover="4"><result status="valid" time="0.03"/></proof>
+  <proof prover="5"><result status="valid" time="0.04" steps="11"/></proof>
+  </goal>
+  <goal name="VC add_limb.3" expl="loop invariant init" proved="true">
+  <proof prover="5"><result status="valid" time="0.01" steps="13"/></proof>
+  </goal>
+  <goal name="VC add_limb.4" expl="loop invariant init" proved="true">
+  <proof prover="5"><result status="valid" time="0.03" steps="70"/></proof>
+  </goal>
+  <goal name="VC add_limb.5" expl="loop invariant init" proved="true">
+  <proof prover="3"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC add_limb.6" expl="precondition" proved="true">
+  <proof prover="4"><result status="valid" time="1.22"/></proof>
+  <proof prover="5"><result status="valid" time="0.06" steps="49"/></proof>
+  </goal>
+  <goal name="VC add_limb.7" expl="precondition" proved="true">
+  <proof prover="5"><result status="valid" time="0.05" steps="21"/></proof>
+  </goal>
+  <goal name="VC add_limb.8" expl="precondition" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC add_limb.8.0" expl="VC for add_limb" proved="true">
+   <transf name="introduce_premises" proved="true" >
+    <goal name="VC add_limb.8.0.0" expl="VC for add_limb" proved="true">
+    <proof prover="0"><result status="valid" time="0.09"/></proof>
+    </goal>
+   </transf>
+   </goal>
+   <goal name="VC add_limb.8.1" expl="VC for add_limb" proved="true">
+   <proof prover="1" memlimit="2000"><result status="valid" time="0.05"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC add_limb.9" expl="assertion" proved="true">
+  <proof prover="0"><result status="valid" time="0.51"/></proof>
+  </goal>
+  <goal name="VC add_limb.10" expl="precondition" proved="true">
+  <proof prover="3"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC add_limb.11" expl="precondition" proved="true">
+  <proof prover="3"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC add_limb.12" expl="assertion" proved="true">
+  <transf name="use_th" proved="true" arg1="lineardecision.LinearDecisionIntMP">
+   <goal name="VC add_limb.12.0" expl="assertion" proved="true">
+   <transf name="introduce_premises" proved="true" >
+    <goal name="VC add_limb.12.0.0" expl="assertion" proved="true">
+    <transf name="reflection_f" proved="true" arg1="mp_decision">
+     <goal name="VC add_limb.12.0.0.0" expl="assertion" proved="true">
+     <proof prover="0"><result status="valid" time="0.24"/></proof>
+     </goal>
+     <goal name="VC add_limb.12.0.0.1" proved="true">
+     <proof prover="3"><result status="valid" time="0.33"/></proof>
+     </goal>
+     <goal name="VC add_limb.12.0.0.2" proved="true">
+     <proof prover="3"><result status="valid" time="0.34"/></proof>
+     </goal>
+    </transf>
+    </goal>
+   </transf>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC add_limb.13" expl="integer overflow" proved="true">
+  <proof prover="4"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC add_limb.14" expl="integer overflow" proved="true">
+  <proof prover="4"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC add_limb.15" expl="loop variant decrease" proved="true">
+  <proof prover="4"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC add_limb.16" expl="loop invariant preservation" proved="true">
+  <proof prover="3"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC add_limb.17" expl="loop invariant preservation" proved="true">
+  <proof prover="4"><result status="valid" time="0.04"/></proof>
+  </goal>
+  <goal name="VC add_limb.18" expl="loop invariant preservation" proved="true">
+  <proof prover="0"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC add_limb.19" expl="loop invariant preservation" proved="true">
+  <proof prover="2"><result status="valid" time="0.14"/></proof>
+  </goal>
+  <goal name="VC add_limb.20" expl="postcondition" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC add_limb.20.0" expl="postcondition" proved="true">
+   <transf name="inline_all" proved="true" >
+    <goal name="VC add_limb.20.0.0" expl="postcondition" proved="true">
+    <proof prover="5" memlimit="2000"><result status="valid" time="0.03" steps="17"/></proof>
+    </goal>
+   </transf>
+   </goal>
+   <goal name="VC add_limb.20.1" expl="postcondition" proved="true">
+   <proof prover="5" memlimit="2000"><result status="valid" time="0.04" steps="25"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC add_limb.21" expl="postcondition" proved="true">
+  <proof prover="4"><result status="valid" time="0.02"/></proof>
+  <proof prover="5"><result status="valid" time="0.04" steps="25"/></proof>
+  </goal>
+  <goal name="VC add_limb.22" expl="postcondition" proved="true">
+  <proof prover="3"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC add_limb.23" expl="loop invariant init" proved="true">
+  <proof prover="4"><result status="valid" time="0.03"/></proof>
+  <proof prover="5"><result status="valid" time="0.04" steps="45"/></proof>
+  </goal>
+  <goal name="VC add_limb.24" expl="loop invariant init" proved="true">
+  <proof prover="4"><result status="valid" time="0.06"/></proof>
+  <proof prover="5"><result status="valid" time="0.08" steps="23"/></proof>
+  </goal>
+  <goal name="VC add_limb.25" expl="loop invariant init" proved="true">
+  <proof prover="4"><result status="valid" time="0.03"/></proof>
+  <proof prover="5"><result status="valid" time="0.06" steps="23"/></proof>
+  </goal>
+  <goal name="VC add_limb.26" expl="loop invariant init" proved="true">
+  <proof prover="3"><result status="valid" time="0.04"/></proof>
+  </goal>
+  <goal name="VC add_limb.27" expl="precondition" proved="true">
+  <proof prover="5"><result status="valid" time="0.03" steps="42"/></proof>
+  </goal>
+  <goal name="VC add_limb.28" expl="precondition" proved="true">
+  <proof prover="5"><result status="valid" time="0.04" steps="43"/></proof>
+  </goal>
+  <goal name="VC add_limb.29" expl="assertion" proved="true">
+  <proof prover="5"><result status="valid" time="0.08" steps="123"/></proof>
+  </goal>
+  <goal name="VC add_limb.30" expl="integer overflow" proved="true">
+  <proof prover="5"><result status="valid" time="0.07" steps="52"/></proof>
+  </goal>
+  <goal name="VC add_limb.31" expl="integer overflow" proved="true">
+  <proof prover="5"><result status="valid" time="0.04" steps="54"/></proof>
+  </goal>
+  <goal name="VC add_limb.32" expl="precondition" proved="true">
+  <proof prover="4"><result status="valid" time="0.03"/></proof>
+  <proof prover="5"><result status="valid" time="0.05" steps="44"/></proof>
+  </goal>
+  <goal name="VC add_limb.33" expl="precondition" proved="true">
+  <proof prover="3"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC add_limb.34" expl="loop variant decrease" proved="true">
+  <proof prover="1"><result status="valid" time="0.06"/></proof>
+  </goal>
+  <goal name="VC add_limb.35" expl="loop invariant preservation" proved="true">
+  <proof prover="4"><result status="valid" time="0.04"/></proof>
+  <proof prover="5"><result status="valid" time="0.02" steps="46"/></proof>
+  </goal>
+  <goal name="VC add_limb.36" expl="loop invariant preservation" proved="true">
+  <proof prover="4"><result status="valid" time="0.02"/></proof>
+  <proof prover="5"><result status="valid" time="0.05" steps="46"/></proof>
+  </goal>
+  <goal name="VC add_limb.37" expl="loop invariant preservation" proved="true">
+  <proof prover="5"><result status="valid" time="0.09" steps="87"/></proof>
+  </goal>
+  <goal name="VC add_limb.38" expl="loop invariant preservation" proved="true">
+  <proof prover="5" timelimit="1"><result status="valid" time="0.04" steps="79"/></proof>
+  </goal>
+  <goal name="VC add_limb.39" expl="postcondition" proved="true">
+  <proof prover="5" timelimit="1"><result status="valid" time="0.02" steps="32"/></proof>
+  </goal>
+  <goal name="VC add_limb.40" expl="postcondition" proved="true">
+  <proof prover="5"><result status="valid" time="0.04" steps="33"/></proof>
+  </goal>
+  <goal name="VC add_limb.41" expl="postcondition" proved="true">
+  <proof prover="3"><result status="valid" time="0.03"/></proof>
+  </goal>
+ </transf>
+ </goal>
+ <goal name="VC add_limbs" expl="VC for add_limbs" proved="true">
+ <transf name="split_goal_right" proved="true" >
+  <goal name="VC add_limbs.0" expl="integer overflow" proved="true">
+  <proof prover="4"><result status="valid" time="0.02"/></proof>
+  <proof prover="5"><result status="valid" time="0.05" steps="24"/></proof>
+  </goal>
+  <goal name="VC add_limbs.1" expl="integer overflow" proved="true">
+  <proof prover="5"><result status="valid" time="0.05" steps="25"/></proof>
+  </goal>
+  <goal name="VC add_limbs.2" expl="loop invariant init" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC add_limbs.2.0" expl="VC for add_limbs" proved="true">
+   <proof prover="5" memlimit="2000"><result status="valid" time="0.03" steps="11"/></proof>
+   </goal>
+   <goal name="VC add_limbs.2.1" expl="VC for add_limbs" proved="true">
+   <proof prover="0"><result status="valid" time="0.02"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC add_limbs.3" expl="loop invariant init" proved="true">
+  <proof prover="5"><result status="valid" time="0.03" steps="77"/></proof>
+  </goal>
+  <goal name="VC add_limbs.4" expl="loop invariant init" proved="true">
+  <proof prover="4"><result status="valid" time="0.03"/></proof>
+  <proof prover="5"><result status="valid" time="0.10" steps="14"/></proof>
+  </goal>
+  <goal name="VC add_limbs.5" expl="loop invariant init" proved="true">
+  <proof prover="3"><result status="valid" time="0.01"/></proof>
+  </goal>
+  <goal name="VC add_limbs.6" expl="precondition" proved="true">
+  <proof prover="4"><result status="valid" time="0.02"/></proof>
+  <proof prover="5"><result status="valid" time="0.04" steps="36"/></proof>
+  </goal>
+  <goal name="VC add_limbs.7" expl="precondition" proved="true">
+  <proof prover="4"><result status="valid" time="0.03"/></proof>
+  <proof prover="5"><result status="valid" time="0.07" steps="37"/></proof>
+  </goal>
+  <goal name="VC add_limbs.8" expl="precondition" proved="true">
+  <proof prover="4"><result status="valid" time="0.03"/></proof>
+  <proof prover="5"><result status="valid" time="0.08" steps="24"/></proof>
+  </goal>
+  <goal name="VC add_limbs.9" expl="precondition" proved="true">
+  <proof prover="5"><result status="valid" time="0.09" steps="41"/></proof>
+  </goal>
+  <goal name="VC add_limbs.10" expl="assertion" proved="true">
+  <proof prover="0"><result status="valid" time="0.81"/></proof>
+  </goal>
+  <goal name="VC add_limbs.11" expl="precondition" proved="true">
+  <proof prover="4"><result status="valid" time="0.06"/></proof>
+  <proof prover="5"><result status="valid" time="0.10" steps="36"/></proof>
+  </goal>
+  <goal name="VC add_limbs.12" expl="precondition" proved="true">
+  <proof prover="4"><result status="valid" time="0.04"/></proof>
+  <proof prover="5"><result status="valid" time="0.12" steps="37"/></proof>
+  </goal>
+  <goal name="VC add_limbs.13" expl="precondition" proved="true">
+  <proof prover="4"><result status="valid" time="0.01"/></proof>
+  <proof prover="5"><result status="valid" time="0.02" steps="38"/></proof>
+  </goal>
+  <goal name="VC add_limbs.14" expl="assertion" proved="true">
+  <transf name="introduce_premises" proved="true" >
+   <goal name="VC add_limbs.14.0" expl="assertion" proved="true">
+   <transf name="use_th" proved="true" arg1="lineardecision.LinearDecisionIntMP">
+    <goal name="VC add_limbs.14.0.0" expl="assertion" proved="true">
+    <transf name="reflection_f" proved="true" arg1="mp_decision">
+     <goal name="VC add_limbs.14.0.0.0" expl="assertion" proved="true">
+     <proof prover="0"><result status="valid" time="0.39"/></proof>
+     </goal>
+     <goal name="VC add_limbs.14.0.0.1" proved="true">
+     <proof prover="3"><result status="valid" time="0.23"/></proof>
+     </goal>
+     <goal name="VC add_limbs.14.0.0.2" proved="true">
+     <proof prover="3"><result status="valid" time="0.20"/></proof>
+     </goal>
+    </transf>
+    </goal>
+   </transf>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC add_limbs.15" expl="integer overflow" proved="true">
+  <proof prover="3"><result status="valid" time="0.04"/></proof>
+  </goal>
+  <goal name="VC add_limbs.16" expl="integer overflow" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC add_limbs.16.0" expl="integer overflow" proved="true">
+   <proof prover="3"><result status="valid" time="0.01"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC add_limbs.17" expl="loop variant decrease" proved="true">
+  <proof prover="4"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC add_limbs.18" expl="loop invariant preservation" proved="true">
+  <proof prover="4"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC add_limbs.19" expl="loop invariant preservation" proved="true">
+  <proof prover="0" timelimit="10"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC add_limbs.20" expl="loop invariant preservation" proved="true">
+  <proof prover="4"><result status="valid" time="0.04"/></proof>
+  </goal>
+  <goal name="VC add_limbs.21" expl="loop invariant preservation" proved="true">
+  <proof prover="2"><result status="valid" time="0.12"/></proof>
+  </goal>
+  <goal name="VC add_limbs.22" expl="postcondition" proved="true">
+  <proof prover="4"><result status="valid" time="0.03"/></proof>
+  <proof prover="5"><result status="valid" time="0.04" steps="22"/></proof>
+  </goal>
+  <goal name="VC add_limbs.23" expl="postcondition" proved="true">
+  <proof prover="5"><result status="valid" time="0.03" steps="22"/></proof>
+  </goal>
+  <goal name="VC add_limbs.24" expl="postcondition" proved="true">
+  <proof prover="3"><result status="valid" time="0.02"/></proof>
+  </goal>
+ </transf>
+ </goal>
+ <goal name="VC add" expl="VC for add" proved="true">
+ <transf name="split_goal_right" proved="true" >
+  <goal name="VC add.0" expl="integer overflow" proved="true">
+  <proof prover="4"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC add.1" expl="integer overflow" proved="true">
+  <proof prover="5"><result status="valid" time="0.04" steps="28"/></proof>
+  </goal>
+  <goal name="VC add.2" expl="loop invariant init" proved="true">
+  <proof prover="0"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC add.3" expl="loop invariant init" proved="true">
+  <proof prover="5" timelimit="1"><result status="valid" time="0.03" steps="84"/></proof>
+  </goal>
+  <goal name="VC add.4" expl="loop invariant init" proved="true">
+  <proof prover="4"><result status="valid" time="0.10"/></proof>
+  </goal>
+  <goal name="VC add.5" expl="loop invariant init" proved="true">
+  <proof prover="3"><result status="valid" time="0.01"/></proof>
+  </goal>
+  <goal name="VC add.6" expl="precondition" proved="true">
+  <proof prover="5"><result status="valid" time="0.05" steps="39"/></proof>
+  </goal>
+  <goal name="VC add.7" expl="precondition" proved="true">
+  <proof prover="4"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC add.8" expl="precondition" proved="true">
+  <proof prover="4"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC add.9" expl="precondition" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC add.9.0" expl="VC for add" proved="true">
+   <proof prover="3"><result status="valid" time="0.01"/></proof>
+   </goal>
+   <goal name="VC add.9.1" expl="VC for add" proved="true">
+   <proof prover="5" memlimit="2000"><result status="valid" time="0.04" steps="30"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC add.10" expl="assertion" proved="true">
+  <proof prover="0"><result status="valid" time="0.93"/></proof>
+  </goal>
+  <goal name="VC add.11" expl="precondition" proved="true">
+  <proof prover="4"><result status="valid" time="0.01"/></proof>
+  </goal>
+  <goal name="VC add.12" expl="precondition" proved="true">
+  <proof prover="4"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC add.13" expl="precondition" proved="true">
+  <proof prover="4"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC add.14" expl="assertion" proved="true">
+  <transf name="introduce_premises" proved="true" >
+   <goal name="VC add.14.0" expl="assertion" proved="true">
+   <transf name="use_th" proved="true" arg1="lineardecision.LinearDecisionIntMP">
+    <goal name="VC add.14.0.0" expl="assertion" proved="true">
+    <transf name="reflection_f" proved="true" arg1="mp_decision">
+     <goal name="VC add.14.0.0.0" expl="assertion" proved="true">
+     <proof prover="0"><result status="valid" time="0.39"/></proof>
+     </goal>
+     <goal name="VC add.14.0.0.1" proved="true">
+     <proof prover="3"><result status="valid" time="0.27"/></proof>
+     </goal>
+     <goal name="VC add.14.0.0.2" proved="true">
+     <proof prover="3"><result status="valid" time="0.19"/></proof>
+     </goal>
+    </transf>
+    </goal>
+   </transf>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC add.15" expl="integer overflow" proved="true">
+  <proof prover="4"><result status="valid" time="0.01"/></proof>
+  </goal>
+  <goal name="VC add.16" expl="integer overflow" proved="true">
+  <proof prover="3"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC add.17" expl="loop variant decrease" proved="true">
+  <proof prover="4"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC add.18" expl="loop invariant preservation" proved="true">
+  <proof prover="3"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC add.19" expl="loop invariant preservation" proved="true">
+  <proof prover="0" timelimit="10"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC add.20" expl="loop invariant preservation" proved="true">
+  <proof prover="4"><result status="valid" time="0.01"/></proof>
+  </goal>
+  <goal name="VC add.21" expl="loop invariant preservation" proved="true">
+  <proof prover="2"><result status="valid" time="0.13"/></proof>
+  </goal>
+  <goal name="VC add.22" expl="loop invariant init" proved="true">
+  <proof prover="5"><result status="valid" time="0.04" steps="24"/></proof>
+  </goal>
+  <goal name="VC add.23" expl="loop invariant init" proved="true">
+  <proof prover="5" timelimit="1"><result status="valid" time="0.02" steps="26"/></proof>
+  </goal>
+  <goal name="VC add.24" expl="loop invariant init" proved="true">
+  <proof prover="5"><result status="valid" time="0.07" steps="27"/></proof>
+  </goal>
+  <goal name="VC add.25" expl="loop invariant init" proved="true">
+  <proof prover="3"><result status="valid" time="0.04"/></proof>
+  </goal>
+  <goal name="VC add.26" expl="integer overflow" proved="true">
+  <proof prover="5"><result status="valid" time="0.08" steps="51"/></proof>
+  </goal>
+  <goal name="VC add.27" expl="assertion" proved="true">
+  <proof prover="4"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC add.28" expl="loop invariant init" proved="true">
+  <proof prover="4"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC add.29" expl="loop invariant init" proved="true">
+  <proof prover="4"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC add.30" expl="loop invariant init" proved="true">
+  <proof prover="4"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC add.31" expl="loop invariant init" proved="true">
+  <proof prover="3"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC add.32" expl="assertion" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC add.32.0" expl="VC for add" proved="true">
+   <proof prover="5" memlimit="2000"><result status="valid" time="0.11" steps="48"/></proof>
+   </goal>
+   <goal name="VC add.32.1" expl="VC for add" proved="true">
+   <proof prover="5" memlimit="2000"><result status="valid" time="0.08" steps="48"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC add.33" expl="precondition" proved="true">
+  <proof prover="5"><result status="valid" time="0.04" steps="63"/></proof>
+  </goal>
+  <goal name="VC add.34" expl="precondition" proved="true">
+  <proof prover="5" timelimit="1"><result status="valid" time="0.06" steps="64"/></proof>
+  </goal>
+  <goal name="VC add.35" expl="precondition" proved="true">
+  <proof prover="4"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC add.36" expl="precondition" proved="true">
+  <proof prover="4"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC add.37" expl="assertion" proved="true">
+  <proof prover="0" timelimit="10"><result status="valid" time="1.05"/></proof>
+  </goal>
+  <goal name="VC add.38" expl="assertion" proved="true">
+  <transf name="introduce_premises" proved="true" >
+   <goal name="VC add.38.0" expl="assertion" proved="true">
+   <transf name="use_th" proved="true" arg1="lineardecision.LinearDecisionIntMP">
+    <goal name="VC add.38.0.0" expl="assertion" proved="true">
+    <transf name="reflection_f" proved="true" arg1="mp_decision">
+     <goal name="VC add.38.0.0.0" expl="assertion" proved="true">
+     <proof prover="0"><result status="valid" time="0.42"/></proof>
+     </goal>
+     <goal name="VC add.38.0.0.1" proved="true">
+     <proof prover="3"><result status="valid" time="0.20"/></proof>
+     </goal>
+     <goal name="VC add.38.0.0.2" proved="true">
+     <proof prover="5" timelimit="1"><result status="valid" time="0.32" steps="188"/></proof>
+     </goal>
+    </transf>
+    </goal>
+   </transf>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC add.39" expl="integer overflow" proved="true">
+  <proof prover="5" timelimit="1"><result status="valid" time="0.06" steps="76"/></proof>
+  </goal>
+  <goal name="VC add.40" expl="integer overflow" proved="true">
+  <proof prover="5"><result status="valid" time="0.05" steps="78"/></proof>
+  </goal>
+  <goal name="VC add.41" expl="loop variant decrease" proved="true">
+  <proof prover="4"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC add.42" expl="loop invariant preservation" proved="true">
+  <proof prover="5"><result status="valid" time="0.05" steps="63"/></proof>
+  </goal>
+  <goal name="VC add.43" expl="loop invariant preservation" proved="true">
+  <proof prover="5" timelimit="1"><result status="valid" time="0.06" steps="65"/></proof>
+  </goal>
+  <goal name="VC add.44" expl="loop invariant preservation" proved="true">
+  <proof prover="5"><result status="valid" time="0.03" steps="65"/></proof>
+  </goal>
+  <goal name="VC add.45" expl="loop invariant preservation" proved="true">
+  <proof prover="5" timelimit="1"><result status="valid" time="0.10" steps="106"/></proof>
+  </goal>
+  <goal name="VC add.46" expl="postcondition" proved="true">
+  <proof prover="5" timelimit="1"><result status="valid" time="0.03" steps="48"/></proof>
+  </goal>
+  <goal name="VC add.47" expl="postcondition" proved="true">
+  <proof prover="3"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC add.48" expl="postcondition" proved="true">
+  <proof prover="4"><result status="valid" time="0.04"/></proof>
+  </goal>
+  <goal name="VC add.49" expl="precondition" proved="true">
+  <proof prover="4"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC add.50" expl="precondition" proved="true">
+  <proof prover="5"><result status="valid" time="0.05" steps="39"/></proof>
+  </goal>
+  <goal name="VC add.51" expl="precondition" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC add.51.0" expl="VC for add" proved="true">
+   <proof prover="0"><result status="valid" time="5.70"/></proof>
+   </goal>
+   <goal name="VC add.51.1" expl="VC for add" proved="true">
+   <proof prover="3"><result status="valid" time="0.04"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC add.52" expl="assertion" proved="true">
+  <proof prover="5"><result status="valid" time="0.21" steps="156"/></proof>
+  </goal>
+  <goal name="VC add.53" expl="precondition" proved="true">
+  <proof prover="4"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC add.54" expl="precondition" proved="true">
+  <proof prover="4"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC add.55" expl="assertion" proved="true">
+  <transf name="introduce_premises" proved="true" >
+   <goal name="VC add.55.0" expl="assertion" proved="true">
+   <transf name="use_th" proved="true" arg1="lineardecision.LinearDecisionIntMP">
+    <goal name="VC add.55.0.0" expl="assertion" proved="true">
+    <transf name="reflection_f" proved="true" arg1="mp_decision">
+     <goal name="VC add.55.0.0.0" expl="assertion" proved="true">
+     <proof prover="0"><result status="valid" time="0.24"/></proof>
+     </goal>
+     <goal name="VC add.55.0.0.1" proved="true">
+     <proof prover="3"><result status="valid" time="0.19"/></proof>
+     </goal>
+     <goal name="VC add.55.0.0.2" proved="true">
+     <proof prover="2"><result status="valid" time="0.17"/></proof>
+     </goal>
+    </transf>
+    </goal>
+   </transf>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC add.56" expl="integer overflow" proved="true">
+  <proof prover="4"><result status="valid" time="0.00"/></proof>
+  </goal>
+  <goal name="VC add.57" expl="integer overflow" proved="true">
+  <proof prover="5"><result status="valid" time="0.67" steps="72"/></proof>
+  </goal>
+  <goal name="VC add.58" expl="loop variant decrease" proved="true">
+  <proof prover="3"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC add.59" expl="loop invariant preservation" proved="true">
+  <proof prover="3"><result status="valid" time="0.05"/></proof>
+  </goal>
+  <goal name="VC add.60" expl="loop invariant preservation" proved="true">
+  <proof prover="0" timelimit="10"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC add.61" expl="loop invariant preservation" proved="true">
+  <proof prover="3"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC add.62" expl="loop invariant preservation" proved="true">
+  <proof prover="2"><result status="valid" time="0.16"/></proof>
+  </goal>
+  <goal name="VC add.63" expl="assertion" proved="true">
+  <proof prover="4"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC add.64" expl="loop invariant init" proved="true">
+  <proof prover="4"><result status="valid" time="0.06"/></proof>
+  </goal>
+  <goal name="VC add.65" expl="loop invariant init" proved="true">
+  <proof prover="5"><result status="valid" time="0.06" steps="36"/></proof>
+  </goal>
+  <goal name="VC add.66" expl="loop invariant init" proved="true">
+  <proof prover="5"><result status="valid" time="0.07" steps="36"/></proof>
+  </goal>
+  <goal name="VC add.67" expl="loop invariant init" proved="true">
+  <proof prover="3"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC add.68" expl="assertion" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC add.68.0" expl="VC for add" proved="true">
+   <proof prover="5"><result status="valid" time="0.10" steps="45"/></proof>
+   </goal>
+   <goal name="VC add.68.1" expl="VC for add" proved="true">
+   <proof prover="5" memlimit="2000"><result status="valid" time="0.10" steps="46"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC add.69" expl="precondition" proved="true">
+  <proof prover="5"><result status="valid" time="0.07" steps="61"/></proof>
+  </goal>
+  <goal name="VC add.70" expl="precondition" proved="true">
+  <proof prover="5" timelimit="1"><result status="valid" time="0.06" steps="62"/></proof>
+  </goal>
+  <goal name="VC add.71" expl="precondition" proved="true">
+  <proof prover="4"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC add.72" expl="precondition" proved="true">
+  <proof prover="4"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC add.73" expl="assertion" proved="true">
+  <proof prover="0" timelimit="10"><result status="valid" time="1.10"/></proof>
+  </goal>
+  <goal name="VC add.74" expl="assertion" proved="true">
+  <transf name="introduce_premises" proved="true" >
+   <goal name="VC add.74.0" expl="assertion" proved="true">
+   <transf name="use_th" proved="true" arg1="lineardecision.LinearDecisionIntMP">
+    <goal name="VC add.74.0.0" expl="assertion" proved="true">
+    <transf name="reflection_f" proved="true" arg1="mp_decision">
+     <goal name="VC add.74.0.0.0" expl="assertion" proved="true">
+     <proof prover="0"><result status="valid" time="0.22"/></proof>
+     </goal>
+     <goal name="VC add.74.0.0.1" proved="true">
+     <proof prover="3"><result status="valid" time="0.30"/></proof>
+     </goal>
+     <goal name="VC add.74.0.0.2" proved="true">
+     <proof prover="5" timelimit="1"><result status="valid" time="0.23" steps="186"/></proof>
+     </goal>
+    </transf>
+    </goal>
+   </transf>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC add.75" expl="integer overflow" proved="true">
+  <proof prover="5"><result status="valid" time="0.06" steps="74"/></proof>
+  </goal>
+  <goal name="VC add.76" expl="integer overflow" proved="true">
+  <proof prover="4"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC add.77" expl="loop variant decrease" proved="true">
+  <proof prover="4"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC add.78" expl="loop invariant preservation" proved="true">
+  <proof prover="4"><result status="valid" time="0.04"/></proof>
+  </goal>
+  <goal name="VC add.79" expl="loop invariant preservation" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC add.79.0" expl="loop invariant preservation" proved="true">
+   <proof prover="5" timelimit="1"><result status="valid" time="0.04" steps="63"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC add.80" expl="loop invariant preservation" proved="true">
+  <proof prover="0" timelimit="10"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC add.81" expl="loop invariant preservation" proved="true">
+  <proof prover="5" timelimit="1"><result status="valid" time="0.12" steps="104"/></proof>
+  </goal>
+  <goal name="VC add.82" expl="postcondition" proved="true">
+  <proof prover="5"><result status="valid" time="0.04" steps="45"/></proof>
+  </goal>
+  <goal name="VC add.83" expl="postcondition" proved="true">
+  <proof prover="3"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC add.84" expl="postcondition" proved="true">
+  <proof prover="4"><result status="valid" time="0.02"/></proof>
+  </goal>
+ </transf>
+ </goal>
+ <goal name="VC add_in_place" expl="VC for add_in_place" proved="true">
+ <transf name="split_goal_right" proved="true" >
+  <goal name="VC add_in_place.0" expl="integer overflow" proved="true">
+  <proof prover="5" memlimit="2000"><result status="valid" time="0.04" steps="22"/></proof>
+  </goal>
+  <goal name="VC add_in_place.1" expl="integer overflow" proved="true">
+  <proof prover="5" memlimit="2000"><result status="valid" time="0.03" steps="23"/></proof>
+  </goal>
+  <goal name="VC add_in_place.2" expl="loop invariant init" proved="true">
+  <proof prover="5" memlimit="2000"><result status="valid" time="0.04" steps="12"/></proof>
+  </goal>
+  <goal name="VC add_in_place.3" expl="loop invariant init" proved="true">
+  <proof prover="5" memlimit="2000"><result status="valid" time="0.04" steps="70"/></proof>
+  </goal>
+  <goal name="VC add_in_place.4" expl="loop invariant init" proved="true">
+  <proof prover="2" timelimit="5" memlimit="2000"><result status="valid" time="0.09"/></proof>
+  </goal>
+  <goal name="VC add_in_place.5" expl="loop invariant init" proved="true">
+  <proof prover="0"><result status="valid" time="0.01"/></proof>
+  </goal>
+  <goal name="VC add_in_place.6" expl="loop invariant init" proved="true">
+  <proof prover="5" memlimit="2000"><result status="valid" time="0.03" steps="6"/></proof>
+  </goal>
+  <goal name="VC add_in_place.7" expl="precondition" proved="true">
+  <proof prover="5" memlimit="2000"><result status="valid" time="0.04" steps="34"/></proof>
+  </goal>
+  <goal name="VC add_in_place.8" expl="assertion" proved="true">
+  <proof prover="5" memlimit="2000"><result status="valid" time="0.03" steps="50"/></proof>
+  </goal>
+  <goal name="VC add_in_place.9" expl="precondition" proved="true">
+  <proof prover="5" memlimit="2000"><result status="valid" time="0.04" steps="36"/></proof>
+  </goal>
+  <goal name="VC add_in_place.10" expl="precondition" proved="true">
+  <proof prover="5" memlimit="2000"><result status="valid" time="0.02" steps="26"/></proof>
+  </goal>
+  <goal name="VC add_in_place.11" expl="precondition" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC add_in_place.11.0" expl="VC for add_in_place" proved="true">
+   <proof prover="5" timelimit="1"><result status="valid" time="0.02" steps="30"/></proof>
+   </goal>
+   <goal name="VC add_in_place.11.1" expl="VC for add_in_place" proved="true">
+   <proof prover="2"><result status="valid" time="0.12"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC add_in_place.12" expl="assertion" proved="true">
+  <proof prover="5" timelimit="1"><result status="valid" time="0.02" steps="62"/></proof>
+  </goal>
+  <goal name="VC add_in_place.13" expl="assertion" proved="true">
+  <proof prover="0"><result status="valid" time="1.08"/></proof>
+  </goal>
+  <goal name="VC add_in_place.14" expl="precondition" proved="true">
+  <proof prover="5" memlimit="2000"><result status="valid" time="0.08" steps="38"/></proof>
+  </goal>
+  <goal name="VC add_in_place.15" expl="precondition" proved="true">
+  <proof prover="3"><result status="valid" time="0.04"/></proof>
+  </goal>
+  <goal name="VC add_in_place.16" expl="precondition" proved="true">
+  <proof prover="3"><result status="valid" time="0.01"/></proof>
+  </goal>
+  <goal name="VC add_in_place.17" expl="assertion" proved="true">
+  <transf name="introduce_premises" proved="true" >
+   <goal name="VC add_in_place.17.0" expl="assertion" proved="true">
+   <transf name="use_th" proved="true" arg1="lineardecision.LinearDecisionIntMP">
+    <goal name="VC add_in_place.17.0.0" expl="assertion" proved="true">
+    <transf name="reflection_f" proved="true" arg1="mp_decision">
+     <goal name="VC add_in_place.17.0.0.0" expl="assertion" proved="true">
+     <proof prover="0"><result status="valid" time="0.18"/></proof>
+     </goal>
+     <goal name="VC add_in_place.17.0.0.1" proved="true">
+     <proof prover="3"><result status="valid" time="0.28"/></proof>
+     </goal>
+     <goal name="VC add_in_place.17.0.0.2" proved="true">
+     <proof prover="3"><result status="valid" time="0.22"/></proof>
+     </goal>
+    </transf>
+    </goal>
+   </transf>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC add_in_place.18" expl="integer overflow" proved="true">
+  <proof prover="2" timelimit="5" memlimit="2000"><result status="valid" time="0.05"/></proof>
+  </goal>
+  <goal name="VC add_in_place.19" expl="integer overflow" proved="true">
+  <proof prover="3"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC add_in_place.20" expl="loop variant decrease" proved="true">
+  <proof prover="3"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC add_in_place.21" expl="loop invariant preservation" proved="true">
+  <proof prover="3"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC add_in_place.22" expl="loop invariant preservation" proved="true">
+  <proof prover="0" timelimit="10"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC add_in_place.23" expl="loop invariant preservation" proved="true">
+  <proof prover="3"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC add_in_place.24" expl="loop invariant preservation" proved="true">
+  <proof prover="0"><result status="valid" time="0.39"/></proof>
+  </goal>
+  <goal name="VC add_in_place.25" expl="loop invariant preservation" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC add_in_place.25.0" expl="loop invariant preservation" proved="true">
+   <proof prover="2"><result status="valid" time="0.08"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC add_in_place.26" expl="loop invariant init" proved="true">
+  <proof prover="2" timelimit="5" memlimit="2000"><result status="valid" time="0.06"/></proof>
+  </goal>
+  <goal name="VC add_in_place.27" expl="loop invariant init" proved="true">
+  <proof prover="5" memlimit="2000"><result status="valid" time="0.05" steps="25"/></proof>
+  </goal>
+  <goal name="VC add_in_place.28" expl="loop invariant init" proved="true">
+  <proof prover="2" timelimit="5" memlimit="2000"><result status="valid" time="0.07"/></proof>
+  </goal>
+  <goal name="VC add_in_place.29" expl="loop invariant init" proved="true">
+  <proof prover="5" memlimit="2000"><result status="valid" time="0.02" steps="53"/></proof>
+  </goal>
+  <goal name="VC add_in_place.30" expl="loop invariant init" proved="true">
+  <transf name="introduce_premises" proved="true" >
+   <goal name="VC add_in_place.30.0" expl="loop invariant init" proved="true">
+   <transf name="inline_goal" proved="true" >
+    <goal name="VC add_in_place.30.0.0" expl="loop invariant init" proved="true">
+    <proof prover="5" memlimit="2000"><result status="valid" time="0.03" steps="51"/></proof>
+    </goal>
+   </transf>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC add_in_place.31" expl="assertion" proved="true">
+  <proof prover="5" memlimit="2000"><result status="valid" time="0.02" steps="36"/></proof>
+  </goal>
+  <goal name="VC add_in_place.32" expl="assertion" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC add_in_place.32.0" expl="assertion" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC add_in_place.32.1" expl="assertion" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC add_in_place.32.2" expl="VC for add_in_place" proved="true">
+   <proof prover="5" timelimit="1"><result status="valid" time="0.02" steps="66"/></proof>
+   </goal>
+   <goal name="VC add_in_place.32.3" expl="VC for add_in_place" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC add_in_place.33" expl="precondition" proved="true">
+  <proof prover="5" memlimit="2000"><result status="valid" time="0.04" steps="78"/></proof>
+  </goal>
+  <goal name="VC add_in_place.34" expl="precondition" proved="true">
+  <proof prover="3"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC add_in_place.35" expl="precondition" proved="true">
+  <proof prover="5" timelimit="50" memlimit="2000"><result status="valid" time="0.04" steps="39"/></proof>
+  </goal>
+  <goal name="VC add_in_place.36" expl="assertion" proved="true">
+  <proof prover="5" memlimit="2000"><result status="valid" time="0.03" steps="69"/></proof>
+  </goal>
+  <goal name="VC add_in_place.37" expl="postcondition" proved="true">
+  <proof prover="5" timelimit="50" memlimit="2000"><result status="valid" time="0.03" steps="41"/></proof>
+  </goal>
+  <goal name="VC add_in_place.38" expl="postcondition" proved="true">
+  <proof prover="5" memlimit="2000"><result status="valid" time="0.04" steps="42"/></proof>
+  </goal>
+  <goal name="VC add_in_place.39" expl="postcondition" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC add_in_place.39.0" expl="postcondition" proved="true">
+   <proof prover="0"><result status="valid" time="0.05"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC add_in_place.40" expl="precondition" proved="true">
+  <proof prover="2" timelimit="5" memlimit="2000"><result status="valid" time="0.07"/></proof>
+  </goal>
+  <goal name="VC add_in_place.41" expl="assertion" proved="true">
+  <proof prover="5" memlimit="2000"><result status="valid" time="0.04" steps="63"/></proof>
+  </goal>
+  <goal name="VC add_in_place.42" expl="precondition" proved="true">
+  <proof prover="5" memlimit="2000"><result status="valid" time="0.06" steps="38"/></proof>
+  </goal>
+  <goal name="VC add_in_place.43" expl="precondition" proved="true">
+  <proof prover="5" memlimit="2000"><result status="valid" time="0.04" steps="41"/></proof>
+  </goal>
+  <goal name="VC add_in_place.44" expl="precondition" proved="true">
+  <proof prover="5" memlimit="2000"><result status="valid" time="0.04" steps="42"/></proof>
+  </goal>
+  <goal name="VC add_in_place.45" expl="precondition" proved="true">
+  <proof prover="5" memlimit="2000"><result status="valid" time="0.04" steps="53"/></proof>
+  </goal>
+  <goal name="VC add_in_place.46" expl="assertion" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC add_in_place.46.0" expl="assertion" proved="true">
+   <proof prover="5" timelimit="1"><result status="valid" time="0.25" steps="149"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC add_in_place.47" expl="assertion" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC add_in_place.47.0" expl="assertion" proved="true">
+   <proof prover="5" memlimit="2000"><result status="valid" time="0.05" steps="81"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC add_in_place.48" expl="precondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.05"/></proof>
+  </goal>
+  <goal name="VC add_in_place.49" expl="precondition" proved="true">
+  <proof prover="5" memlimit="2000"><result status="valid" time="0.03" steps="52"/></proof>
+  </goal>
+  <goal name="VC add_in_place.50" expl="assertion" proved="true">
+  <transf name="introduce_premises" proved="true" >
+   <goal name="VC add_in_place.50.0" expl="assertion" proved="true">
+   <transf name="use_th" proved="true" arg1="lineardecision.LinearDecisionIntMP">
+    <goal name="VC add_in_place.50.0.0" expl="assertion" proved="true">
+    <transf name="reflection_f" proved="true" arg1="mp_decision">
+     <goal name="VC add_in_place.50.0.0.0" expl="assertion" proved="true">
+     <proof prover="0"><result status="valid" time="0.34"/></proof>
+     </goal>
+     <goal name="VC add_in_place.50.0.0.1" proved="true">
+     <proof prover="3"><result status="valid" time="0.20"/></proof>
+     </goal>
+     <goal name="VC add_in_place.50.0.0.2" proved="true">
+     <proof prover="2"><result status="valid" time="0.31"/></proof>
+     </goal>
+    </transf>
+    </goal>
+   </transf>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC add_in_place.51" expl="integer overflow" proved="true">
+  <proof prover="5" memlimit="2000"><result status="valid" time="0.13" steps="66"/></proof>
+  </goal>
+  <goal name="VC add_in_place.52" expl="integer overflow" proved="true">
+  <proof prover="2" timelimit="5" memlimit="2000"><result status="valid" time="0.17"/></proof>
+  </goal>
+  <goal name="VC add_in_place.53" expl="loop variant decrease" proved="true">
+  <proof prover="3"><result status="valid" time="0.05"/></proof>
+  </goal>
+  <goal name="VC add_in_place.54" expl="loop invariant preservation" proved="true">
+  <proof prover="3"><result status="valid" time="0.06"/></proof>
+  </goal>
+  <goal name="VC add_in_place.55" expl="loop invariant preservation" proved="true">
+  <proof prover="5" timelimit="1"><result status="valid" time="0.26" steps="59"/></proof>
+  </goal>
+  <goal name="VC add_in_place.56" expl="loop invariant preservation" proved="true">
+  <proof prover="3"><result status="valid" time="0.05"/></proof>
+  </goal>
+  <goal name="VC add_in_place.57" expl="loop invariant preservation" proved="true">
+  <proof prover="0" timelimit="10"><result status="valid" time="0.43"/></proof>
+  </goal>
+  <goal name="VC add_in_place.58" expl="loop invariant preservation" proved="true">
+  <proof prover="2"><result status="valid" time="0.10"/></proof>
+  </goal>
+  <goal name="VC add_in_place.59" expl="assertion" proved="true">
+  <proof prover="5" memlimit="2000"><result status="valid" time="0.04" steps="99"/></proof>
+  </goal>
+  <goal name="VC add_in_place.60" expl="postcondition" proved="true">
+  <proof prover="5" memlimit="2000"><result status="valid" time="0.03" steps="35"/></proof>
+  </goal>
+  <goal name="VC add_in_place.61" expl="postcondition" proved="true">
+  <proof prover="5" memlimit="2000"><result status="valid" time="0.04" steps="36"/></proof>
+  </goal>
+  <goal name="VC add_in_place.62" expl="postcondition" proved="true">
+  <proof prover="5" memlimit="2000"><result status="valid" time="0.04" steps="61"/></proof>
+  </goal>
+ </transf>
+ </goal>
+ <goal name="VC incr" expl="VC for incr" proved="true">
+ <transf name="split_goal_right" proved="true" >
+  <goal name="VC incr.0" expl="loop invariant init" proved="true">
+  <proof prover="3"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC incr.1" expl="loop invariant init" proved="true">
+  <proof prover="3"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC incr.2" expl="loop invariant init" proved="true">
+  <proof prover="3"><result status="valid" time="0.01"/></proof>
+  </goal>
+  <goal name="VC incr.3" expl="loop invariant init" proved="true">
+  <proof prover="5" timelimit="1"><result status="valid" time="0.01" steps="26"/></proof>
+  </goal>
+  <goal name="VC incr.4" expl="loop invariant init" proved="true">
+  <proof prover="3"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC incr.5" expl="loop invariant init" proved="true">
+  <proof prover="3"><result status="valid" time="0.01"/></proof>
+  </goal>
+  <goal name="VC incr.6" expl="precondition" proved="true">
+  <proof prover="5" timelimit="1"><result status="valid" time="0.06" steps="98"/></proof>
+  </goal>
+  <goal name="VC incr.7" expl="assertion" proved="true">
+  <proof prover="5" timelimit="1"><result status="valid" time="0.01" steps="38"/></proof>
+  </goal>
+  <goal name="VC incr.8" expl="precondition" proved="true">
+  <proof prover="3"><result status="valid" time="0.01"/></proof>
+  </goal>
+  <goal name="VC incr.9" expl="assertion" proved="true">
+  <proof prover="3"><result status="valid" time="0.04"/></proof>
+  </goal>
+  <goal name="VC incr.10" expl="precondition" proved="true">
+  <proof prover="3"><result status="valid" time="0.04"/></proof>
+  </goal>
+  <goal name="VC incr.11" expl="precondition" proved="true">
+  <proof prover="3"><result status="valid" time="0.01"/></proof>
+  </goal>
+  <goal name="VC incr.12" expl="precondition" proved="true">
+  <proof prover="5" timelimit="1"><result status="valid" time="0.05" steps="129"/></proof>
+  </goal>
+  <goal name="VC incr.13" expl="assertion" proved="true">
+  <proof prover="5" timelimit="1"><result status="valid" time="0.02" steps="51"/></proof>
+  </goal>
+  <goal name="VC incr.14" expl="assertion" proved="true">
+  <proof prover="0"><result status="valid" time="1.06"/></proof>
+  </goal>
+  <goal name="VC incr.15" expl="precondition" proved="true">
+  <proof prover="3"><result status="valid" time="0.01"/></proof>
+  </goal>
+  <goal name="VC incr.16" expl="precondition" proved="true">
+  <proof prover="3"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC incr.17" expl="assertion" proved="true">
+  <transf name="introduce_premises" proved="true" >
+   <goal name="VC incr.17.0" expl="assertion" proved="true">
+   <transf name="use_th" proved="true" arg1="lineardecision.LinearDecisionIntMP">
+    <goal name="VC incr.17.0.0" expl="assertion" proved="true">
+    <transf name="reflection_f" proved="true" arg1="mp_decision">
+     <goal name="VC incr.17.0.0.0" expl="assertion" proved="true">
+     <proof prover="0"><result status="valid" time="0.35"/></proof>
+     </goal>
+     <goal name="VC incr.17.0.0.1" proved="true">
+     <proof prover="3"><result status="valid" time="0.27"/></proof>
+     </goal>
+     <goal name="VC incr.17.0.0.2" proved="true">
+     <proof prover="3"><result status="valid" time="0.24"/></proof>
+     </goal>
+    </transf>
+    </goal>
+   </transf>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC incr.18" expl="integer overflow" proved="true">
+  <proof prover="3"><result status="valid" time="0.25"/></proof>
+  </goal>
+  <goal name="VC incr.19" expl="assertion" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC incr.19.0" expl="assertion" proved="true">
+   <proof prover="0"><result status="valid" time="0.04"/></proof>
+   </goal>
+   <goal name="VC incr.19.1" expl="VC for incr" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC incr.19.2" expl="VC for incr" proved="true">
+   <proof prover="3"><result status="valid" time="0.12"/></proof>
+   </goal>
+   <goal name="VC incr.19.3" expl="VC for incr" proved="true">
+   <proof prover="3"><result status="valid" time="0.04"/></proof>
+   </goal>
+   <goal name="VC incr.19.4" expl="VC for incr" proved="true">
+   <proof prover="3"><result status="valid" time="0.08"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC incr.20" expl="loop variant decrease" proved="true">
+  <proof prover="3"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC incr.21" expl="loop invariant preservation" proved="true">
+  <proof prover="2"><result status="valid" time="0.06"/></proof>
+  </goal>
+  <goal name="VC incr.22" expl="loop invariant preservation" proved="true">
+  <proof prover="3"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC incr.23" expl="loop invariant preservation" proved="true">
+  <proof prover="3"><result status="valid" time="0.01"/></proof>
+  </goal>
+  <goal name="VC incr.24" expl="loop invariant preservation" proved="true">
+  <proof prover="0"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC incr.25" expl="loop invariant preservation" proved="true">
+  <transf name="introduce_premises" proved="true" >
+   <goal name="VC incr.25.0" expl="loop invariant preservation" proved="true">
+   <transf name="apply" proved="true" arg1="H14">
+    <goal name="VC incr.25.0.0" proved="true">
+    <proof prover="3"><result status="valid" time="0.04"/></proof>
+    </goal>
+   </transf>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC incr.26" expl="loop invariant preservation" proved="true">
+  <proof prover="2"><result status="valid" time="0.08"/></proof>
+  </goal>
+  <goal name="VC incr.27" expl="precondition" proved="true">
+  <proof prover="3"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC incr.28" expl="precondition" proved="true">
+  <proof prover="3"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC incr.29" expl="assertion" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC incr.29.0" expl="assertion" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC incr.29.1" expl="assertion" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC incr.29.2" expl="VC for incr" proved="true">
+   <proof prover="5" timelimit="1"><result status="valid" time="0.02" steps="39"/></proof>
+   </goal>
+   <goal name="VC incr.29.3" expl="VC for incr" proved="true">
+   <proof prover="3"><result status="valid" time="0.03"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC incr.30" expl="precondition" proved="true">
+  <transf name="introduce_premises" proved="true" >
+   <goal name="VC incr.30.0" expl="precondition" proved="true">
+   <transf name="inline_goal" proved="true" >
+    <goal name="VC incr.30.0.0" expl="precondition" proved="true">
+    <proof prover="3"><result status="valid" time="0.01"/></proof>
+    </goal>
+   </transf>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC incr.31" expl="postcondition" proved="true">
+  <proof prover="5" timelimit="1"><result status="valid" time="0.02" steps="23"/></proof>
+  </goal>
+  <goal name="VC incr.32" expl="postcondition" proved="true">
+  <proof prover="3"><result status="valid" time="0.02"/></proof>
+  </goal>
+ </transf>
+ </goal>
+ <goal name="VC incr_1" expl="VC for incr_1" proved="true">
+ <transf name="split_vc" proved="true" >
+  <goal name="VC incr_1.0" expl="loop invariant init" proved="true">
+  <proof prover="3"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC incr_1.1" expl="loop invariant init" proved="true">
+  <proof prover="3"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC incr_1.2" expl="loop invariant init" proved="true">
+  <proof prover="3"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC incr_1.3" expl="loop invariant init" proved="true">
+  <proof prover="3"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC incr_1.4" expl="loop invariant init" proved="true">
+  <proof prover="3"><result status="valid" time="0.04"/></proof>
+  </goal>
+  <goal name="VC incr_1.5" expl="loop invariant init" proved="true">
+  <proof prover="5" timelimit="1"><result status="valid" time="0.09" steps="20"/></proof>
+  </goal>
+  <goal name="VC incr_1.6" expl="loop invariant init" proved="true">
+  <proof prover="5" timelimit="1"><result status="valid" time="0.06" steps="18"/></proof>
+  </goal>
+  <goal name="VC incr_1.7" expl="precondition" proved="true">
+  <proof prover="5" timelimit="1"><result status="valid" time="0.04" steps="90"/></proof>
+  </goal>
+  <goal name="VC incr_1.8" expl="assertion" proved="true">
+  <proof prover="5" timelimit="1"><result status="valid" time="0.01" steps="40"/></proof>
+  </goal>
+  <goal name="VC incr_1.9" expl="assertion" proved="true">
+  <proof prover="5" timelimit="1"><result status="valid" time="0.02" steps="52"/></proof>
+  </goal>
+  <goal name="VC incr_1.10" expl="precondition" proved="true">
+  <proof prover="3"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC incr_1.11" expl="precondition" proved="true">
+  <proof prover="3"><result status="valid" time="0.01"/></proof>
+  </goal>
+  <goal name="VC incr_1.12" expl="precondition" proved="true">
+  <proof prover="5" timelimit="1"><result status="valid" time="0.04" steps="131"/></proof>
+  </goal>
+  <goal name="VC incr_1.13" expl="assertion" proved="true">
+  <proof prover="5" timelimit="1"><result status="valid" time="0.02" steps="55"/></proof>
+  </goal>
+  <goal name="VC incr_1.14" expl="assertion" proved="true">
+  <proof prover="5" timelimit="1"><result status="valid" time="0.09" steps="117"/></proof>
+  </goal>
+  <goal name="VC incr_1.15" expl="precondition" proved="true">
+  <proof prover="3"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC incr_1.16" expl="precondition" proved="true">
+  <proof prover="3"><result status="valid" time="0.01"/></proof>
+  </goal>
+  <goal name="VC incr_1.17" expl="assertion" proved="true">
+  <proof prover="5" timelimit="1"><result status="valid" time="0.04" steps="55"/></proof>
+  </goal>
+  <goal name="VC incr_1.18" expl="integer overflow" proved="true">
+  <proof prover="3"><result status="valid" time="0.32"/></proof>
+  </goal>
+  <goal name="VC incr_1.19" expl="assertion" proved="true">
+  <transf name="split_vc" proved="true" >
+   <goal name="VC incr_1.19.0" expl="VC for incr_1" proved="true">
+   <proof prover="5" timelimit="1"><result status="valid" time="0.02" steps="47"/></proof>
+   </goal>
+   <goal name="VC incr_1.19.1" expl="VC for incr_1" proved="true">
+   <proof prover="3"><result status="valid" time="0.01"/></proof>
+   </goal>
+   <goal name="VC incr_1.19.2" expl="VC for incr_1" proved="true">
+   <proof prover="3"><result status="valid" time="0.03"/></proof>
+   </goal>
+   <goal name="VC incr_1.19.3" expl="VC for incr_1" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC incr_1.19.4" expl="VC for incr_1" proved="true">
+   <proof prover="3"><result status="valid" time="0.07"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC incr_1.20" expl="loop variant decrease" proved="true">
+  <proof prover="3"><result status="valid" time="0.04"/></proof>
+  </goal>
+  <goal name="VC incr_1.21" expl="loop invariant preservation" proved="true">
+  <proof prover="5" timelimit="1"><result status="valid" time="0.07" steps="123"/></proof>
+  </goal>
+  <goal name="VC incr_1.22" expl="loop invariant preservation" proved="true">
+  <proof prover="3"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC incr_1.23" expl="loop invariant preservation" proved="true">
+  <proof prover="3"><result status="valid" time="0.04"/></proof>
+  </goal>
+  <goal name="VC incr_1.24" expl="loop invariant preservation" proved="true">
+  <proof prover="3"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC incr_1.25" expl="loop invariant preservation" proved="true">
+  <proof prover="5" timelimit="1"><result status="valid" time="0.02" steps="51"/></proof>
+  </goal>
+  <goal name="VC incr_1.26" expl="loop invariant preservation" proved="true">
+  <proof prover="5" timelimit="1"><result status="valid" time="0.02" steps="67"/></proof>
+  </goal>
+  <goal name="VC incr_1.27" expl="loop invariant preservation" proved="true">
+  <proof prover="5" timelimit="1"><result status="valid" time="0.07" steps="70"/></proof>
+  </goal>
+  <goal name="VC incr_1.28" expl="assertion" proved="true">
+  <proof prover="5" timelimit="1"><result status="valid" time="0.02" steps="53"/></proof>
+  </goal>
+  <goal name="VC incr_1.29" expl="precondition" proved="true">
+  <proof prover="3"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC incr_1.30" expl="precondition" proved="true">
+  <proof prover="3"><result status="valid" time="0.01"/></proof>
+  </goal>
+  <goal name="VC incr_1.31" expl="precondition" proved="true">
+  <proof prover="5" timelimit="1"><result status="valid" time="0.05" steps="132"/></proof>
+  </goal>
+  <goal name="VC incr_1.32" expl="assertion" proved="true">
+  <proof prover="5" timelimit="1"><result status="valid" time="0.02" steps="56"/></proof>
+  </goal>
+  <goal name="VC incr_1.33" expl="assertion" proved="true">
+  <proof prover="5" timelimit="1"><result status="valid" time="0.11" steps="115"/></proof>
+  </goal>
+  <goal name="VC incr_1.34" expl="precondition" proved="true">
+  <proof prover="3"><result status="valid" time="0.01"/></proof>
+  </goal>
+  <goal name="VC incr_1.35" expl="precondition" proved="true">
+  <proof prover="3"><result status="valid" time="0.01"/></proof>
+  </goal>
+  <goal name="VC incr_1.36" expl="assertion" proved="true">
+  <proof prover="5" timelimit="1"><result status="valid" time="0.03" steps="43"/></proof>
+  </goal>
+  <goal name="VC incr_1.37" expl="integer overflow" proved="true">
+  <proof prover="3"><result status="valid" time="0.44"/></proof>
+  </goal>
+  <goal name="VC incr_1.38" expl="assertion" proved="true">
+  <proof prover="3"><result status="valid" time="0.05"/></proof>
+  </goal>
+  <goal name="VC incr_1.39" expl="loop variant decrease" proved="true">
+  <proof prover="3"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC incr_1.40" expl="loop invariant preservation" proved="true">
+  <proof prover="5" timelimit="1"><result status="valid" time="0.06" steps="123"/></proof>
+  </goal>
+  <goal name="VC incr_1.41" expl="loop invariant preservation" proved="true">
+  <proof prover="3"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC incr_1.42" expl="loop invariant preservation" proved="true">
+  <proof prover="3"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC incr_1.43" expl="loop invariant preservation" proved="true">
+  <proof prover="3"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC incr_1.44" expl="loop invariant preservation" proved="true">
+  <proof prover="5" timelimit="1"><result status="valid" time="0.05" steps="51"/></proof>
+  </goal>
+  <goal name="VC incr_1.45" expl="loop invariant preservation" proved="true">
+  <proof prover="5" timelimit="1"><result status="valid" time="0.04" steps="67"/></proof>
+  </goal>
+  <goal name="VC incr_1.46" expl="loop invariant preservation" proved="true">
+  <proof prover="5" timelimit="1"><result status="valid" time="0.03" steps="70"/></proof>
+  </goal>
+  <goal name="VC incr_1.47" expl="precondition" proved="true">
+  <proof prover="3"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC incr_1.48" expl="precondition" proved="true">
+  <proof prover="3"><result status="valid" time="0.01"/></proof>
+  </goal>
+  <goal name="VC incr_1.49" expl="assertion" proved="true">
+  <transf name="split_vc" proved="true" >
+   <goal name="VC incr_1.49.0" expl="VC for incr_1" proved="true">
+   <proof prover="3"><result status="valid" time="0.03"/></proof>
+   </goal>
+   <goal name="VC incr_1.49.1" expl="VC for incr_1" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC incr_1.49.2" expl="VC for incr_1" proved="true">
+   <proof prover="5" timelimit="1"><result status="valid" time="0.02" steps="44"/></proof>
+   </goal>
+   <goal name="VC incr_1.49.3" expl="VC for incr_1" proved="true">
+   <proof prover="3"><result status="valid" time="0.01"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC incr_1.50" expl="precondition" proved="true">
+  <proof prover="3"><result status="valid" time="0.04"/></proof>
+  </goal>
+  <goal name="VC incr_1.51" expl="postcondition" proved="true">
+  <proof prover="5" timelimit="1"><result status="valid" time="0.02" steps="26"/></proof>
+  </goal>
+  <goal name="VC incr_1.52" expl="postcondition" proved="true">
+  <proof prover="5" timelimit="1"><result status="valid" time="0.06" steps="40"/></proof>
+  </goal>
+ </transf>
+ </goal>
+</theory>
+</file>
+</why3session>
diff --git a/examples/multiprecision/add/why3shapes.gz b/examples/multiprecision/add/why3shapes.gz
new file mode 100644
index 0000000000000000000000000000000000000000..62d04273f3f86547bb4dc5f9a51c1c695bcbd336
GIT binary patch
literal 15032
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
E04dMBb^rhX

literal 0
HcmV?d00001

diff --git a/examples/multiprecision/compare.mlw b/examples/multiprecision/compare.mlw
new file mode 100644
index 0000000000..acbda8e76b
--- /dev/null
+++ b/examples/multiprecision/compare.mlw
@@ -0,0 +1,87 @@
+module Compare
+
+  use import int.Int
+  use import mach.int.Int32
+  use import mach.int.UInt64GMP as Limb
+  use import int.Power
+  use import ref.Ref
+  use import mach.c.C
+  use import map.Map
+  use import types.Types
+  use import lemmas.Lemmas
+
+  function compare_int (x y:int) : int =
+    if x < y then -1 else if x=y then 0 else 1
+
+  (** [compare_same_size] compares [x[0..sz-1]] and [y[0..sz-1]] as unsigned integers. It corresponds to [GMPN_CMP]. *)
+  let compare_same_size (x y:t) (sz:int32) : int32
+    requires { valid x sz }
+    requires { valid y sz }
+    ensures { result = compare_int (value x sz) (value y sz) }
+  =
+   let i = ref sz in
+   try
+     while Int32.(>=) !i (Int32.of_int 1) do
+       variant { p2i !i }
+       invariant { 0 <= !i <= sz }
+       invariant { forall j. !i <= j < sz ->
+                   (pelts x)[x.offset+j] = (pelts y)[y.offset+j] }
+       assert { forall j. 0 <= j < sz - !i ->
+                let k = !i+j in
+                !i <= k < sz ->
+                (pelts x)[x.offset+k] = (pelts y)[y.offset+k] /\
+                (pelts x)[!i+x.offset+j] = (pelts y)[!i+y.offset+j] };
+       value_sub_frame_shift (pelts x) (pelts y) (p2i !i+x.offset)
+                             (p2i !i+y.offset) ((p2i sz) - (p2i !i));
+       let ghost k = p2i !i in
+       i := Int32.(-) !i (Int32.of_int 1);
+
+       assert { 0 <= !i < sz };
+       let lx = get_ofs x !i in
+       let ly = get_ofs y !i in
+       if (not (Limb.(=) lx ly))
+       then begin
+            value_sub_concat (pelts x) x.offset (x.offset+k) (x.offset+p2i sz);
+            value_sub_concat (pelts y) y.offset (y.offset+k) (y.offset+p2i sz);
+            assert { compare_int (value x sz)
+                       (value y sz)
+                   = compare_int (value x k) (value y k) };
+            value_sub_tail (pelts x) x.offset (x.offset+k-1);
+            value_sub_tail (pelts y) y.offset (y.offset+k-1);
+            if Limb.(>) lx ly
+            then begin
+             value_sub_upper_bound (pelts y) y.offset (y.offset+k-1);
+             value_sub_lower_bound (pelts x) x.offset (x.offset+k-1);
+             assert { value x k - value y k =
+                      (l2i lx - ly) * (power radix (k-1))
+                    - ((value y (k-1)) - (value x (k-1)))
+                       };
+             assert { (lx - ly) * (power radix (k-1))
+                      >= power radix (k-1)
+                      > ((value y (k-1)) - (value x (k-1)))
+                       };
+             raise Return32 (Int32.of_int 1)
+            end
+            else begin
+             assert { ly > lx };
+             value_sub_upper_bound (pelts x) x.offset (x.offset+k-1);
+             value_sub_lower_bound (pelts y) y.offset (y.offset+k-1);
+             assert { value y k - value x k =
+                    (ly - lx) * (power radix (k-1))
+                    - ((value x (k-1)) - (value y (k-1)))
+                     };
+             assert { (ly - lx) * (power radix (k-1))
+                      >= power radix (k-1)
+                      > ((value x (k-1)) - (value y (k-1)))
+                     };
+            raise Return32 (Int32.(-_) (Int32.of_int 1))
+            end
+         end
+       else ()
+     done;
+     value_sub_frame_shift (pelts x) (pelts y) x.offset y.offset (p2i sz);
+     Int32.of_int 0
+   with Return32 r -> r
+   end
+
+end
\ No newline at end of file
diff --git a/examples/multiprecision/compare/why3session.xml b/examples/multiprecision/compare/why3session.xml
new file mode 100644
index 0000000000..fd61f6bc3e
--- /dev/null
+++ b/examples/multiprecision/compare/why3session.xml
@@ -0,0 +1,147 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE why3session PUBLIC "-//Why3//proof session v5//EN"
+"http://why3.lri.fr/why3session.dtd">
+<why3session shape_version="4">
+<prover id="1" name="CVC3" version="2.4.1" timelimit="5" steplimit="0" memlimit="1000"/>
+<prover id="3" name="Z3" version="4.5.0" timelimit="1" steplimit="0" memlimit="1000"/>
+<prover id="4" name="Z3" version="4.4.1" timelimit="5" steplimit="0" memlimit="1000"/>
+<prover id="5" name="Alt-Ergo" version="2.0.0" timelimit="5" steplimit="0" memlimit="1000"/>
+<file name="../compare.mlw" proved="true">
+<theory name="Compare" proved="true">
+ <goal name="VC compare_same_size" expl="VC for compare_same_size" proved="true">
+ <transf name="split_goal_right" proved="true" >
+  <goal name="VC compare_same_size.0" expl="loop invariant init" proved="true">
+  <proof prover="5"><result status="valid" time="0.04" steps="9"/></proof>
+  </goal>
+  <goal name="VC compare_same_size.1" expl="loop invariant init" proved="true">
+  <proof prover="4"><result status="valid" time="0.03"/></proof>
+  <proof prover="5"><result status="valid" time="0.03" steps="10"/></proof>
+  </goal>
+  <goal name="VC compare_same_size.2" expl="integer overflow" proved="true">
+  <proof prover="5"><result status="valid" time="0.09" steps="21"/></proof>
+  </goal>
+  <goal name="VC compare_same_size.3" expl="assertion" proved="true">
+  <proof prover="5"><result status="valid" time="0.05" steps="39"/></proof>
+  </goal>
+  <goal name="VC compare_same_size.4" expl="precondition" proved="true">
+  <proof prover="5"><result status="valid" time="0.04" steps="46"/></proof>
+  </goal>
+  <goal name="VC compare_same_size.5" expl="integer overflow" proved="true">
+  <proof prover="4"><result status="valid" time="0.04"/></proof>
+  <proof prover="5"><result status="valid" time="0.04" steps="24"/></proof>
+  </goal>
+  <goal name="VC compare_same_size.6" expl="integer overflow" proved="true">
+  <proof prover="5"><result status="valid" time="0.04" steps="26"/></proof>
+  </goal>
+  <goal name="VC compare_same_size.7" expl="assertion" proved="true">
+  <proof prover="5"><result status="valid" time="0.03" steps="16"/></proof>
+  </goal>
+  <goal name="VC compare_same_size.8" expl="precondition" proved="true">
+  <proof prover="5"><result status="valid" time="0.03" steps="28"/></proof>
+  </goal>
+  <goal name="VC compare_same_size.9" expl="precondition" proved="true">
+  <proof prover="4"><result status="valid" time="0.05"/></proof>
+  <proof prover="5"><result status="valid" time="0.06" steps="28"/></proof>
+  </goal>
+  <goal name="VC compare_same_size.10" expl="precondition" proved="true">
+  <proof prover="4"><result status="valid" time="0.02"/></proof>
+  <proof prover="5"><result status="valid" time="0.05" steps="20"/></proof>
+  </goal>
+  <goal name="VC compare_same_size.11" expl="precondition" proved="true">
+  <proof prover="5"><result status="valid" time="0.06" steps="21"/></proof>
+  </goal>
+  <goal name="VC compare_same_size.12" expl="assertion" proved="true">
+  <proof prover="5"><result status="valid" time="0.04" steps="51"/></proof>
+  </goal>
+  <goal name="VC compare_same_size.13" expl="precondition" proved="true">
+  <proof prover="4"><result status="valid" time="0.02"/></proof>
+  <proof prover="5"><result status="valid" time="0.05" steps="23"/></proof>
+  </goal>
+  <goal name="VC compare_same_size.14" expl="precondition" proved="true">
+  <proof prover="4"><result status="valid" time="0.02"/></proof>
+  <proof prover="5"><result status="valid" time="0.07" steps="24"/></proof>
+  </goal>
+  <goal name="VC compare_same_size.15" expl="precondition" proved="true">
+  <proof prover="1"><result status="valid" time="0.10"/></proof>
+  </goal>
+  <goal name="VC compare_same_size.16" expl="assertion" proved="true">
+  <transf name="inline_all" proved="true" >
+   <goal name="VC compare_same_size.16.0" expl="assertion" proved="true">
+   <proof prover="5" timelimit="1"><result status="valid" time="0.04" steps="19"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC compare_same_size.17" expl="assertion" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC compare_same_size.17.0" expl="VC for compare_same_size" proved="true">
+   <proof prover="1" memlimit="2000"><result status="valid" time="0.17"/></proof>
+   </goal>
+   <goal name="VC compare_same_size.17.1" expl="VC for compare_same_size" proved="true">
+   <proof prover="3"><result status="valid" time="0.03"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC compare_same_size.18" expl="integer overflow" proved="true">
+  <proof prover="4"><result status="valid" time="0.04"/></proof>
+  </goal>
+  <goal name="VC compare_same_size.19" expl="postcondition" proved="true">
+  <proof prover="4"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC compare_same_size.20" expl="assertion" proved="true">
+  <proof prover="4"><result status="valid" time="0.03"/></proof>
+  <proof prover="5"><result status="valid" time="0.05" steps="26"/></proof>
+  </goal>
+  <goal name="VC compare_same_size.21" expl="precondition" proved="true">
+  <proof prover="1"><result status="valid" time="0.06"/></proof>
+  </goal>
+  <goal name="VC compare_same_size.22" expl="assertion" proved="true">
+  <transf name="inline_all" proved="true" >
+   <goal name="VC compare_same_size.22.0" expl="assertion" proved="true">
+   <proof prover="5" timelimit="1"><result status="valid" time="0.05" steps="20"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC compare_same_size.23" expl="assertion" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC compare_same_size.23.0" expl="VC for compare_same_size" proved="true">
+   <proof prover="1" memlimit="2000"><result status="valid" time="0.27"/></proof>
+   </goal>
+   <goal name="VC compare_same_size.23.1" expl="VC for compare_same_size" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC compare_same_size.24" expl="integer overflow" proved="true">
+  <proof prover="4"><result status="valid" time="0.04"/></proof>
+  <proof prover="5"><result status="valid" time="0.23" steps="43"/></proof>
+  </goal>
+  <goal name="VC compare_same_size.25" expl="integer overflow" proved="true">
+  <proof prover="4"><result status="valid" time="0.04"/></proof>
+  </goal>
+  <goal name="VC compare_same_size.26" expl="postcondition" proved="true">
+  <proof prover="4"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC compare_same_size.27" expl="loop variant decrease" proved="true">
+  <proof prover="4"><result status="valid" time="0.03"/></proof>
+  <proof prover="5"><result status="valid" time="0.03" steps="20"/></proof>
+  </goal>
+  <goal name="VC compare_same_size.28" expl="loop invariant preservation" proved="true">
+  <proof prover="5"><result status="valid" time="0.04" steps="20"/></proof>
+  </goal>
+  <goal name="VC compare_same_size.29" expl="loop invariant preservation" proved="true">
+  <proof prover="5"><result status="valid" time="0.03" steps="44"/></proof>
+  </goal>
+  <goal name="VC compare_same_size.30" expl="precondition" proved="true">
+  <proof prover="5"><result status="valid" time="0.03" steps="43"/></proof>
+  </goal>
+  <goal name="VC compare_same_size.31" expl="integer overflow" proved="true">
+  <proof prover="4"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC compare_same_size.32" expl="postcondition" proved="true">
+  <proof prover="5"><result status="valid" time="0.10" steps="37"/></proof>
+  </goal>
+ </transf>
+ </goal>
+</theory>
+</file>
+</why3session>
diff --git a/examples/multiprecision/compare/why3shapes.gz b/examples/multiprecision/compare/why3shapes.gz
new file mode 100644
index 0000000000000000000000000000000000000000..d96164e40957441c3c528c27d1ae5e976946bc0a
GIT binary patch
literal 2057
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

literal 0
HcmV?d00001

diff --git a/examples/multiprecision/div.mlw b/examples/multiprecision/div.mlw
new file mode 100644
index 0000000000..5ff4e649d0
--- /dev/null
+++ b/examples/multiprecision/div.mlw
@@ -0,0 +1,4433 @@
+module Div
+
+  use import int.Int
+  use import mach.int.Int32
+  use import mach.int.UInt64GMP as Limb
+  use import int.Power
+  use import ref.Ref
+  use import mach.c.C
+  use import array.Array
+  use import map.Map
+  use import types.Types
+  use import lemmas.Lemmas
+  use import compare.Compare
+  use import util.Util
+  use import add.Add
+  use import sub.Sub
+  use import logical.Logical
+  use import int.EuclideanDivision
+
+  (** Based on Niels Möller and Torbjörn Granlund, “Improved
+      division by invariant integers” 2010 *)
+
+  use int.MinMax as MM
+
+  predicate reciprocal (v d:limb) =
+    v = (div (radix*radix - 1) (d)) - radix
+
+  let lemma fact_div (x y z:int)
+    requires { y > 0 }
+    ensures { div (x + y * z) y = (div x y) + z }
+  =
+    assert { x + y * z = y * (div (x + y * z) y) + mod (x + y * z) y
+             so mod (x + y * z) y = mod (y * z + x) y = mod x y
+             so x + y * z = y * (div (x + y * z) y) + mod x y
+             so
+             x = y * div x y + mod x y
+             so x + y * z = y * div x y + mod x y + y * z
+             so y * (div (x + y * z) y) + mod x y
+                = y * div x y + mod x y + y * z
+             so y * (div (x + y * z) y) = y * div x y + y * z
+                                        = y * ((div x y) + z)
+             so y <> 0
+             so div (x + y * z) y = div x y + z
+           }
+
+  let invert_limb (d:limb) : limb
+    requires { d >= div radix 2 }
+    ensures { reciprocal result d }
+  =
+    let v = div2by1 (Limb.of_int max_uint64)
+                    (Limb.(-) (Limb.of_int max_uint64) d)
+                    d in
+    fact_div (radix * radix - 1) (l2i d) (- radix);
+    assert { v = (div (radix*radix - 1) (d)) - radix
+             by
+             radix - 1 + radix * (radix - 1 - d)
+             = radix - 1 + radix * (radix - 1) - radix * d
+             = radix - 1 + radix * radix - radix - radix * d
+             = radix * radix - 1 - radix * d
+             so
+             radix - 1 + radix * (radix - 1 - d)
+             = radix * radix - 1 - radix * d
+             so
+             v
+             = div ((radix - 1) + radix * (radix - 1 - d)) (d)
+             = div (radix * radix - 1 - radix * d) (d)
+             = div (radix * radix - 1) (d) - radix
+           };
+   v
+
+  (** Divide a two-word integer by a one-word integer given the
+  reciprocal of the divisor. *)
+  let div2by1_inv (uh ul d v:limb) : (limb,limb)
+    requires { d >= div radix 2 }
+    requires { uh < d }
+    requires { reciprocal v d }
+    returns { q, r -> l2i q * d + l2i r = ul + radix * uh }
+    returns { _q, r -> 0 <= l2i r < d }
+  =
+    let zero = Limb.of_int 0 in
+    let one = Limb.of_int 1 in
+    let ghost k = radix * radix - (radix + l2i v) * l2i d in
+    let ghost u = l2i ul + radix * l2i uh in
+    assert { 1 <= k <= d };
+    let l,h = mul_double v uh in
+    let sl,c = add_with_carry l ul zero in
+    let (sh,ghost c') = add_with_carry uh h c in  (* <c',sh,sl> = <uh, ul> + <h,l> *)
+    assert { sl + radix * sh + radix * radix * c'
+             = l + radix * h + ul + radix * uh };
+    assert { c' = 0
+             by
+             uh < d
+             so v * uh <= v * d
+             so k = radix * radix - (radix + v) * d
+                  = radix * radix - radix * d - v * d
+             so v * d = radix * radix - radix * d - k
+                              = radix * (radix - d) - k
+             so k > 0
+             so v * d < radix * (radix - d)
+             so v * uh < radix * (radix - d)
+             so l + radix * h = v * uh
+             so l + radix * h < radix * (radix - d)
+             so uh <= d - 1
+             so radix * uh <= radix * (d - 1) = radix * d - radix
+             so l + radix * h + radix * uh
+                < radix * (radix - d) + radix * uh
+                <= radix * (radix - d) + radix * d - radix
+                <= radix * (radix - d + d) - radix = radix * radix - radix
+             so ul < radix
+             so l + radix * h + ul + radix * uh
+                = l + radix * h + radix * uh + ul
+                < radix * radix - radix + ul
+                < radix * radix - radix + radix = radix * radix
+             so sl + radix * sh + radix * radix * c'
+                = l + radix * h + ul + radix * uh
+                < radix * radix
+             so radix * radix * c' <= sl + radix * sh + radix * radix * c'
+             so radix * radix * c' < radix * radix
+     };
+    assert { sl + radix * sh = l + radix * h + ul + radix * uh
+             = v * uh + ul + radix * uh
+             = ul + (radix + v) * uh };
+    let qh = ref (sh:limb) in
+    let ql = ref sl in
+    let ghost q0 = l2i !ql in
+    let ghost cq = l2i sh + 1 in (*candidate quotient*)
+    let ghost cr = l2i ul - cq * l2i d + radix * l2i uh in (*candidate remainder*)
+    assert { cq * d + cr = u};
+    qh := add_mod !qh one;
+    assert { !qh = mod cq radix };
+    let p = mul_mod !qh d in
+    let r = ref (sub_mod ul p) in
+    let ghost r' = !r in
+    assert { r' = mod cr radix
+             by
+             let a = (- div (!qh * d) radix) in
+             r' = !r
+             = mod (ul - p) radix
+             = mod (ul - mod (!qh * d) radix) radix
+             = mod (radix * a
+                   + ul - mod (!qh * d) radix) radix
+             = mod (ul - mod (!qh * d) radix
+                           - radix * div (!qh * d) radix) radix
+             = mod (ul - !qh * d) radix
+             = mod (ul - mod cq radix * d) radix
+             = mod (radix * (- (div cq radix)) * d + ul - mod cq radix * d) radix
+             = mod (ul - (mod cq radix + radix * div cq radix) * d) radix
+             = mod (ul - cq * d) radix
+             = mod (radix * uh + ul - cq * d) radix
+             = mod (ul - cq * d + radix * uh) radix
+             = mod cr radix };
+    assert { radix * cr = uh * k + ul * (radix - d) + q0 * d - radix * d };
+    prod_compat_strict_r (l2i ul) radix (radix - l2i d);
+    prod_compat_strict_r (l2i d) radix (radix - q0);
+    assert { (* Theorem 2 of Möller&Granlund 2010 *)
+             (MM.max (radix - d) (q0 + 1)) - radix <= cr < MM.max (radix - d) q0
+             by radix * cr = uh * k + ul * (radix - d) + q0 * d - radix * d
+             so (uh * k + ul * (radix - d) >= 0
+                by uh >= 0 /\ k >= 0 /\ ul >= 0 /\ radix - d >= 0)
+             so radix * cr >= q0 * d - radix * d
+             so radix * cr >= - radix * d
+             so cr >= - d
+             so radix * cr >= q0 * d - radix * d = (q0 - radix) * d
+             so radix > d
+             so radix - q0 > 0
+             so d * (radix-q0) < radix * (radix - q0)
+             so (q0 - radix) * d > (q0 - radix) * radix
+             so radix * cr > (q0 - radix) * radix
+             so cr > q0 - radix
+             so (let m = MM.max (radix - d) (q0 +1) in
+                cr >= m - radix
+                by (cr + radix >= - d + radix
+                   /\ (cr + radix > q0 so cr + radix >= q0 + 1))
+                   so cr + radix >= m)
+             so 0 < k <= d so 0 <= uh < d
+             so k * uh < k * d <= d * d
+             so radix * cr < d * d + ul * (radix - d) + q0 * d - radix * d
+             so ul * (radix - d) < radix * (radix - d)
+             so radix * cr < d * d + radix * (radix - d) + q0 * d - radix * d
+             so (radix * cr < (radix - d) * (radix - d) + q0 * d
+                by
+                d * d + radix * (radix - d) + q0 * d - radix * d
+                        = radix * (radix - d) + d * d - radix * d + q0 * d
+                        = radix * (radix - d) + (d - radix) * d +  q0 * d
+                        = radix * (radix - d) - d * (radix - d) + q0 * d
+                        = (radix - d) * (radix - d) + q0 * d)
+             so let m = MM.max (radix - d) q0 in
+                radix - d <= m
+             so (radix - d) * (radix - d) <= m* (radix - d)
+             so (q0 * d <= m * d by 0 <= q0 <= m /\ 0 < d)
+             so radix * cr < (radix - d) * (radix - d) + q0 * d
+                           <= m* (radix - d) + q0 * d
+                           <= m* (radix - d) + m * d
+                           = m * radix
+             so cr < m
+                           };
+    assert { cr >= 0 -> r' = cr };
+    assert { cr < 0 ->
+           ( r' = cr + radix
+             by cr >= MM.max (radix - d) (q0 + 1) - radix
+             so cr >= - d
+             so cr + radix >= radix - d >= 0
+             so 0 <= cr + radix < radix
+             so mod (cr + radix) radix = mod cr radix
+             so r' = mod (cr + radix) radix ) };
+    assert { cr < 0 ->
+                ( !r > !ql
+                by MM.max (radix - d) (q0 + 1) >= q0 + 1 > q0
+                so cr >= (MM.max (radix - d) (q0 +1)) - radix > q0 - radix
+                so r' = cr + radix > q0 - radix + radix = q0 ) };
+    assert { 1 <= cq <= radix };
+    assert { (!qh = cq \/ (!qh = 0 /\ cq = radix)
+              by (1 <= cq < radix -> !qh = mod cq radix = cq)
+              so (cq = radix -> !qh = 0) ) };
+    assert { cq = radix ->
+             (cr < 0
+                by cq * d + cr = u
+                so uh <= d - 1
+                so 1 + uh <= d
+                so ul < radix
+                so u = ul + radix * uh
+                     < radix + radix * uh
+                     = radix * (1 + uh)
+                     <= radix * d
+                so u < radix * d
+                so radix * d + cr = u
+                so radix * d + cr < radix * d
+                so cr < 0) };
+    assert { 1 <= cq < radix -> !qh = cq /\ !qh * d + cr = u };
+    if Limb.(>) !r !ql
+    then
+    begin
+      qh := sub_mod !qh one;
+      r := add_mod !r d;
+      assert { cr >= 0 ->
+                  (!r = cr + d
+                  by r' = cr
+                  so r' < MM.max (radix - d) q0
+                  so r' > q0
+                  so 0 <= r' < radix - d
+                  so d <= r' + d < radix
+                  so !r = mod (r' + d) radix = r' + d) };
+      assert { cr >= 0 ->
+                  ( !r >= d
+                  by r' = cr >= 0
+                  so !r = r' + d >= d ) };
+      assert { cr < 0 ->
+                  ( !r = r' + d - radix
+                  by r' = cr + radix < radix
+                  so cr >= MM.max (radix - d) (q0 + 1) - radix
+                        >= radix - d - radix = - d
+                  so r' = cr + radix >= radix - d
+                  so !r = mod (r' + d) radix
+                  so radix + radix >= r' + d >= radix
+                  so !r = mod (r' + d) radix = r' + d - radix ) };
+      assert { cr < 0 ->
+                  ( 0 <= !r < d
+                  by r' = cr + radix < radix
+                  so !r = mod (r' + d) radix = r' + d - radix
+                  so !r >= 0
+                  so !r = r' + d - radix < d ) };
+      assert { cq = radix ->
+                ( !qh * d + !r = u
+                by cq * d + cr = u
+                so cr < 0
+                so r' = cr + radix
+                so u = radix * d + cr
+                     = (radix - 1) * d + d + cr
+                     = (radix - 1) * d + d + r' - radix
+                so r' = cr + radix >= MM.max (radix - d) (q0 + 1)
+                   >= radix - d
+                so radix + radix >= d + r' >= radix
+                so !r = mod (d + r') radix = d + r' - radix
+                so (radix - 1) * d + !r = u
+                so !qh = mod ((mod cq radix) - 1) radix
+                           = mod (-1) radix
+                           = radix - 1
+                so !qh * d + !r = u
+               ) };
+      assert { !r = cr + d by [@case_split] cr >= 0 \/ cr < 0 };
+      assert { 1 <= cq <= radix ->
+               ( !qh * d + !r = u
+               by cq * d + cr = u
+               so !qh = cq - 1
+               so !qh * d + cr + d = u
+               so !r = cr + d ) };
+    end
+    else
+    begin
+       assert { cr >= 0 };
+       assert { 1 <= cq < radix };
+    end;
+    assert { !qh * d + !r = ul + radix * uh
+            by [@case_split] cq = radix \/ 1 <= cq < radix };
+    if Limb.(>=) !r d
+    then begin
+      assert { cr >= 0 };
+      assert { !qh < radix - 1
+               by
+               !qh * d = ul + radix * uh  - !r
+               so uh <= d - 1
+               so ul + radix * uh - !r
+                  <= ul + radix * (d - 1) - !r
+                  = ul + radix * d - radix - !r
+                  = (ul - radix)  + radix * d - !r
+                  <  radix * d - !r
+                  <= radix * d - d
+                  = (radix - 1) * d
+               so !qh * d < (radix - 1) * d
+               so d > 0
+               so !qh < radix - 1 };
+      qh := Limb.(+) !qh one;
+      r := Limb.(-) !r d;
+      assert { 0 <= !r < d };
+      assert { !qh * d + !r = ul + radix * uh };
+    end;
+    assert { 0 <= !r < d };
+    assert { !qh * d + !r = ul + radix * uh };
+    (!qh,!r)
+
+(** [divmod_1 q x y sz] divides [(x,sz)] by [y], writes the quotient
+    in [(q, sz)] and returns the remainder. Corresponds to
+    [mpn_divmod_1]. *)
+(* TODO develop further decimal points (qxn) *)
+let divmod_1 (q x:t) (y:limb) (sz:int32) : limb
+    requires { valid x sz }
+    requires { valid q sz }
+    requires { 0 < sz }
+    requires { 0 < y }
+    ensures { value x sz
+              = value q sz * y + result }
+    ensures { result < y }
+  =
+    let limb_zero = Limb.of_int 0 in
+    let zero = Int32.of_int 0 in
+    let one = Int32.of_int 1 in
+    let msb = Int32.(-) sz one in
+    let lx = ref limb_zero in
+    let i = ref msb in
+    let r = ref limb_zero in
+    (*normalize divisor*)
+    let clz = count_leading_zeros y in
+    if (Int32.(>) clz zero)
+    then begin
+      let ghost mult = power 2 (p2i clz) in
+      let ry = lsl y (Limb.of_int32 clz) in
+      assert { ry = mult * y };
+      let ghost tlum = power 2 (Limb.length - p2i clz) in
+      assert { tlum * mult = radix };
+      let v = invert_limb ry in
+      while (Int32.(>=) !i zero) do
+        variant   { p2i !i }
+        invariant { -1 <= !i <= msb }
+        invariant { !r < ry }
+        invariant { mult * value_sub (pelts x) (x.offset + !i + 1) (x.offset + sz)
+                    = value_sub (pelts q) (q.offset + !i + 1)
+                                          (q.offset + sz)
+                      * ry
+                      + !r }
+        invariant { !r <= radix - mult }
+        invariant { mod (!r) mult = 0 }
+        assert { !i >= 0 };
+        label StartLoop in
+        lx := C.get_ofs x !i;
+        (*TODO lshift in place would simplify things*)
+        let l,h = lsld_ext !lx (Limb.of_int32 clz) in
+        mod_mult mult (l2i y) 0;
+        assert { !r + h < ry
+                 by
+                 let drm = div (!r) mult in
+                 let dym = div (ry) mult in
+                 mod (!r) mult = 0
+                 so !r = mult * drm
+                 so mod (ry) mult
+                    = mod (mult * (y) + 0) mult
+                    = mod 0 mult
+                    = 0
+                 so ry = mult * dym
+                 so !r < ry
+                 so 0 < ry - !r
+                      = mult * dym - mult * drm
+                      = mult * (dym - drm)
+                 so mult > 0
+                 so dym - drm > 0
+                 so dym >= drm + 1
+                 so h < mult
+                 so !r + h = mult * drm + h
+                    < mult * drm + mult
+                    = mult * (drm + 1)
+                    <= mult * dym = l2i ry };
+        assert { !r + h < radix by
+                 !r + h < ry < radix };
+        let (qu,rem) = div2by1_inv (Limb.(+) !r h) l ry v in
+        mod_mult mult (l2i y * l2i qu) (l2i rem);
+        mod_mult mult (tlum * (l2i !r + l2i h)) (l2i l);
+        assert { mod (rem) mult = 0
+                 by
+                 ry * qu + rem
+                 = (radix * (!r + h) + l)
+                 so
+                 mult * y * qu + rem
+                 = (mult * tlum * (!r + h) + l)
+                 so mod (mult * y * qu + rem) mult
+                    = mod (mult * tlum * (!r + h) + l) mult
+                 so mult > 0
+                 so mod (mult * (y * qu) + rem) mult
+                    = mod (rem) mult
+                 so mod (mult * tlum * (!r + h) + l) mult
+                    = mod (l) mult
+                    = 0
+                 };
+        let ghost mer = div (l2i rem) mult in
+        assert { rem <= radix - mult
+                 by
+                 mod (rem) mult = 0
+                 so mult * mer = l2i rem < radix = mult * tlum
+                 so mult > 0
+                 so 0 < mult * tlum - mult * mer = mult * (tlum - mer)
+                 so tlum - mer > 0
+                 so mer < tlum
+                 so rem = mult * mer <= mult * (tlum - 1) = radix - mult
+                 };
+        r:=rem;
+        assert { qu * ry + !r = l + radix * h + radix * (!r at StartLoop) };
+               (* coerced div2by1 postcondition *)
+        value_sub_update_no_change (pelts q) (q.offset + p2i !i)
+                                   (q.offset + 1 + p2i !i)
+                                   (q.offset + p2i sz) qu;
+        C.set_ofs q !i qu;
+        assert { mult * value_sub (pelts x) (x.offset + !i + 1) (x.offset + sz)
+                    = value_sub (pelts q) (q.offset + !i + 1)
+                                          (q.offset + sz)
+                      * ry
+                      + (!r at StartLoop) }; (* previous invariant is still true *)
+        value_sub_head (pelts x) (x.offset + int32'int !i) (x.offset + p2i sz);
+        value_sub_head (pelts q) (q.offset + int32'int !i) (q.offset + p2i sz);
+        assert { l + radix * h = mult * !lx }; (*lsld_ext postcondition *)
+        assert { mult * value_sub (pelts x) (x.offset + !i)
+                                            (x.offset + sz)
+                 = mult * !lx
+                   + radix * (mult * value_sub (pelts x) (x.offset + !i + 1)
+                                              (x.offset + sz))
+                 by (pelts x)[x.offset + !i] = !lx
+                 so value_sub (pelts x) (x.offset + !i) (x.offset + sz)
+                    = !lx + radix * value_sub (pelts x) (x.offset + !i + 1)
+                                              (x.offset + sz) }; (*nonlinear*)
+        assert { value_sub (pelts q) (q.offset + !i) (q.offset + sz) * ry
+                 = qu * ry
+                   + radix
+                      * (value_sub (pelts q) (q.offset + !i + 1) (q.offset + sz)
+                        * ry)
+                 by (pelts q)[q.offset + !i] = qu
+                 so value_sub (pelts q) (q.offset + !i) (q.offset + sz)
+                    = qu + radix * value_sub (pelts q) (q.offset + !i + 1)
+                                              (q.offset + sz) }; (*nonlinear*)
+        assert { mult * value_sub (pelts x) (x.offset + !i)
+                                            (x.offset + sz)
+                = value_sub (pelts q) (q.offset + !i) (q.offset + sz)
+                      * ry
+                      + !r
+               (* by
+                (pelts q)[q.offset + k] = qu
+                so
+                (pelts x)[x.offset + k] = !lx
+                so
+                l + radix * h = !lx * mult
+                so
+                mult * value_sub (pelts x) (x.offset + !i + 1)
+                                           (x.offset + sz)
+                = mult * value_sub (pelts x) (x.offset + k) (x.offset + sz)
+                = mult * ((pelts x)[x.offset + k]
+                  + radix * value_sub (pelts x) (x.offset + k + 1)
+                                                (x.offset + sz))
+                = mult * !lx
+                  + mult * radix * value_sub (pelts x) (x.offset + k + 1)
+                                                       (x.offset + sz)
+                = l + radix * h
+                  + mult * radix * value_sub (pelts x) (x.offset + k + 1)
+                                                       (x.offset + sz)
+                = l + radix * h
+                  + radix * (value_sub (pelts q) (q.offset + k + 1)
+                                           (q.offset + sz)
+                          * ry
+                          + (!r at StartLoop))
+                = l + radix * h + radix * (!r at StartLoop)
+                  + radix * (value_sub (pelts q) (q.offset + k + 1)
+                                           (q.offset + sz)
+                             * ry)
+                = l + radix * (h + (!r at StartLoop))
+                  + radix * (value_sub (pelts q) (q.offset + k + 1)
+                                           (q.offset + sz)
+                             * ry)
+                = qu * ry + !r
+                  + radix * value_sub (pelts q) (q.offset + k + 1)
+                                           (q.offset + sz)
+                          * ry
+                = (pelts q)[q.offset + k] * ry + !r
+                  + radix * value_sub (pelts q) (q.offset + k + 1)
+                                           (q.offset + sz)
+                          * ry
+                = ry * ((pelts q)[q.offset + k]
+                           + radix * value_sub (pelts q) (q.offset + k + 1)
+                                                         (q.offset + sz))
+                  + !r
+                = ry * value_sub (pelts q) (q.offset + !i + 1)
+                                              (q.offset + sz)
+                  + !r *)
+              };
+        i := Int32.(-) !i one;
+      done;
+      let ghost res = lsr !r (Limb.of_int32 clz) in
+      assert { value x sz = value q sz * y + res
+               by !r = res * mult
+               so mult * value x sz
+                  = value q sz * ry + !r
+                  = value q sz * y * mult + !r
+                  = value q sz * y * mult + res * mult
+                  = (value q sz * y + res) * mult };
+      lsr !r (Limb.of_int32 clz) end
+    else begin
+      let v = invert_limb y in
+      while (Int32.(>=) !i zero) do
+        variant   { p2i !i }
+        invariant { -1 <= !i <= msb }
+        invariant { !r < y }
+        invariant { value_sub (pelts x) (x.offset + !i + 1) (x.offset + sz)
+                    = value_sub (pelts q) (q.offset + !i + 1)
+                                          (q.offset + sz)
+                      * y
+                      + !r }
+        assert { !i >= 0 };
+        label StartLoop in
+        let ghost k = p2i !i in
+        lx := C.get_ofs x !i;
+        let (qu, rem) = div2by1_inv !r !lx y v in
+        r := rem;
+        value_sub_update_no_change (pelts q) (q.offset + p2i !i)
+                                   (q.offset + 1 + p2i !i)
+                                   (q.offset + p2i sz) qu;
+        C.set_ofs q !i qu;
+        i := Int32.(-) !i one;
+        value_sub_head (pelts x) (x.offset + k) (x.offset + p2i sz);
+        value_sub_head (pelts q) (q.offset + k) (q.offset + p2i sz);
+        assert { value_sub (pelts x) (x.offset + !i + 1) (x.offset + sz)
+                    = value_sub (pelts q) (q.offset + !i + 1)
+                                          (q.offset + sz)
+                      * y
+                      + !r
+                 by (pelts q)[q.offset + k] = qu
+                 so (pelts x)[x.offset + k] = !lx
+                 so value_sub (pelts x) (x.offset + !i + 1) (x.offset + sz)
+                    = value_sub (pelts x) (x.offset + k) (x.offset + sz)
+                    = !lx + radix * value_sub (pelts x) (x.offset + k + 1)
+                                                        (x.offset + sz)
+                    = !lx + radix * (value_sub (pelts q) (q.offset + k + 1)
+                                                         (q.offset + sz)
+                                     * y + (!r at StartLoop))
+                    = !lx + radix * (!r at StartLoop)
+                          + radix * (value_sub (pelts q) (q.offset + k + 1)
+                                                         (q.offset + sz)
+                                     * y)
+                    = qu * y + !r
+                          + radix * (value_sub (pelts q) (q.offset + k + 1)
+                                                         (q.offset + sz)
+                                     * y)
+                    = (qu + radix * value_sub (pelts q) (q.offset + k + 1)
+                                                        (q.offset + sz))
+                      * y
+                      + !r
+                    = value_sub (pelts q) (q.offset + !i + 1)
+                                          (q.offset + sz)
+                      * y
+                      + !r };
+      done;
+      !r
+    end
+
+
+  predicate reciprocal_3by2 (v dh dl:limb) =
+    v = div (radix*radix*radix -1) (dl + radix * dh) - radix
+
+  let div3by2_inv (uh um ul dh dl v: limb) : (limb,limb,limb)
+    requires { dh >= div radix 2 }
+    requires { reciprocal_3by2 v dh dl }
+    requires { um + radix * uh < dl + radix * dh }
+    returns { q, rl, rh -> uint64'int q * dl + radix * q * dh
+                           + uint64'int rl + radix * uint64'int rh
+                  = ul + radix * um + radix * radix * uh }
+    returns { _q, rl, rh -> 0 <= uint64'int rl + radix * uint64'int rh < dl + radix * dh }
+  =
+    let ghost d = l2i dl + radix * l2i dh in
+    let ghost u = l2i ul + radix * (l2i um + radix * l2i uh) in
+    let zero = Limb.of_int 0 in
+    let one = Limb.of_int 1 in
+    let q1 = ref zero in
+    let r0 = ref zero in
+    let r1 = ref zero in
+    let l,h = mul_double v uh in
+    let sl, c = add_with_carry um l zero in
+    let sh, ghost c' = add_with_carry uh h c in
+    assert { sl + radix * sh + radix * radix * c'
+             = um + radix * uh + v * uh };
+    assert { c' = 0
+             by
+             um + radix * uh < d
+             so radix * uh < d
+             so radix * (um + radix * uh + v * uh)
+                < radix * (d + v * uh)
+                = radix * d + v * radix * uh
+                <= radix * d + v * d
+                = (div (radix * radix * radix - 1) d) * d
+                <= radix * radix * radix - 1
+                < radix * radix * radix
+             so um + radix * uh + v * uh < radix * radix
+             so sl + radix * sh + radix * radix * c' < radix * radix
+             so radix * radix * c' < radix * radix
+     };
+    q1 := sh;
+    let ghost q0 = l2i sl in
+    let ghost cq = l2i !q1 + 1 in (*candidate quotient*)
+    q1 := add_mod !q1 one;
+    assert { !q1 = mod cq radix };
+    let p = mul_mod dh sh in
+    r1 := sub_mod um p;
+    label CQuot in
+    let ghost a = div (l2i um - l2i dh * l2i sh) radix in
+    (*assert { um - dh * sh = a * radix + !r1
+             by !r1 = mod (um - dh * sh) radix  };*)
+    let tl, th = mul_double sh dl in
+    let il, b = sub_with_borrow ul tl zero in
+    let (ih, ghost b') = sub_with_borrow !r1 th b in
+    assert { il + radix * ih - radix * radix * b'
+             = ul + radix * !r1 - sh * dl };
+    let bl,b2 = sub_with_borrow il dl zero in
+    let bh, ghost b2' = sub_with_borrow ih dh b2 in
+    assert { bl + radix * bh - radix * radix * b2'
+             = il + radix * ih - dl - radix * dh };
+    mod_mult (radix * radix) (l2i b')
+             (l2i ul + radix * l2i !r1 - l2i sh * l2i dl - l2i dl
+                - radix * l2i dh);
+    assert { bl + radix * bh
+             = mod (ul + radix * !r1
+                - sh * dl- dl
+                - radix * dh) (radix * radix)
+             by
+             bl + radix * bh
+             = mod (il + radix * ih
+                - dl - radix * dh) (radix * radix)
+             so il + radix * ih
+                = radix * radix * b' + ul + radix * !r1
+                  - sh * dl
+             so mod (il + radix * ih
+                - dl - radix * dh) (radix * radix)
+                = mod (radix * radix * b' + ul + radix * !r1
+                      - sh * dl - dl - radix * dh)
+                  (radix * radix)
+                = mod (ul + radix * !r1
+                - sh * dl - dl
+                - radix * dh) (radix * radix) };
+    r1 := bh;
+    r0 := bl;
+    let ghost r' = l2i !r0 + radix * l2i !r1 in
+    let ghost cr = u - d * cq in
+    assert {  r' = mod cr(radix * radix)
+              by
+              (!r1 at CQuot = mod (um - dh * sh) radix
+                by let a' = div (dh * sh) radix in
+                   dh * sh = p + radix * a'
+                so !r1 at CQuot = mod (um - p) radix
+                   = mod (radix * a' + um - dh * sh) radix
+                   = mod (um - dh * sh) radix )
+              so um - dh * sh = a * radix + !r1 at CQuot
+              so !r0 + radix * !r1
+                 = mod (ul + radix * (!r1 at CQuot)
+                  - sh * dl - dl
+                  - radix * dh) (radix * radix)
+              so ul + radix * (!r1 at CQuot)
+                   - sh * dl - dl - radix * dh
+                 = ul + radix * (um - dh * sh - a * radix)
+                   - sh * dl - dl - radix * dh
+                 = ul + radix * um - radix * dh * sh
+                   - radix * radix * a - sh * dl - dl
+                   - radix * dh
+                 = ul + radix * um - radix * dh * (sh + 1)
+                   - radix * radix * a - sh * dl - dl
+                 = ul + radix * um - radix * dh * (sh + 1)
+                   - radix * radix * a - dl * (sh + 1)
+                 = ul + radix * um
+                   - (dl + radix * dh) * (sh + 1)
+                   - radix * radix * a
+                 = ul + radix * um - d * cq - radix * radix * a
+                 = u - radix * radix * uh - d * cq - radix * radix * a
+                 = cr + radix * radix * (- a - uh)
+              so (*let y = - a - uh in*)
+                 mod (ul + radix * (!r1 at CQuot)
+                  - sh * dl - dl
+                  - radix * dh) (radix * radix)
+                 = mod (radix * radix * (-a - uh) + cr)
+                       (radix * radix)
+                 = mod cr (radix*radix)
+               };
+    let ghost m = MM.max (radix * radix - d) (q0 * radix) in
+    assert { (* Theorem 3 of Moller&Granlund 2010 *)
+             m - radix * radix <= cr < m
+            by
+            let k = radix * radix * radix - (radix + v) * d in
+            reciprocal_3by2 v dh dl
+            so let m3 = radix * radix * radix - 1 in
+               (radix + v) * d = d * div m3 d = m3 - mod m3 d
+            so (k = 1 + mod m3 d
+                by k = radix * radix * radix - (radix + v) * d
+                     = m3 + 1 - (radix + v) * d
+                     = m3 + 1 - m3 + mod m3 d
+                     = 1 + mod m3 d)
+            so 1 <=  k <= d
+            so q0 + radix * sh = (radix + v) * uh + um
+            so cq = sh + 1
+            so radix * cq = radix * sh + radix
+               = (radix + v) * uh + um - q0 + radix
+            so (radix * cr = k * uh + (radix * radix - d) * um
+                 + radix * ul + d * q0 - d * radix
+               by radix * cr = radix * (u - cq * d)
+               = radix * u
+                 - ((radix + v) * uh + um - q0 + radix) * d
+               = radix * u - d * (radix + v) * uh
+                 - d * um + d * q0 - d * radix
+               = radix * u - (radix * radix * radix - k) * uh
+                 - d * um + d * q0 - d * radix
+               = (radix * radix * radix * uh + radix * radix * um
+                 + radix * ul) - (radix * radix * radix - k) * uh
+                 - d * um + d * q0 - d * radix
+               = k * uh + radix * radix * um + radix * ul
+                 - d * um + d * q0 - d * radix
+               = k * uh + (radix * radix - d) * um + radix * ul
+                 + d * q0 - d * radix )
+            so (cr >= m - radix * radix
+               by (
+                  k >= 0 so radix * radix - d >= 0
+               so uh >= 0 so um >= 0 so ul >= 0
+               so  k * uh + (radix * radix - d) * um + radix * ul
+                   >= 0
+               so radix * cr >= d * q0 - d * radix
+               so q0 >= 0 so d >= 0
+               so d * q0 >= 0
+               so radix * cr >= - d * radix
+               so cr >= -d = radix * radix - d - radix * radix
+               so radix * cr >= d * (q0 - radix)
+               so (
+                    (radix - q0) * d < (radix - q0) * radix * radix
+                    by let rq = radix - q0 in let r2 = radix * radix in
+                    rq > 0 /\ d < r2
+                    so rq * d < rq * r2
+                  )
+               so d * (q0 - radix) > radix * radix * (q0 - radix)
+               so radix * cr > radix * radix * (q0 - radix)
+               so cr > radix * (q0 - radix) = radix * q0 - radix * radix
+                  ))
+            so cr < m
+            by (
+                let bbd = radix * radix - d in
+                bbd > 0 /\ bbd <= m /\ q0 * radix <= m
+                so (bbd * bbd <= bbd * m
+                    by [@case_split]
+                    (bbd = m \/ (bbd < m so bbd * bbd < bbd * m)))
+                so (d*(radix * q0) <= d * m
+                    by [@case_split]
+                    (radix * q0 = m \/ (radix * q0 < m so d > 0 so d * (radix * q0) < d * m)))
+                so if uh <= dh - 1
+                then
+                  let dm = dh - 1 in
+                  uh <= dm
+                  so
+                  k * uh <= k * dm
+                  so (k * dm <= d * dm
+                     by k <= d /\ 0 <= dm
+                     so [@case_split] (k = d \/ dm = 0 \/
+                                     (k < d /\ dm > 0 so k * dm < d * dm)))
+                  so k * uh <= d * dm
+                  so
+                  bbd * um <= bbd * (radix - 1)
+                  so
+                  radix * cr
+                  = k * uh + (radix * radix - d) * um
+                    + radix * ul + d * q0 - radix * d
+                  <= d * dm + bbd * um
+                    + radix * ul + d * q0 - radix * d
+                  <= d * dm + bbd * (radix - 1)
+                    + radix * ul + d * q0 - radix * d
+                  < d * dm + bbd * (radix - 1)
+                    + radix * radix + d * q0 - radix * d
+                  so radix * radix * cr
+                  < radix * (d * dm + bbd * (radix - 1)
+                    + radix * radix + d * q0 - radix * d)
+                  = d * radix * (dh - 1) + bbd * radix * (radix - 1)
+                    + radix * radix * radix + radix * d * q0 - radix * radix * d
+                  = d * radix * dh - d * radix + bbd * radix * (radix - 1)
+                    + radix * radix * radix + radix * d * q0 - radix * radix * d
+                  = d * (d - dl) - d * radix + bbd * radix * (radix - 1)
+                    + radix * radix * radix + radix * d * q0 - radix * radix * d
+                  = d * d - d * radix + bbd * radix * (radix - 1)
+                    + radix * radix * radix + radix * d * q0 - radix * radix * d - d * dl
+                  so (d * dl >= 0 by d >= 0 /\ dl >= 0)
+                  so radix * radix * cr
+                  < d * d - d * radix + bbd * radix * (radix - 1)
+                    + radix * radix * radix + radix * d * q0 - radix * radix * d - d * dl
+                  <= d * d - d * radix + bbd * radix * (radix - 1)
+                    + radix * radix * radix + radix * d * q0 - radix * radix * d
+                  = d * d - d * radix + bbd * (radix * radix - radix)
+                    + radix * radix * radix + radix * d * q0 - radix * radix * d
+                  = d * d - d * radix + bbd * radix * radix - (radix * radix - d) * radix
+                    + radix * radix * radix + radix * d * q0 - radix * radix * d
+                  = d * d - d * radix + bbd * radix * radix
+                    + radix * d - radix * radix * radix
+                    + radix * radix * radix + radix * d * q0 - radix * radix * d
+                  = d * d + bbd * radix * radix - radix * radix * d + radix * d * q0
+                  = bbd * radix * radix - d * (radix * radix - d) + radix * d * q0
+                  = bbd * radix * radix - d * bbd + radix * d * q0
+                  = bbd * bbd + d * (radix * q0)
+                  <= bbd * m + d * (radix * q0)
+                  <= bbd * m + d * m
+                  = radix * radix * m
+                  so cr < m
+                 else
+                  uh = dh
+                  so
+                  (um <= dl - 1
+                  by um + radix * uh < dl + radix * dh)
+                  so (radix * radix - d) * um <= (radix * radix - d) * (dl - 1)
+                  so
+                  ( radix * radix * cr
+                    < radix * radix * m
+                    - (radix - dl) * (radix * radix * radix - d * (1+ radix))
+                 by radix * cr
+                  = k * dh + (radix * radix - d) * um
+                    + radix * ul + d * q0 - radix * d
+                  <= d * dh + (radix * radix - d) * um
+                    + radix * ul + d * q0 - radix * d
+                  <= d * dh + (radix * radix - d) * (dl - 1)
+                    + radix * ul + d * q0 - radix * d
+                  < d * dh + (radix * radix - d) * (dl - 1)
+                    + radix * radix + d * q0 - radix * d
+                  so radix * radix * cr
+                  < radix * (d * dh + (radix * radix - d) * (dl - 1)
+                    + radix * radix + d * q0 - radix * d)
+                  = d * radix * dh
+                    + (radix * radix - d) * (dl - 1) * radix
+                    + radix * radix * radix + d * q0 * radix - radix * radix * d
+                  = d * (d - dl)
+                    + (radix * radix - d) * (radix * dl - radix)
+                    + radix * radix * radix + d * q0 * radix - radix * radix * d
+                  = d * d - d * dl + radix * radix * radix * dl
+                    - d * radix * dl + d * radix - radix * radix * radix
+                    + radix * radix * radix + d * q0 * radix - radix * radix * d
+                  = d * d - d * dl + radix * radix * radix * dl
+                    - d * radix * dl + d * radix + d * q0 * radix
+                    - radix * radix * d
+                  = d * d - radix * radix * d + d * radix + d * q0 * radix
+                    + dl * (radix * radix * radix - d - d * radix)
+                  = d * (d - radix * radix) + d * radix + d * q0 * radix
+                    + dl * (radix * radix * radix - d - d * radix)
+                  = bbd * (-d) + d * radix + d * q0 * radix
+                    + dl * (radix * radix * radix - d - d * radix)
+                  = bbd * (bbd - radix * radix) + d * radix + d * q0 * radix
+                    + dl * (radix * radix * radix - d - d * radix)
+                  = bbd * bbd + d * q0 * radix
+                    - bbd * radix * radix + d * radix
+                    + dl * (radix * radix * radix - d * (1 + radix))
+                  = bbd * bbd + d * q0 * radix
+                    - (radix * radix - d) * radix * radix + d * radix
+                    + dl * (radix * radix * radix - d * (1 + radix))
+                  = bbd * bbd + d * q0 * radix
+                    - radix * ((radix * radix - d) * radix - d)
+                    + dl * (radix * radix * radix - d * (1 + radix))
+                  = bbd * bbd + d * q0 * radix
+                    - radix *  (radix * radix * radix - d * radix - d)
+                    + dl * (radix * radix * radix - d * (1 + radix))
+                  = bbd * bbd + d * q0 * radix
+                    - radix * (radix * radix * radix - d * (1+ radix))
+                    + dl * (radix * radix * radix - d * (1 + radix))
+                  = bbd * bbd + d * q0 * radix
+                    - (radix - dl) * (radix * radix * radix - d * (1+ radix))
+                  <= bbd * m + d * q0 * radix
+                    - (radix - dl) * (radix * radix * radix - d * (1+ radix))
+                  <= bbd * m + d * m
+                    - (radix - dl) * (radix * radix * radix - d * (1+ radix))
+                  = (bbd + d) * m
+                    - (radix - dl) * (radix * radix * radix - d * (1+ radix))
+                  = radix * radix * m
+                    - (radix - dl) * (radix * radix * radix - d * (1+ radix))
+                  )
+                  so
+                    (cr < m by
+                    if d <= radix * (radix - 1)
+                    then (radix + 1) * d <= radix * (radix - 1) * (radix + 1)
+                         = radix * (radix * radix - 1)
+                         = radix * radix * radix - radix
+                         < radix * radix * radix
+                         so (radix * radix * radix - d * (1+ radix)) > 0
+                         so radix - dl > 0
+                         so (radix - dl) * (radix * radix * radix
+                                               - d * (1+ radix))
+                            > 0
+                         so
+                         radix * radix * cr
+                         < radix * radix * m
+                           - (radix - dl) * (radix * radix * radix
+                           - d * (1+ radix))
+                         < radix * radix * m
+                         so radix * radix * cr < radix * radix * m
+                    else
+                        dl + radix * dh = d > radix * (radix - 1)
+                        so dl < radix
+                        so dl + radix * dh < radix * (1 + dh)
+                        so radix - 1 < 1 + dh
+                        so dh > radix - 2
+                        so dh = radix - 1
+                        so uh = dh
+                        so d >= radix * (radix - 1) +1
+                        so d * (radix + 1)
+                           >= (radix * (radix - 1) + 1) * (radix +1)
+                            = radix * (radix * radix - 1) + radix + 1
+                            = radix * radix * radix - radix + radix + 1
+                            = radix * radix * radix + 1
+                        so
+                        (d * div (radix * radix * radix - 1) d
+                             <= d * (radix + 1)
+                          by d * div (radix * radix * radix - 1) d
+                             <= radix * radix * radix - 1
+                             < radix * radix * radix + 1
+                             <= d * (radix + 1))
+                        so (let a = div (radix * radix * radix - 1) d in
+                            a < radix + 1
+                            by d > 0
+                            so (forall x y z. x * z < y * z /\ z > 0 -> x < y)
+                            so (forall x y. x * d < y * d -> x < y)
+                            so let r = radix + 1 in
+                               a * d < r * d
+                               so a < r)
+                        so v = div (radix * radix * radix - 1) d - radix
+                                 < radix + 1 - radix = 1
+                        so v = 0
+                        so sh = uh = radix - 1
+                        so cq = sh + 1 = radix
+                        so cr = u - cq * d
+                              = u - radix * d
+                              = ul + radix * (um + radix * dh)
+                                       - radix * (dl + radix * dh)
+                              = ul + radix * (um - dl)
+                        so um <= dl - 1
+                        so 1 + um - dl <= 0
+                        so ul < radix
+                        so cr = ul + radix * (um - dl)
+                              < radix + radix * (um - dl)
+                              = radix * (1 + um - dl) <= 0
+                        so cr < 0 <= m
+                   )
+                )
+            };
+    assert { cr >= 0 -> r' = cr };
+    assert { cr < 0 -> r' = radix * radix + cr
+             by
+             m >= radix * radix - d
+             so cr >= m - radix * radix >= -d
+             so cr + radix * radix >= radix * radix - d >= 0
+             so 0 <= cr + radix * radix < radix * radix
+             so mod (radix * radix + cr) (radix*radix) = mod cr (radix*radix)
+             so r' = mod (radix * radix + cr) (radix*radix) };
+    assert { cr < 0 -> !r1 >= sl
+             by m >= radix * q0
+             so cr >= m - radix * radix >= radix * q0 - radix * radix
+             so r' = radix * radix + cr >= radix * q0
+             so r' = radix * !r1 + !r0 >= radix * q0
+             so !r0 < radix
+             so r' < radix * !r1 + radix = radix * (!r1 + 1)
+             so radix * q0 < radix * (!r1 + 1)
+             so sl = q0 < !r1 + 1 };
+    assert { 1 <= cq <= radix };
+    assert { 1 <= cq < radix -> !q1 = cq so !q1 * d + cr = u };
+    assert { cq = radix ->
+             (cr < 0
+                by cq * d + cr = u
+                so um + radix * uh <= d - 1
+                so radix * d + cr = ul
+                                    + radix * (um + radix * uh)
+                                  <= ul + radix * (d - 1)
+                                  = ul - radix + radix * d
+                                  < radix * d
+             )
+           };
+    label PreCorrections in
+    if Limb.(>=) !r1 sl
+    then begin
+      q1 := sub_mod !q1 one;
+      assert { !q1 = cq - 1
+               by
+               if cq = radix
+               then
+                 (!q1 at PreCorrections)
+                 = mod cq radix = mod radix radix= 0
+                 so !q1 = mod (0 - 1) radix = radix - 1 = cq - 1
+               else
+                 0 <= cq - 1 < radix - 1
+                 so (!q1 at PreCorrections) = cq
+                 so !q1 = mod (cq - 1) radix = cq - 1
+                 };
+      let rl, c = add_with_carry !r0 dl zero in
+      let rh, ghost c' = add_with_carry !r1 dh c in
+      assert { rl + radix * rh = mod (r' + d) (radix * radix)
+               by radix * radix * c' + rl + radix * rh
+                  = r' + d
+               so mod (r' + d) (radix * radix)
+                  = mod (radix * radix * c' + rl + radix * rh)
+                      (radix * radix)
+                  = mod (rl + radix * rh) (radix * radix)  };
+      assert { rl + radix * rh = cr + d
+               by
+               if cr >= 0
+               then r' = cr
+                    so rl + radix * rh = mod (cr + d) (radix * radix)
+                    so cr < MM.max (radix * radix - d) (q0*radix)
+                    so (cr >= q0 * radix
+                       by
+                          r' = radix * !r1 + !r0
+                             >= radix * !r1
+                             >= radix * q0)
+                    so cr < radix * radix - d
+                    so cr + d < radix * radix
+                    so (cr + d >= 0  by cr + d >= cr)
+                    so mod (cr + d) (radix * radix) = cr + d
+               else
+                    r' = cr + radix * radix
+                    so cr >= m - radix * radix
+                    so r' >= m >= radix * radix - d
+                    so r' + d >= radix * radix
+                    so r' < radix * radix
+                    so d < radix * radix
+                    so r' + d < radix * radix + radix * radix
+                    so mod (r' + d) (radix * radix)
+                       = r' + d - radix * radix
+                       = cr + d
+             };
+      r1 := rh;
+      r0 := rl;
+      assert { !q1 * d + !r0 + radix * !r1 = u
+               by
+               cq * d + cr = u
+               so !q1 = cq - 1
+               so !r0 + radix * !r1 = cr + d
+               so !q1 * d + !r0 + radix * !r1
+                  = (cq - 1) * d + cr + d
+                  = cq * d - d + cr + d
+                  = cq * d + cr };
+    end
+    else assert { !q1 * d + r' = u
+                  by cr >= 0
+                  so r' = cr
+                  so 1 <= cq < radix
+                  so !q1 * d + cr = u };
+    assert { !q1 * d + !r0 + radix * !r1 = u };
+    label PreRemAdjust in
+    if [@ex:unlikely] (Limb.(>) !r1 dh) || (Limb.(=) !r1 dh && Limb.(>=) !r0 dl)
+    then begin
+      let bl, b = sub_with_borrow !r0 dl zero in
+      let bh, ghost b'= sub_with_borrow !r1 dh b in
+      assert { b' = 0 };
+      assert { bl + radix * bh = !r0 + radix * !r1 - d };
+      assert { !q1 < radix - 1
+               by !q1 * d + !r0 + radix * !r1 = u
+               so !r0 + radix * !r1 >= d
+               so um + radix * uh <= d - 1
+               so u = ul + radix * (um + radix * uh)
+                    <= ul + radix * (d - 1)
+                    < radix + radix * (d-1)
+                    = radix * d
+               so (!q1 * d < (radix - 1) * d
+                  by
+                  !q1 * d = u - (!r0 + radix * !r1)
+                              <= u - d
+                              < radix * d - d
+                              = (radix - 1) * d )
+               };
+      q1 := add_mod !q1 one;
+      assert { !q1 = (!q1 at PreRemAdjust) + 1 };
+      r1 := bh;
+      r0 := bl;
+      assert { !q1 * d + !r0 + radix * !r1 = u
+               by
+               !q1 * d + !r0 + radix * !r1
+               = ((!q1 at PreRemAdjust) + 1) * d
+                 + (!r0 + radix * !r1 at PreRemAdjust) - d
+               = (!q1 * d + !r0 + radix * !r1 at PreRemAdjust)
+                };
+    end;
+    assert { 0 <= !r0 + radix * !r1 < d };
+    (!q1,!r0,!r1)
+
+  let lemma bounds_imply_rec3by2 (v dh dl:limb)
+    requires { radix * radix * radix - (dl + radix * dh)
+               <= (radix + v) * (dl + radix * dh)
+               < radix * radix * radix }
+    ensures { reciprocal_3by2 v dh dl }
+  = ()
+    (*let ghost d = dl + radix * dh in
+    let ghost w = Limb.of_int (div (radix*radix*radix -1) d - radix) in
+    assert { reciprocal_3by2 w dh dl };
+    let ghost e = v - w in
+    assert { radix * radix * radix - d
+             <= (radix + w) * d
+             < radix * radix * radix };
+    assert { e = 0 }*)
+
+
+  let reciprocal_word_3by2 (dh dl:limb) : limb
+    requires { dh >= div radix 2 }
+    ensures { reciprocal_3by2 result dh dl }
+  =
+    let ghost d = l2i dl + radix * l2i dh in
+    let one = Limb.of_int 1 in
+    let v = ref (invert_limb dh) in
+    assert { radix * radix - dh
+             <= (radix + !v) * dh
+             < radix * radix
+             by
+             radix + !v = div (radix * radix - 1) (dh) };
+    let p = ref (mul_mod dh !v) in
+    assert { (radix + !v) * dh
+             = radix * (radix-1)
+               + !p
+             by
+             mod ((radix + !v) * dh) radix
+             = mod (radix * dh + dh * !v) radix
+             = mod (dh * !v) radix = l2i !p
+             so
+             div ((radix + !v) * dh) radix = radix - 1
+             so
+             (radix + !v) * dh
+             = radix * div ((radix + !v) * dh) radix
+               + mod (dh * !v) radix
+             = radix * (radix - 1) + !p
+             };
+    label Estimate in
+    p := add_mod !p dl;
+    if Limb.(<) !p dl (* carry out *)
+    then begin
+      assert { (!p at Estimate) + dl >= radix };
+      assert { (!p at Estimate) + dl = radix + !p };
+      assert { !v >= 1
+               by
+               (!p at Estimate) + dl >= radix
+               so (!p at Estimate) > 0
+             };
+      assert { (radix + !v) * dh + dl
+               = radix * (radix - 1) + radix + !p };
+      label Carry in
+      if Limb.(>=) !p dh
+      then begin
+        v := Limb.(-) !v one;
+        p := Limb.(-) !p dh;
+        assert { (radix + !v) * dh + dl
+                 = radix * (radix - 1) + radix + !p
+               };
+      end;
+      label Borrow in
+      v := Limb.(-) !v one;
+      assert { !p < dh };
+      p := sub_mod !p dh;
+      assert { !p = radix + !p at Borrow - dh };
+    end;
+    assert { (radix + !v) * dh * radix + radix * dl
+               = radix * radix * (radix - 1) + radix * !p
+             by (radix + !v) * dh + dl
+                 = radix * (radix - 1) + !p };
+    assert { radix * radix - dh
+             <= (radix + !v) * dh + dl
+             < radix * radix };
+    let tl, th = mul_double !v dl in
+    label Adjust in
+    p := add_mod !p th;
+    if Limb.(<) !p th (* carry out *)
+    then begin
+      assert { (!p at Adjust) + th >= radix };
+      assert { (!p at Adjust) + th = radix + !p
+               by (!p at Adjust) + th < radix + radix
+               so div ((!p at Adjust) + th) radix = 1
+               so !p = mod ((!p at Adjust) + th) radix
+               so (!p at Adjust) + th
+                  = radix * div ((!p at Adjust) + th) radix
+                    + mod ((!p at Adjust) + th) radix
+                  = radix + !p
+             };
+      assert { !v >= 1
+               by
+               th <> 0
+               so !v <> 0
+             };
+      if Limb.(>) !p dh || (Limb.(=) !p dh && Limb.(>=) tl dl)
+      then begin
+        assert { tl + radix * !p >= d };
+        v := Limb.(-) !v one;
+        assert { (radix + !v) * dh * radix + radix * dl
+                   + !v * dl
+                 = radix * radix * radix
+                   + radix * !p + tl - d
+                 by
+                 (radix + !v) * dh * radix + radix * dl
+                   + !v * dl
+                 = (radix + !v at Adjust - 1) * dh * radix
+                   + radix * dl
+                   + (!v at Adjust - 1) * dl
+                 = (radix + !v at Adjust) * dh * radix
+                   + radix *  dl
+                   + (!v at Adjust) * dl - radix * dh
+                   - dl
+                 = radix * radix * (radix - 1) + radix * (!p at Adjust)
+                   + (!v at Adjust) * dl - radix * dh
+                   - dl
+                 = radix * radix * (radix - 1) + radix * (!p at Adjust)
+                   + radix * th + tl - d
+                 = radix * radix * (radix - 1) + radix * (radix + !p)
+                   + tl - d
+                 = radix * radix * (radix - 1) + radix * radix + radix * !p
+                   + tl - d
+                 = radix * radix * radix + radix * !p + tl - d
+            };
+      end;
+      assert { radix * radix * radix
+               <= (radix + !v) * dh * radix + radix * dl
+                   + !v * dl
+               < radix * radix * radix + d };
+      v := Limb.(-) !v one;
+    end;
+    bounds_imply_rec3by2 !v dh dl;
+    !v
+
+  let sub3 (x y z:limb) : (limb,limb)
+    returns { (r,d) -> x - y - z = l2i r - radix * l2i d
+                     /\ 0 <= d <= 2 }
+  =
+    let limb_zero = Limb.of_int 0 in
+    let u1, b1 = sub_with_borrow x y limb_zero in
+    let u2, b2 = sub_with_borrow u1 z limb_zero in
+    (u2, (Limb.(+) b1 b2))
+
+  (** [submul_limb r x y sz] multiplies [(x, sz)] by [y], substracts the [sz]
+      least significant limbs from [(r, sz)] and writes the result in [(r,sz)].
+      Returns the most significant limb of the product plus the borrow
+      of the substraction. Corresponds to [mpn_submul_1].*)
+  let submul_limb (r x:t) (y:limb) (sz:int32):limb
+    requires { valid x sz }
+    requires { valid r sz }
+    ensures { value r sz - (power radix sz) * result
+            = value (old r) sz
+              - value x sz * y }
+    writes { r.data.elts }
+    ensures { forall j. j < r.offset \/ r.offset + sz <= j ->
+              (pelts r)[j] = (pelts (old r))[j] }
+=
+    let limb_zero = Limb.of_int 0 in
+    let lx = ref limb_zero in
+    let lr = ref limb_zero in
+    let b = ref limb_zero in
+    let i = ref (Int32.of_int 0) in
+    while Int32.(<) !i sz do
+      variant { sz - !i }
+      invariant { 0 <= !i <= sz }
+      invariant { value r !i - (power radix !i) * !b
+                 = value (old r) !i
+                   - value x !i * y }
+      invariant { forall j. !i <= j < sz ->
+                 (pelts (old r)) [r.offset+j] = (pelts r)[r.offset + j]  }
+      invariant { forall j. j < r.offset \/ r.offset + sz <= j ->
+                 (pelts r)[j] = (pelts (old r))[j] }
+      label StartLoop in
+      let ghost k = p2i !i in
+      lx := get_ofs x !i;
+      lr := get_ofs r !i;
+      assert { !lr = (pelts (old r))[r.offset + !i] };
+      let rl, rh = Limb.mul_double !lx y in
+      let res, borrow = sub3 !lr rl !b in
+      value_sub_tail (pelts r) r.offset (r.offset + k);
+      value_sub_tail (pelts x) x.offset (x.offset + k);
+      value_sub_update (pelts r) (r.offset + p2i !i)
+                       r.offset (r.offset + p2i !i +1) res;
+      set_ofs r !i res;
+      assert { forall j. (!i + 1) <= j < sz ->
+               (pelts (old r))[r.offset+j] = (pelts r)[r.offset+j]
+               by
+               (pelts r)[r.offset+j] = ((pelts r) at StartLoop)[r.offset+j]
+                                  = (pelts (old r))[r.offset+j] };
+      assert { value r (!i + 1)
+              = value (r at StartLoop) (!i + 1)
+                + (power radix !i) * (res - !lr)
+               };
+      assert { rl + radix * rh <= (radix-1)*(radix-1)
+               by
+               (!lx * y <= !lx * (radix-1) <= (radix-1)*(radix-1)
+                 by
+                0 <= !lx <= radix - 1 /\ 0 <= y <= radix -1)
+                /\
+                rl + radix * rh = !lx * y
+                };
+      assert { rh < radix - 1
+               by
+               rl + radix * rh  <= (radix -1) * (radix -1)
+               so
+               radix * rh <= (radix -1) * (radix -1)
+               };
+      assert { rh = radix - 2 -> rl <= 1
+               by
+               rl + radix * rh <= (radix-1)*(radix-1) };
+      assert { rh = radix - 2 -> borrow <= 1
+               by rl <= 1 };
+      b := Limb.(+) rh borrow;
+      i := Int32.(+) !i (Int32.of_int 1);
+      assert { value r !i - (power radix !i) * !b
+                 = value (old r) !i
+                   - value x !i * y
+               by
+                (value r !i - (power radix !i) * !b
+                = value (r at StartLoop) !i +
+                   (power radix k) * (res - !lr)
+                   - (power radix !i) * !b
+                = value (r at StartLoop) !i +
+                   (power radix k) * (res - !lr)
+                   - (power radix !i) * (rh + borrow)
+                = value (r at StartLoop) !i +
+                   (power radix k) * (res - !lr)
+                   - (power radix k) * radix * (rh + borrow)
+                = value (r at StartLoop) !i +
+                   (power radix k) * (res - !lr
+                                   - radix * (rh + borrow))
+                = value (r at StartLoop) !i +
+                   (power radix k) * (res - radix * borrow
+                          - !lr - radix * rh)
+                = value (r at StartLoop) !i +
+                   (power radix k) * (!lr - rl - (!b at StartLoop)
+                          - !lr - radix * rh)
+                = value (r at StartLoop) !i -
+                   (power radix k) * (rl + radix * rh + (!b at StartLoop))
+                = value (r at StartLoop) !i -
+                   (power radix k) * (!lx * y + (!b at StartLoop))
+                = value (r at StartLoop) k
+                    + (power radix k) * !lr
+                    - (power radix k) * (!lx * y + (!b at StartLoop))
+                = value (r at StartLoop) k
+                    - (power radix k) * (!b at StartLoop)
+                    + (power radix k) * (!lr - !lx * y)
+                = value (old r) k
+                    - value x k * y
+                    + (power radix k) * (!lr - !lx * y)
+                = value (old r) k
+                    + (power radix k) * !lr
+                    - (value x k + (power radix k)*(!lx)) * y
+                = value (old r) !i
+                    - (value x k + (power radix k)*(!lx)) * y
+                = value (old r) !i
+                    - value x !i * y
+                    by
+                  value (old r) !i = value (old r) k
+                     + (power radix k) * (!lr)
+                     )
+                    };
+    done;
+    !b
+
+  (* [(x,sz)] is normalized if its most significant bit is set. *)
+  predicate normalized (x:t) (sz:int32) =
+    valid x sz
+    /\ (pelts x)[x.offset + sz - 1] >= div radix 2
+
+  let div_sb_qr (q x y:t) (sx sy:int32) : limb
+    requires { 3 <= sy <= sx }
+    requires { valid x sx }
+    requires { valid y sy }
+    requires { valid q (sx - sy) }
+    requires { normalized y sy }
+    ensures { value (old x) sx =
+              (value q (sx - sy)
+              + power radix (sx - sy) * result)
+                * value y sy
+              + value x sy }
+    ensures { value x sy < value y sy }
+    ensures { 0 <= result <= 1 }
+  =
+    let one = Int32.of_int 1 in
+    let two = Int32.of_int 2 in
+    let limb_zero = Limb.of_int 0 in
+    let zero = Int32.of_int 0 in
+    let uone = Limb.of_int 1 in
+    let xp = ref (C.incr x (Int32.(-) sx two)) in
+    let qp = ref (C.incr q (Int32.(-) sx sy)) in
+    let dh = C.get_ofs y (Int32.(-) sy one) in
+    assert { dh >= div radix 2 by normalized y sy };
+    let dl = C.get_ofs y (Int32.(-) sy two) in
+    let v = reciprocal_word_3by2 dh dl in
+    let i = ref (Int32.(-) sx sy) in
+    let mdn = Int32.(-) two sy in
+    let ql = ref limb_zero in
+    let xd = C.incr !xp mdn in
+    let ghost vy = value y (p2i sy) in
+    let x1 = ref limb_zero in
+    let x0 = ref limb_zero in
+    let r = compare_same_size xd y sy in
+    let qh = (*begin
+               ensures { r >= 0 -> result = 1 }
+               ensures { r < 0 -> result = 0 }*)
+               if (Int32.(>=) r zero)
+               then uone
+               else limb_zero
+             (*end*) in
+    label PreAdjust in
+    begin
+      ensures { value (old x) sx =
+                  (value !qp (sx - sy - !i)
+                   + qh * power radix (sx - sy - !i))
+                  * vy * power radix !i
+                  + value x (sy + !i - 1)
+                  + power radix (sy + !i - 1) * !x1 }
+      ensures { value_sub (pelts x) (!xp.offset + mdn)
+                 (!xp.offset + mdn + sy - 1)
+                 + power radix (sy - 1) * !x1
+                 < vy }
+      ensures { dl + radix * dh
+                  >= (pelts x)[(!xp).offset] + radix * !x1 }
+    let ghost ox = pelts x in
+    begin [@vc:sp]
+    if (not (Limb.(=) qh limb_zero))
+    then begin
+         assert { qh = 1 };
+         let ghost b = sub_in_place xd y sy sy in
+         begin
+             ensures { value (x at PreAdjust) sx =
+                  (value !qp (sx - sy - !i)
+                   + qh * power radix (sx - sy - !i))
+                  * vy * power radix !i
+                  + value x sx }
+             ensures { value_sub (pelts x) (!xp.offset + mdn)
+                 (!xp.offset + mdn + sy)
+                 < vy }
+           value_sub_upper_bound (pelts x) xd.offset (xd.offset + p2i sy);
+           assert { b = 0 };
+           assert { value (xd at PreAdjust) sy
+                    = value xd sy + vy };
+           value_sub_concat (pelts x) x.offset xd.offset (xd.offset + p2i sy);
+           value_sub_concat ox x.offset xd.offset (xd.offset + p2i sy);
+           value_sub_frame (pelts x) ox x.offset xd.offset;
+           assert { value (x at PreAdjust) sx
+             = value x sx
+             + power radix (sx - sy) * vy
+             by
+             value_sub (pelts (x at PreAdjust)) x.offset xd.offset
+             = value_sub (pelts x) x.offset xd.offset
+             so pelts (xd at PreAdjust) = pelts (x at PreAdjust)
+             so value_sub (pelts (x at PreAdjust)) xd.offset (xd.offset + sy)
+                = value (xd at PreAdjust) sy
+             so value (x at PreAdjust) sx
+             = value_sub (pelts (x at PreAdjust)) x.offset xd.offset
+               + power radix (sx - sy)
+               * value_sub (pelts (x at PreAdjust)) xd.offset (xd.offset + sy)
+             = value_sub (pelts x) x.offset xd.offset
+               + power radix (sx - sy)
+               * value (xd at PreAdjust) sy
+             = value_sub (pelts x) x.offset xd.offset
+               + power radix (sx - sy)
+               * (value xd sy + vy)
+             = value_sub (pelts x) x.offset xd.offset
+               + power radix (sx - sy)
+               * (value_sub (pelts x) (xd.offset) (xd.offset + sy) + vy)
+             = value_sub (pelts x) x.offset xd.offset
+               + power radix (sx - sy)
+               * value_sub (pelts x) (xd.offset) (xd.offset + sy)
+               + power radix (sx - sy) * vy
+             = value x sx
+               + power radix (sx - sy) * vy
+           };
+           value_sub_tail (pelts x) x.offset (x.offset + p2i sy + p2i !i - 1);
+           assert { value (x at PreAdjust) sx =
+                  (value !qp (sx - sy - !i)
+                   + qh * power radix (sx - sy - !i))
+                  * vy * power radix !i
+                  + value x sx
+                 by
+                   !i = sx - sy
+                 so power radix (sx - sy - !i) = 1
+                 so value !qp (sx - sy - !i) = 0 };
+           value_sub_lower_bound_tight (pelts y) y.offset (y.offset + p2i sy);
+           assert { value_sub (pelts x) (!xp.offset + mdn)
+                 (!xp.offset + mdn + sy)
+                 < vy
+                 by
+                 value_sub (pelts x) (!xp.offset + mdn)
+                           (!xp.offset + mdn + sy)
+                 = value xd sy
+                 = value (xd at PreAdjust) sy - vy
+                 so value (xd at PreAdjust) sy
+                    < power radix sy
+                 so vy >= dh * power radix (sy - 1)
+                 so 2 * vy >= 2 * dh * power radix (sy - 1)
+                 so 2 * dh >= radix
+                 so 2 * dh * power radix (sy - 1) >= radix * power radix (sy - 1)
+                 so 2 * vy >= radix * power radix (sy - 1) = power radix sy
+                 so value (xd at PreAdjust) sy < 2 * vy
+                 so value (xd at PreAdjust) sy - vy < vy };
+           end
+         end
+    else begin
+         assert { value_sub (pelts x) (!xp.offset + mdn)
+                 (!xp.offset + mdn + sy)
+                 < vy
+                 by r < 0 };
+         assert { value (x at PreAdjust) sx =
+                  (value !qp (sx - sy - !i)
+                   + qh * power radix (sx - sy - !i))
+                   * vy * power radix !i
+                   + value x sx
+                 by qh = 0
+                 so sx - sy - !i = 0
+                 so (value !qp (sx - sy - !i)
+                   + qh * power radix (sx - sy - !i)) = 0 };
+         end
+    end;
+    let ghost gx1 = (C.get_ofs !xp one) in
+    value_sub_tail (pelts y) y.offset (y.offset + p2i sy - 1);
+    value_sub_upper_bound_tight (pelts y) y.offset (y.offset + p2i sy - 1);
+    value_sub_tail (pelts x) (!xp.offset) (!xp.offset + p2i sy - 1);
+    value_sub_lower_bound_tight (pelts x) (!xp.offset) (!xp.offset + p2i sy - 1);
+    assert { dl + radix * dh
+             >= (pelts x)[(!xp).offset] + radix * gx1
+             by value_sub (pelts x) (!xp.offset + mdn)
+                                    (!xp.offset + mdn + sy)
+                < vy
+             so value y (sy - 1) < (dl + 1) * power radix (sy - 1 - 1)
+             so vy = dh * power radix (sy - 1)
+                     + value y (sy - 1)
+                     < dh * power radix (sy - 1)
+                     + (dl + 1) * power radix (sy - 1 - 1)
+                   = power radix (sy - 2) * (dl+1 + radix * dh)
+             so !xp.offset + mdn + sy - 1 = !xp.offset + 1
+             so (pelts x)[!xp.offset + mdn + sy - 1]
+                = (pelts x)[!xp.offset + 1] = gx1
+             so value_sub (pelts x) (!xp.offset + mdn) (!xp.offset + mdn + sy)
+                = gx1 * power radix (sy - 1)
+                     + value_sub (pelts x) (!xp.offset + mdn)
+                                           (!xp.offset + mdn + sy - 1)
+                >= gx1 * power radix (sy - 1)
+                   + (pelts x)[!xp.offset] * power radix (sy - 1 - 1)
+                = power radix (sy - 2)
+                  * ((pelts x) [!xp.offset] + radix * gx1)
+             so power radix (sy - 2) * ((pelts x) [!xp.offset] + radix * gx1)
+                < power radix (sy - 2) * (dl+1 + radix * dh)
+             so (pelts x) [!xp.offset] + radix * gx1
+                < dl + 1 + radix * dh
+             };
+    value_sub_tail (pelts x) (!xp.offset + p2i mdn)
+                   (!xp.offset + p2i mdn + p2i sy - 1);
+    value_sub_tail (pelts x) x.offset (x.offset + p2i sy + p2i !i - 1);
+
+    x1 := (C.get_ofs !xp one);
+    assert { value_sub (pelts x) (!xp.offset + mdn)
+                 (!xp.offset + mdn + sy - 1)
+                 + power radix (sy - 1) * !x1
+                 < vy
+             by
+             !xp.offset + mdn + sy - 1 = !xp.offset + 1
+             so value_sub (pelts x) (!xp.offset + mdn)
+                 (!xp.offset + mdn + sy - 1)
+                 + power radix (sy - 1) * !x1
+             = value_sub (pelts x) (!xp.offset + mdn)
+                 (!xp.offset + mdn + sy - 1)
+                 + power radix (sy - 1) * (pelts x)[!xp.offset + 1]
+             = value_sub (pelts x) (!xp.offset + mdn)
+                 (!xp.offset + mdn + sy - 1)
+                 + power radix (sy - 1)
+                   * (pelts x)[!xp.offset + mdn + sy - 1]
+             = value_sub (pelts x) (!xp.offset + mdn)
+                         (!xp.offset + mdn + sy)
+             < vy };
+    assert { value (x at PreAdjust) sx =
+                  (value !qp (sx - sy - !i)
+                   + qh * power radix (sx - sy - !i))
+                  * vy * power radix !i
+                  + value x (sy + !i - 1)
+                  + power radix (sy + !i - 1) * !x1
+                by value (x at PreAdjust) sx =
+                   (value !qp (sx - sy - !i)
+                   + qh * power radix (sx - sy - !i))
+                   * vy * power radix !i
+                   + value x sx
+                so sx = sy + !i
+                so x.offset + sy + !i - 1 = !xp.offset + 1
+                so (pelts x)[x.offset + sy + !i - 1] =
+                   (pelts x)[!xp.offset + 1]= !x1
+                so value x sx
+                   = value x (sx - 1)
+                     + power radix (sx -1) * (pelts x)[x.offset + sx - 1]
+                   = value x (sy + !i - 1)
+                     + power radix (sy + !i - 1) * (pelts x)[x.offset + sy + !i - 1]
+                so value x (sy + !i - 1)
+                  + power radix (sy + !i - 1) * !x1
+                  = value x sx
+           };
+    end;
+    while (Int32.(>) !i zero) do
+      variant { p2i !i }
+      invariant { 0 <= !i <= sx - sy }
+      invariant { (!qp).offset = q.offset + !i }
+      invariant { (!xp).offset = x.offset + sy + !i - 2 }
+      invariant { plength !qp = plength q }
+      invariant { !qp.min = q.min }
+      invariant { !qp.max = q.max }
+      invariant { plength !xp = plength x }
+      invariant { !xp.min = x.min }
+      invariant { !xp.max = x.max }
+      invariant { pelts !qp = pelts q }
+      invariant { pelts !xp = pelts x }
+      invariant { value (old x) sx =
+                  (value !qp (sx - sy - !i)
+                   + qh * power radix (sx - sy - !i))
+                  * vy * power radix !i
+                  + value x (sy + !i - 1)
+                  + power radix (sy + !i - 1) * !x1 }
+      invariant { value_sub (pelts x) (!xp.offset + mdn)
+                 (!xp.offset + mdn + sy - 1)
+                 + power radix (sy - 1) * !x1
+                 < vy }
+      invariant { dl + radix * dh
+                  >= (pelts x)[(!xp).offset] + radix * !x1 }
+      label StartLoop in
+      let ghost k = int32'int !i in
+      i := Int32.(-) !i one;
+      let ghost s = int32'int sy + int32'int !i - 1 in
+      xp.contents <- C.incr !xp (-1);
+      let xd = C.incr !xp mdn in
+      let nx0 = C.get_ofs !xp one in
+      if [@ex:unlikely] (Limb.(=) !x1 dh && Limb.(=) nx0 dl)
+      then begin
+        ql := Limb.of_int Limb.max_uint64;
+        value_sub_concat (pelts x) x.offset xd.offset (xd.offset + p2i sy);
+        value_sub_tail (pelts xd) xd.offset (xd.offset + p2i sy - 1);
+        let ghost vlx = value xd (p2i sy - 1) in
+        assert { value xd sy
+                 = vlx + power radix (sy - 1) * dl
+                 by value xd sy
+                    = vlx + power radix (sy - 1)
+                            * (pelts xd)[xd.offset + sy - 1]
+                 so xd.offset + sy - 1 = !xp.offset + mdn + sy - 1
+                                           = !xp.offset + 1
+                 so pelts xd = pelts !xp
+                 so (pelts xd)[xd.offset + sy - 1]
+                    = (pelts !xp)[!xp.offset + 1] = dl
+               };
+        value_sub_tail (pelts y) y.offset (y.offset + p2i sy - 1);
+        value_sub_tail (pelts y) y.offset (y.offset + p2i sy - 2);
+        let ghost vly = value y (p2i sy - 2) in
+        assert { vy = vly + power radix (sy - 2) * dl
+                          + power radix (sy - 1) * dh
+                 by (pelts y)[y.offset + sy - 1] = dh
+                 so (pelts y)[y.offset + sy - 2] = dl
+                 so
+                    vy = value y (sy - 1)
+                          + power radix (sy - 1) * dh
+                    = vly + power radix (sy - 2) * dl
+                          + power radix (sy - 1) * dh };
+        begin
+          ensures { value_sub (pelts xd) (xd.offset+1) (xd.offset + p2i sy - 1)
+                        + power radix (sy - 2) * dl
+                        + power radix (sy - 1) * dh
+                     < vy }
+          value_sub_tail (pelts xd) (xd.offset + 1) (xd.offset + p2i sy - 2);
+          assert { value_sub (pelts x) (!xp.offset at StartLoop + mdn)
+                             (!xp.offset at StartLoop + mdn + sy - 1)
+                   = value_sub (pelts xd) (xd.offset+1) (xd.offset + p2i sy - 1)
+                        + power radix (sy - 2) * dl
+                   by
+                   pelts x = pelts xd
+                   so !xp.offset at StartLoop + mdn = xd.offset + 1
+                   so !xp.offset at StartLoop + mdn + sy - 1 = xd.offset + sy
+                   so xd.offset + sy - 1 = !xp.offset + 1
+                   so pelts xd = pelts !xp
+                   so (pelts xd)[xd.offset + sy - 1] = (pelts !xp)[!xp.offset+1] = dl
+                   so value_sub (pelts x) (!xp.offset at StartLoop + mdn)
+                             (!xp.offset at StartLoop + mdn + sy - 1)
+                    = value_sub (pelts xd) (xd.offset+1) (xd.offset + sy)
+                    = value_sub (pelts xd) (xd.offset+1) (xd.offset + p2i sy - 1)
+                      + power radix (sy - 2)
+                        * (pelts xd)[xd.offset + p2i sy - 1]
+                    = value_sub (pelts xd) (xd.offset+1) (xd.offset + p2i sy - 1)
+                      + power radix (sy - 2) * dl
+                 };
+         assert { !x1 = dh };
+        end;
+        label SubMax in
+        let ghost xc = Array.copy (x.data) in
+        value_sub_frame (pelts x) xc.elts x.offset (x.offset + p2i !i);
+        let ghost b = submul_limb xd y !ql sy in
+        begin
+          ensures { value x !i
+                 = value (x at SubMax) !i }
+          assert { forall j. x.offset <= j < x.offset + !i
+                          -> (pelts x)[j] = xc.elts[j]
+                   by
+                   (pelts x)[j] = (pelts x at SubMax)[j]
+                   so
+                   ((pelts x at SubMax)[j] = xc.elts[j]
+                   by
+                   0 <= j /\ j < xc.Array.length
+                   ) };
+          value_sub_frame (pelts x) xc.elts x.offset (x.offset + p2i !i);
+        end;
+        value_sub_upper_bound (pelts xd) xd.offset (xd.offset + p2i sy);
+        value_sub_lower_bound (pelts xd) xd.offset (xd.offset + p2i sy);
+        value_sub_head (pelts xd) xd.offset (xd.offset + p2i sy - 1);
+        assert { vlx < radix * vly
+                 by
+                   vlx = value_sub (pelts xd at SubMax) xd.offset
+                                   (xd.offset + sy - 1)
+                       = (pelts xd at SubMax)[xd.offset]
+                         + radix * value_sub (pelts xd at SubMax)
+                                             (xd.offset + 1)
+                                             (xd.offset + sy - 1)
+                   so value_sub (pelts xd at SubMax) (xd.offset + 1)
+                                           (xd.offset + sy - 1)
+                      + power radix (sy - 2) * dl
+                      + power radix (sy - 1) * dh
+                      < vy
+                      = vly + power radix (sy - 2) * dl
+                            + power radix (sy - 1) * dh
+                   so value_sub (pelts xd at SubMax) (xd.offset + 1)
+                                           (xd.offset + sy - 1)
+                      < vly
+                   so value_sub (pelts xd at SubMax) (xd.offset + 1)
+                                           (xd.offset + sy - 1)
+                      <= vly - 1
+                   so vlx = (pelts xd at SubMax)[xd.offset]
+                            + radix * value_sub (pelts xd at SubMax)
+                                                (xd.offset + 1)
+                                                (xd.offset + sy - 1)
+                          <= (pelts xd at SubMax)[xd.offset]
+                            + radix * (vly - 1)
+                          < radix + radix * (vly - 1)
+                          = radix * vly
+               };
+        assert { b = dh
+                 by
+                   value xd sy
+                 = value (xd at SubMax) sy
+                   - (!ql) * vy
+                   + power radix sy * b
+                 so !ql = radix - 1
+                 so 0 <= value xd sy < power radix sy
+                 so radix * power radix (sy - 2) = power radix (sy - 1)
+                 so radix * power radix (sy - 1) = power radix sy
+                 so value xd sy
+                    = power radix (sy - 1) * dl + vlx
+                      - (radix - 1) * vy
+                      + power radix sy * b
+                    = power radix (sy - 1) * dl + vlx
+                      - radix * (vly + power radix (sy - 2) * dl
+                                + power radix (sy - 1) * dh)
+                      + vy + power radix sy * b
+                    = power radix (sy - 1) * dl + vlx
+                      - radix * vly - radix * power radix (sy - 2) * dl
+                      - radix * power radix (sy - 1) * dh
+                      + vy + power radix sy * b
+                    = power radix (sy - 1) * dl + vlx
+                      - radix * vly - power radix (sy - 1) * dl
+                      - power radix sy * dh
+                      + vy + power radix sy * b
+                    = power radix sy * (b - dh)
+                      + vlx - radix * vly + vy
+                 so vlx < radix * vly
+                 so (0 <= vlx - radix * vly + vy < power radix sy
+                      by
+                      vy - radix * vly
+                      = vly + power radix (sy - 2) * dl
+                          + power radix (sy - 1) * dh
+                          - radix * vly
+                      = power radix (sy - 2) * (dl + radix * dh)
+                        - vly * (radix - 1)
+                      so let pr2 = power radix (sy - 2) in
+                      0 <= vly < pr2
+                      so 0 <= vly * (radix - 1) < pr2 * (radix - 1)
+                      so vy - radix * vly
+                         >= pr2 * (dl + radix * dh)
+                           - pr2 * (radix - 1)
+                         = pr2 * (dl + radix * dh - (radix - 1))
+                      so dh + radix * dh - (radix - 1) >= 0
+                      so pr2 >= 0
+                      so vy - radix * vly
+                         >= pr2 * (dl + radix * dh - (radix - 1)) >= 0
+                      so vlx - radix * vly < 0
+                      so vlx - radix * vly + vy < vy < power radix sy
+                    )
+                 so - (power radix sy)
+                    < power radix sy * (b - dh)
+                    < power radix sy
+                 so - 1 < b - dh < 1
+               };
+        value_sub_concat (pelts x) x.offset xd.offset (x.offset + s);
+        x1 := C.get_ofs !xp one;
+        qp.contents <- C.incr !qp (-1);
+        value_sub_update_no_change (pelts q) (!qp).offset
+                            ((!qp).offset + 1)
+                            ((!qp).offset + p2i sx - p2i sy - p2i !i)
+                            !ql;
+        label QUp in
+        C.set !qp !ql;
+        assert { value_sub (pelts q) ((!qp).offset + 1)
+                              ((!qp).offset + sx - sy - !i)
+                    = value (!qp at StartLoop)
+                              (sx - sy - k)
+                by value_sub (pelts q) ((!qp).offset + 1)
+                              ((!qp).offset + sx - sy - !i)
+                   = value_sub (pelts q at QUp) (!qp.offset + 1)
+                              ((!qp).offset + sx - sy - !i)
+                   = value (!qp at StartLoop) (sx - sy - k)
+                (* by offset !qp at StartLoop = (!qp).offset + 1
+                so offset (!qp at StartLoop) + sx - sy - k
+                   = (!qp).offset + sx - sy - !i
+                so map_eq_sub_shift (pelts q) (pelts !qp at StartLoop)
+                              ((!qp).offset + 1) ((!qp).offset + 1) (sx + sy - k) *) };
+        value_sub_head (pelts q) (!qp).offset
+          ((!qp).offset + p2i sx - p2i sy - p2i !i);
+        value_sub_tail (pelts x) x.offset (x.offset + p2i sy + p2i !i - 1);
+        assert { value xd (sy - 1)
+                 + power radix (sy - 1) * !x1
+                 = value (xd at SubMax) sy
+                   + power radix sy * (!x1 at StartLoop)
+                   - !ql * vy
+                 by
+                 value xd sy
+                 = value (xd at SubMax) sy
+                   - (!ql) * vy
+                   + power radix sy * b
+                 so b = dh = !x1 at StartLoop
+                 so pelts !xp = pelts x = pelts xd
+                 so ((pelts xd)[xd.offset + sy - 1] = !x1
+                    by
+                    xd.offset = x.offset + !i
+                    so (!xp).offset = x.offset + !i + sy - 2
+                    so (!xp).offset + 1 = xd.offset + sy - 1
+                    so (pelts xd)[xd.offset + sy - 1]
+                       = (pelts !xp)[(!xp).offset + 1]
+                       = !x1
+                    )
+                 so value xd sy
+                    = value xd (sy - 1)
+                      + power radix (sy - 1) * (pelts xd)[xd.offset + sy - 1]
+                    = value xd (sy - 1)
+                      + power radix (sy - 1) * !x1
+               };
+        (* refl *)
+        assert { value (old x) sx =
+                  (value !qp (sx - sy - !i)
+                   + qh * power radix (sx - sy - !i))
+                  * vy * power radix !i
+                  + value x (sy + !i - 1)
+                  + power radix (sy + !i - 1) * !x1
+                 by
+                 pelts !xp = pelts x = pelts xd
+                 so
+                 value xd sy
+                 = value (xd at SubMax) sy
+                   - (!ql) * vy
+                   + power radix sy * b
+                 = value (xd at SubMax) sy
+                   - (!ql) * vy
+                   + power radix sy * dh
+                 so (value x s
+                    = value x !i
+                      + power radix !i
+                        * value xd (sy - 1)
+                    by
+                      xd.offset = x.offset + !i
+                      so x.offset + s = xd.offset + sy - 1
+                      so value_sub (pelts x) (x.offset + !i) (x.offset + s)
+                         = value xd (sy - 1)
+                      so value x s
+                    = value x !i
+                      + power radix !i
+                        * value_sub (pelts x) (x.offset + !i)
+                                              (x.offset + s)
+                    = value x !i
+                      + power radix !i
+                        * value xd (sy - 1))
+                 so (power radix s
+                    = power radix !i * power radix (sy - 1)
+                    by
+                    let n = !i in
+                    let m = sy - 1 in
+                    let x = radix in
+                    power x s = power x (n + m)
+                    so (power x (n + m) = power x n * power x m
+                       by 0 <= n
+                       so 0 <= m
+                       so forall x:int, n:int, m:int.
+                                 0 <= n -> 0 <= m ->
+                                 power x (n + m) = (power x n * power x m)))
+                 so (value x s + power radix s * !x1
+                    = value x !i
+                      + power radix !i * (value xd sy)
+                    by
+                    value x s + power radix s * !x1
+                    = value x !i
+                      + power radix !i
+                        * value xd (sy - 1)
+                      + power radix (!i + sy - 1) * !x1
+                    = value x !i
+                      + power radix !i *
+                        (value xd (sy - 1)
+                         + power radix (sy - 1) * !x1)
+                    = value x !i
+                      + power radix !i * (value xd sy)
+                    )
+                 so (value (x at StartLoop) (sy + k - 1)
+                    = value (x at SubMax) !i
+                      + power radix !i
+                        * value (xd at SubMax) sy
+                    by
+                    pelts xd at SubMax = pelts x at SubMax
+                    so x.offset at SubMax + !i = xd.offset at SubMax
+                    so
+                    value (x at StartLoop) (sy + k - 1)
+                    = value_sub (pelts x at SubMax) (x at SubMax).offset
+                                (xd.offset at SubMax)
+                      + power radix !i
+                        * value_sub (pelts x at SubMax)
+                           (xd.offset at SubMax)
+                           (xd.offset at SubMax + sy)
+                    so value_sub (pelts x at SubMax) (x at SubMax).offset
+                                 (xd at SubMax).offset
+                       = value (x at SubMax) !i
+                    so value_sub (pelts x at SubMax) (xd.offset at SubMax)
+                                                     (xd.offset at SubMax + sy)
+                       = value (xd at SubMax) sy
+                    )
+                 so value x !i
+                    = value (x at SubMax) !i
+                 so value x s + power radix s * !x1
+                    = value (x at StartLoop) (sy + k - 1)
+                      + power radix !i
+                        * (value xd sy
+                           - value (xd at SubMax) sy)
+                    = value (x at StartLoop) (sy + k - 1)
+                      + power radix !i
+                        * (- (!ql) * vy
+                           + power radix sy * b)
+                    = value (x at StartLoop) (sy + k - 1)
+                      + power radix !i
+                        * (- (!ql) * vy
+                           + power radix sy * (!x1 at StartLoop))
+                 so value !qp (sx - sy - !i)
+                    = !ql + radix *
+                          value_sub (pelts q) ((!qp).offset + 1)
+                                    ((!qp).offset + sx - sy - !i)
+                 so (value_sub (pelts q) ((!qp).offset + 1)
+                              ((!qp).offset + sx - sy - !i)
+                    = value (!qp at StartLoop)
+                              (sx - sy - k)
+                     by value (!qp at StartLoop) (sx - sy - k)
+                      = value_sub (pelts q at StartLoop)
+                                  (!qp.offset + 1) (!qp.offset + sx - sy - !i))
+                 so value !qp (sx - sy - !i)
+                    = !ql + radix * value (!qp at StartLoop)
+                                    (sx - sy - k)
+                 so power radix (sx - sy - !i)
+                    = radix * power radix (sx - sy - k)
+                 so radix * power radix !i = power radix k
+                 so (power radix !i * power radix sy
+                      = power radix (sy + k - 1)
+                      by !i + sy = sy + k - 1
+                      so power radix !i * power radix sy
+                         = power radix (!i + sy))
+                 so (value !qp (sx - sy - !i)
+                      + qh * power radix (sx - sy - !i))
+                      * vy * power radix !i
+                      + value x (sy + !i - 1)
+                      + power radix (sy + !i - 1) * !x1
+                    = (!ql + radix * value (!qp at StartLoop)
+                                    (sx - sy - k)
+                      + qh * power radix (sx - sy - !i))
+                      * vy * power radix !i
+                      + value x (sy + !i - 1)
+                      + power radix (sy + !i - 1) * !x1
+                    = (!ql + radix * value (!qp at StartLoop)
+                                    (sx - sy - k)
+                      + radix * qh * power radix (sx - sy - k))
+                      * vy * power radix !i
+                      + value x (sy + !i - 1)
+                      + power radix (sy + !i - 1) * !x1
+                    = (!ql + radix * value (!qp at StartLoop)
+                                    (sx - sy - k)
+                      + radix * qh * power radix (sx - sy - k))
+                      * vy * power radix !i
+                      + value x s
+                      + power radix s * !x1
+                    = !ql * vy * power radix !i
+                      + radix * (value (!qp at StartLoop)
+                                    (sx - sy - k)
+                                 + qh * power radix (sx - sy - k))
+                        * vy * power radix !i
+                      + value x s
+                      + power radix s * !x1
+                    = !ql * vy * power radix !i
+                      + (value (!qp at StartLoop)
+                                    (sx - sy - k)
+                                 + qh * power radix (sx - sy - k))
+                        * vy * radix * power radix !i
+                      + value x s
+                      + power radix s * !x1
+                    = !ql * vy * power radix !i
+                      + (value (!qp at StartLoop)
+                                    (sx - sy - k)
+                                 + qh * power radix (sx - sy - k))
+                        * vy * power radix k
+                      + value x s
+                      + power radix s * !x1
+                    = !ql * vy * power radix !i
+                      + (value (!qp at StartLoop)
+                                    (sx - sy - k)
+                                 + qh * power radix (sx - sy - k))
+                        * vy * power radix k
+                      + value (x at StartLoop) (sy + k - 1)
+                      + power radix !i
+                        * (- (!ql) * vy
+                           + power radix sy * (!x1 at StartLoop))
+                    = (value (!qp at StartLoop)
+                                    (sx - sy - k)
+                                 + qh * power radix (sx - sy - k))
+                        * vy * power radix k
+                      + value (x at StartLoop) (sy + k - 1)
+                      + power radix !i * power radix sy
+                        * (!x1 at StartLoop)
+                    = (value (!qp at StartLoop)
+                                    (sx - sy - k)
+                                 + qh * power radix (sx - sy - k))
+                        * vy * power radix k
+                      + value (x at StartLoop) (sy + k - 1)
+                      + power radix (sy + k - 1) * (!x1 at StartLoop)
+                    = value (old x) sx
+                  };
+        assert { value_sub (pelts x) (!xp.offset + mdn)
+                   (!xp.offset + mdn + sy - 1)
+                   + power radix (sy - 1) * !x1
+                   < vy
+                   by
+                     pelts x = pelts xd
+                   so xd.offset = !xp.offset + mdn
+                   so !xp.offset + mdn + sy - 1 = xd.offset + sy - 1
+                   so
+                     value xd (sy - 1)
+                     = value_sub (pelts xd) xd.offset (xd.offset + sy - 1)
+                     = value_sub (pelts x) (!xp.offset + mdn)
+                       (!xp.offset + mdn + sy - 1)
+                   so value_sub (pelts x) (!xp.offset + mdn)
+                                (!xp.offset + mdn + sy - 1)
+                      + power radix (sy - 1) * !x1
+                      = value (xd at SubMax) sy
+                        + power radix sy * (!x1 at StartLoop)
+                        - !ql * vy
+                   so value (xd at SubMax) sy =
+                      vlx + power radix (sy - 1) * dl
+                   so vlx < radix * vly
+                   so (value (xd at SubMax) sy
+                        + power radix sy * (!x1 at StartLoop)
+                      < radix * vy
+                      by
+                      !x1 at StartLoop = dh
+                      so power radix sy = radix * power radix (sy - 1)
+                      so power radix (sy - 1) = radix * power radix (sy - 2)
+                      so value (xd at SubMax) sy
+                          + power radix sy * (!x1 at StartLoop)
+                         = vlx + power radix (sy - 1) * dl
+                               + power radix sy * dh
+                         < radix * vly + power radix (sy - 1) * dl
+                                       + power radix sy * dh
+                         = radix * vly + radix * power radix (sy - 2) * dl
+                                       + radix * power radix (sy - 1) * dh
+                         = radix * (vly + power radix (sy - 2) * dl
+                                        + power radix (sy - 1) * dh)
+                         = radix * vy
+                      )
+                   so !ql = radix - 1
+                   so value (xd at SubMax) sy
+                        + power radix sy * (!x1 at StartLoop)
+                        - !ql * vy
+                      < radix * vy - (radix - 1) * vy
+                      = vy
+               };
+          value_sub_tail (pelts x) (!xp.offset + p2i mdn) (!xp.offset);
+          value_sub_upper_bound (pelts y) (y.offset) (y.offset + p2i sy - 2);
+          value_sub_lower_bound (pelts x) (!xp.offset + p2i mdn) (!xp.offset);
+          assert { dl + radix * dh
+                   >= (pelts x)[(!xp).offset] + radix * !x1
+                   by
+                   vy = vly + power radix (sy - 2)
+                              * (dl + radix * dh)
+                   so value_sub (pelts x) (!xp.offset + mdn)
+                   (!xp.offset + mdn + sy - 1)
+                   + power radix (sy - 1) * !x1
+                   < vy
+                   so !xp.offset + mdn + sy - 1 = !xp.offset + 1
+                   so power radix (sy - 1) = power radix (sy - 2) * radix
+                   so - mdn = sy - 2
+                   so vy
+                      > value_sub (pelts x) (!xp.offset + mdn)
+                                            (!xp.offset + mdn + sy - 1)
+                        + power radix (sy - 1) * !x1
+                      = value_sub (pelts x) (!xp.offset + mdn)
+                                            (!xp.offset + 1)
+                        + power radix (sy - 1) * !x1
+                      = value_sub (pelts x) (!xp.offset + mdn) (!xp.offset)
+                        + power radix (- mdn) * (pelts x)[(!xp).offset]
+                        + power radix (sy - 1) * !x1
+                      = value_sub (pelts x) (!xp.offset + mdn) (!xp.offset)
+                        + power radix (sy - 2) * (pelts x)[(!xp).offset]
+                        + power radix (sy - 1) * !x1
+                      = value_sub (pelts x) (!xp.offset + mdn) (!xp.offset)
+                        + power radix (sy - 2) * (pelts x)[(!xp).offset]
+                        + power radix (sy - 2) * radix * !x1
+                      = value_sub (pelts x) (!xp.offset + mdn) (!xp.offset)
+                        + power radix (sy - 2)
+                          * ((pelts x)[(!xp).offset] + radix * !x1)
+                      >= power radix (sy - 2)
+                          * ((pelts x)[(!xp).offset] + radix * !x1)
+                   so vly < power radix (sy - 2)
+                   so vy < power radix (sy - 2)
+                           + power radix (sy - 2)
+                              * (dl + radix * dh)
+                           = power radix (sy - 2)
+                             * (1 + dl + radix * dh)
+                   so power radix (sy - 2)
+                      * ((pelts x)[(!xp).offset] + radix * !x1)
+                      < power radix (sy - 2) * (1 + dl + radix * dh)
+                   so power radix (sy - 2)
+                      * ((pelts x)[(!xp).offset] + radix * !x1
+                        - (1 + dl + radix * dh))
+                      < 0
+                   so (pelts x)[(!xp).offset] + radix * !x1
+                        - (1 + dl + radix * dh)
+                      < 0
+                 };
+      end
+      else begin
+        assert { dl + radix * dh
+                  > (pelts x)[(!xp).offset + 1] + radix * !x1
+                  by
+                  dl + radix * dh
+                  >= (pelts x)[(!xp).offset + 1] + radix * !x1
+                  so dh >= !x1
+                  so [@case_split] dh <> !x1
+                   \/ (dh = !x1
+                      /\ dl <> (pelts x)[(!xp).offset + 1])
+                  so
+                   [@case_split] dh > !x1 \/
+                   (dh = !x1 /\ dl > (pelts x)[(!xp).offset + 1])
+        };
+        label SmallDiv in
+        let ghost vlx = value xd (p2i sy - 2) in
+        let xp0 = C.get !xp in
+        let xp1 = C.get_ofs !xp one in
+        begin
+          ensures { value xd sy =
+                    vlx
+                    + power radix (sy - 2) * (xp0 + radix * xp1) }
+        value_sub_tail (pelts xd) xd.offset (xd.offset + p2i sy - 1);
+        value_sub_tail (pelts xd) xd.offset (xd.offset + p2i sy - 2);
+        value_sub_upper_bound (pelts xd) xd.offset (xd.offset + p2i sy - 2);
+        assert { value xd sy
+                 = vlx + power radix (sy - 2)
+                         * (xp0 + radix * xp1)
+                 by xd.offset + sy - 2 = !xp.offset
+                 so (pelts xd)[xd.offset + sy - 1] = xp1
+                 so (pelts xd)[xd.offset + sy - 2] = xp0
+                 so pelts xd = pelts !xp
+                 so value xd sy
+                    = value xd (sy - 1)
+                      + power radix (sy - 1)
+                            * (pelts xd)[xd.offset + sy - 1]
+                    = value xd (sy - 2)
+                      + power radix (sy - 2)
+                        * (pelts xd)[xd.offset + sy - 2]
+                      + power radix (sy - 1)
+                        * (pelts xd)[xd.offset + sy - 1]
+                    = vlx
+                      + power radix (sy - 2) * xp0
+                      + power radix (sy - 1) * xp1
+                    = value xd (sy - 2)
+                      + power radix (sy - 2) * xp0
+                      + power radix (sy - 2) * radix * xp1
+                    = vlx + power radix (sy - 2)
+                         * (xp0 + radix * xp1)
+               };
+        end;
+        let qu, rl, rh =
+            div3by2_inv !x1 xp1 xp0 dh dl v in
+        ql := qu;
+        x1 := rh;
+        x0 := rl;
+        label SubProd in
+        value_sub_concat (pelts x) x.offset xd.offset
+                           (x.offset + p2i sy + k - 1);
+        let ghost xc = Array.copy (x.data) in
+        value_sub_frame (pelts x) xc.elts x.offset (x.offset + p2i !i);
+        let cy = submul_limb xd y !ql (Int32.(-) sy two) in
+        label PostSub in
+        begin
+          ensures { value x !i
+                 = value (x at SubProd) !i }
+          assert { forall j. x.offset <= j < x.offset + !i
+                          -> (pelts x)[j] = xc.elts[j]
+                   by
+                   (pelts x)[j] = (pelts x at SubProd)[j]
+                   so
+                   ((pelts x at SubProd)[j] = xc.elts[j]
+                   by
+                   0 <= j /\ j < xc.Array.length
+                   ) };
+          value_sub_frame (pelts x) xc.elts x.offset (x.offset + p2i !i);
+        end;
+        let cy1 = [@vc:sp] if (Limb.(<) !x0 cy) then uone else limb_zero in
+        x0 := sub_mod !x0 cy;
+        let cy2 = [@vc:sp] if (Limb.(<) !x1 cy1) then uone else limb_zero in
+        x1 := sub_mod !x1 cy1;
+        assert { 0 <= cy2 <= 1 };
+        (* assert { cy2 = 1 -> rh = 0 }; (* and cy > rl *)*)
+        value_sub_update (pelts x) (!xp).offset xd.offset
+                                   (xd.offset + p2i sy - 1) !x0;
+        value_sub_update_no_change (pelts x) (!xp).offset
+                                   x.offset (x.offset + p2i !i) !x0;
+        value_sub_update_no_change (pelts x) (!xp).offset
+                                   xd.offset (xd.offset + p2i sy - 2) !x0;
+        C.set !xp !x0;
+        assert { value x !i
+                 = value (x at SubProd) !i
+                 by
+                 value x !i
+                 = value (x at PostSub) !i
+                 = value (x at SubProd) !i };
+        value_sub_tail (pelts x) xd.offset (xd.offset + p2i sy - 1);
+        begin
+          ensures { value xd (sy - 1)
+                   + power radix (sy - 1) * !x1
+                   - power radix sy * cy2
+                 = value (xd at SubProd) sy
+                   + power radix sy * (!x1 at StartLoop)
+                   - !ql * vy }
+          assert { value xd (sy - 2)
+                   = value (xd at PostSub) (sy - 2) };
+          value_sub_tail (pelts y) y.offset (y.offset + p2i sy - 1);
+          value_sub_tail (pelts y) y.offset (y.offset + p2i sy - 2);
+          let ghost vly = value y (p2i sy - 2) in
+          assert { vy = vly + power radix (sy - 2)
+                              * (dl + radix * dh)
+                   by (pelts y)[y.offset + sy - 1] = dh
+                   so (pelts y)[y.offset + sy - 2] = dl
+                   so
+                      vy = value y (sy - 1)
+                            + power radix (sy - 1) * dh
+                         = vly + power radix (sy - 2) * dl
+                            + power radix (sy - 1) * dh
+                   so power radix (sy - 1)
+                      = power radix (sy - 2) * radix };
+          assert { value xd (sy - 2)
+                   - power radix (sy - 2) * cy
+                   = vlx - !ql * vly
+                   by
+                   value xd (sy - 2)
+                     - power radix (sy - 2) * cy
+                   = value (xd at PostSub) (sy - 2)
+                     - power radix (sy - 2) * cy
+                   = vlx - !ql * vly
+                 };
+          assert { power radix sy
+                   = power radix (sy - 2) * radix * radix };
+          assert { xp0 + radix * xp1
+                   + radix * radix * !x1 at StartLoop
+                   - !ql * (dl + radix * dh)
+                  = rl + radix * rh };
+          begin ensures { value (xd at SubProd) sy
+                     + power radix sy * (!x1 at StartLoop)
+                     - !ql * vy
+                   = value xd (sy - 2)
+                     - power radix (sy - 2) * cy
+                     + power radix (sy - 2) *
+                       (rl + radix * rh) }
+            assert { value (xd at SubProd) sy
+                     = vlx + power radix (sy - 2) * xp0
+                           + power radix (sy - 1) * xp1 }; (*nonlinear*)
+            assert { !ql * vy = !ql * vly
+                                + power radix (sy - 2)
+                                  * (!ql * (dl + radix * dh)) }; (*nonlinear*)
+            (*assert { value (xd at SubProd) sy
+                       + power radix sy * (!x1 at StartLoop)
+                       - !ql * vy
+                     = value xd (sy - 2)
+                       - power radix (sy - 2) * cy
+                       + power radix (sy - 2) * (rl + radix * rh)
+                   by
+                   value (xd at SubProd) sy
+                     + power radix sy * (!x1 at StartLoop)
+                     - !ql * vy
+                   = vlx + power radix (sy - 2)
+                           * (xp0 + radix * xp1)
+                     + power radix sy * (!x1 at StartLoop)
+                     - !ql * vy
+                   = vlx + power radix (sy - 2)
+                           * (xp0 + radix * xp1)
+                     + power radix sy * (!x1 at StartLoop)
+                     - !ql * (vly + power radix (sy - 2)
+                                        * (dl + radix * dh))
+                   = vlx
+                     + power radix (sy - 2)
+                       * (xp0 + radix * xp1
+                          + radix * radix * !x1 at StartLoop)
+                     - !ql * (vly + power radix (sy - 2)
+                                        * (dl + radix * dh))
+                   = vlx
+                     + power radix (sy - 2)
+                       * (xp0 + radix * xp1
+                          + radix * radix * !x1 at StartLoop)
+                     - !ql * vly
+                     - power radix (sy - 2)
+                       * !ql * (dl + radix * dh)
+                   = vlx - !ql * vly
+                     + power radix (sy - 2)
+                       * (xp0 + radix * xp1
+                          + radix * radix * !x1 at StartLoop
+                          - !ql * (dl + radix * dh))
+                   = vlx - !ql * vly
+                     + power radix (sy - 2) *
+                       (rl + radix * rh)
+                   = value xd (sy - 2)
+                     - power radix (sy - 2) * cy
+                     + power radix (sy - 2) *
+                       (rl + radix * rh)
+                  } *)
+           end;
+           begin ensures { value xd (sy - 2)
+                     - power radix (sy - 2) * cy
+                     + power radix (sy - 2) * (rl + radix * rh)
+                    =  value xd (sy - 1)
+                    + power radix (sy - 1) * !x1
+                    - power radix sy * cy2 }
+           value_sub_tail (pelts xd) xd.offset (xd.offset + p2i sy - 2);
+           assert { value xd (sy - 1)
+                    = value xd (sy - 2)
+                      + power radix (sy - 2) * !x0
+                    by (pelts xd)[xd.offset + sy - 2] = !x0
+                    so value xd (sy - 1)
+                       = value_sub (pelts xd) xd.offset (xd.offset + sy - 1)
+                       = value_sub (pelts xd) xd.offset (xd.offset + sy - 2)
+                         + power radix (sy - 2) * !x0
+                       = value xd (sy - 2)
+                         + power radix (sy - 2) * !x0 };
+           assert { rl + radix * rh - cy
+                     = !x0 + radix * !x1 - power radix 2 * cy2
+                     by
+                        (!x0 - radix * cy1 = rl - cy
+                         by
+                         !x0 = mod (rl - cy) radix
+                         so - radix < rl - cy < radix
+                         so (if rl < cy
+                             then cy1 = 1
+                                  /\ (- radix < rl - cy < 0
+                                     so
+                                     div (rl - cy) radix = - 1
+                                     so rl - cy
+                                     = radix * div (rl - cy) radix
+                                       + mod (rl - cy) radix
+                                     = !x0 - radix
+                                     = !x0 - radix * cy1)
+                             else cy1 = 0 /\ rl - cy = l2i !x0)) }
+                    (* nonlinear *)
+          (* refl example *)
+          (* assert { value xd (sy - 2)
+                     - power radix (sy - 2) * cy
+                     + power radix (sy - 2) *
+                       (rl + radix * rh)
+                    =  value xd (sy - 1)
+                    + power radix (sy - 1) * !x1
+                    - power radix sy * cy2
+                    by
+                     (rl + radix * rh - cy
+                     = !x0 + radix * !x1 - radix * radix * cy2
+                     by
+                         (!x0 - radix * cy1 = rl - cy
+                         by
+                         !x0 = mod (rl - cy) radix
+                         so - radix < rl - cy < radix
+                         so (if rl < cy
+                             then cy1 = 1
+                                  /\ (- radix < rl - cy < 0
+                                  so
+                                     div (rl - cy) radix = - 1
+                                  so rl - cy
+                                     = radix * div (rl - cy) radix
+                                       + mod (rl - cy) radix
+                                     = !x0 - radix
+                                     = !x0 - radix * cy1)
+                             else cy1 = 0 /\ rl - cy = l2i !x0)
+                         )
+                      so !x1 - radix * cy2 = rh - cy1
+                      so radix * !x1 - radix * radix * cy2
+                         = radix * rh - radix * cy1
+                      so radix * rh
+                         = radix * cy1
+                           + radix * !x1 - radix * radix * cy2
+                      so rl + radix * rh - cy
+                         = rl - cy + radix * rh
+                         = !x0 - radix * cy1 + radix * rh
+                         = !x0 - radix * cy1
+                           + radix * cy1
+                           + radix * !x1 - radix * radix * cy2
+                         = !x0 + radix * !x1 - radix * radix * cy2
+                    )
+                    so
+                      ( - power radix (sy - 2) * cy
+                       + power radix (sy - 2) * (rl + radix * rh)
+                     = power radix (sy - 2)
+                       * (rl + radix * rh - cy)
+                     = power radix (sy - 2)
+                       * (!x0 + radix * !x1 - radix * radix * cy2)
+                     = power radix (sy - 2) * !x0
+                       + power radix (sy - 1) * !x1
+                       - power radix sy * cy2
+                     by power radix (sy - 2) * radix = power radix (sy - 1)
+                     so power radix (sy - 2) * radix * radix = power radix sy
+                     )
+                     so value xd (sy - 2)
+                        - power radix (sy - 2) * cy
+                        + power radix (sy - 2) * (rl + radix * rh)
+                      = value xd (sy - 2)
+                        + power radix (sy - 2) * !x0
+                        + power radix (sy - 1) * !x1
+                        - power radix sy * cy2
+                      = value xd (sy - 1)
+                        + power radix (sy - 1) * !x1
+                        - power radix sy * cy2
+                  }*)
+           end;
+        end;
+        if [@ex:unlikely] (not (Limb.(=) cy2 limb_zero))
+        then begin
+          label Adjust in
+          assert { cy2 = 1 };
+          begin ensures { !ql > 0 }
+            value_sub_lower_bound (pelts y) y.offset (y.offset + p2i sy - 1);
+            value_sub_tail (pelts y) y.offset (y.offset + p2i sy - 1);
+            value_sub_upper_bound (pelts xd) xd.offset (xd.offset + p2i sy - 1);
+            assert { !ql > 0
+                      by
+                        (value xd (sy - 1)
+                         + power radix (sy - 1) * !x1
+                         - power radix sy * cy2
+                         < 0
+                         by
+                         value xd (sy - 1) < power radix (sy - 1)
+                         so !x1 <= radix - 1
+                         so  value xd (sy - 1)
+                             + power radix (sy - 1) * !x1
+                           < power radix (sy - 1)
+                             + power radix (sy - 1) * !x1
+                           = power radix (sy - 1) * (1 + !x1)
+                           <= power radix (sy - 1) * radix
+                           = power radix sy
+                         so  value xd (sy - 1)
+                             + power radix (sy - 1) * !x1
+                             - power radix sy * cy2
+                           < power radix sy - power radix sy * cy2
+                           = 0
+                       )
+                      so value (xd at SubProd) sy
+                         + power radix sy * (!x1 at StartLoop)
+                         - !ql * vy
+                         < 0
+                      so (value (xd at SubProd) sy
+                         + power radix sy * (!x1 at StartLoop) >= 0
+                         by value (xd at SubProd) sy >= 0
+                         so !x1 at StartLoop >= 0
+                         so power radix sy * (!x1 at StartLoop) >= 0
+                         )
+                      so !ql * vy > 0
+                      so vy = value_sub (pelts y)
+                                y.offset (y.offset + sy - 1)
+                              + power radix (sy - 1) * dh
+                      so dh > 0
+                      so vy > 0
+                   };
+          end;
+          value_sub_tail (pelts y) y.offset (y.offset + p2i sy - 1);
+          value_sub_tail (pelts y) y.offset (y.offset + p2i sy - 2);
+          let ghost vly = value y (p2i sy - 2) in
+          assert { vy = vly + power radix (sy - 2) * dl
+                            + power radix (sy - 1) * dh
+                   by (pelts y)[y.offset + sy - 1] = dh
+                   so (pelts y)[y.offset + sy - 2] = dl
+                   so
+                      vy = value y (sy - 1)
+                            + power radix (sy - 1) * dh
+                         = vly + power radix (sy - 2) * dl
+                            + power radix (sy - 1) * dh };
+          begin
+            ensures { value xd (sy - 1)
+                      + power radix (sy - 1) * !x1
+                      >= power radix sy - vy }
+            assert { value xd (sy - 1)
+                      + power radix (sy - 1) * !x1
+                     = power radix sy + value (xd at SubProd) sy
+                       + power radix sy * (!x1 at StartLoop)
+                       - !ql * vy };
+            assert {  value (xd at SubProd) sy
+                       + power radix sy * (!x1 at StartLoop)
+                       - !ql * vy
+                      >= - vy
+                      by
+                         value (xd at SubProd) sy
+                         = vlx + power radix (sy - 2) * (xp0 + radix * xp1)
+                      so xp0 + radix * xp1 + radix * radix * (!x1 at StartLoop)
+                         = !ql * (dl + radix * dh) + rl + radix * rh
+                      so power radix (sy - 1) = power radix (sy - 2) * radix
+                      so vy = vly + power radix (sy - 2) * (dl + radix * dh)
+                      so (!ql * vly < vy
+                           by
+                          vly <= power radix (sy - 2)
+                          so !ql < radix
+                          so !ql * vly <= !ql * power radix (sy - 2)
+                                       < radix * power radix (sy - 2)
+                                       = power radix (sy - 1)
+                          so vy = vly + power radix (sy - 2) * (dl + radix * dh)
+                          so dh >= div radix 2 > 1
+                          so vly >= 0
+                          so dl >= 0
+                          so vy >= power radix (sy - 2) * radix * dh
+                                > power radix (sy - 2) * radix * 1
+                                = power radix (sy - 1)
+                          )
+                      so - !ql * vly > - vy
+                      so vlx >= 0
+                      so power radix sy = power radix (sy - 2) * radix * radix
+                      so value (xd at SubProd) sy
+                       + power radix sy * (!x1 at StartLoop)
+                       - !ql * vy
+                         = vlx + power radix (sy - 2) * (xp0 + radix * xp1)
+                           + power radix sy * (!x1 at StartLoop)
+                           - !ql * vy
+                         = vlx + power radix (sy - 2) * (xp0 + radix * xp1)
+                           + power radix (sy - 2)
+                             * radix * radix * (!x1 at StartLoop)
+                           - !ql * vy
+                         = vlx + power radix (sy - 2)
+                                 * (xp0 + radix * xp1
+                                     + radix * radix * (!x1 at StartLoop))
+                           - !ql * vy
+                         = vlx + power radix (sy - 2) *
+                               (!ql * (dl + radix * dh) + rl + radix * rh)
+                           - !ql * vy
+                         = vlx + power radix (sy - 2) *
+                               (!ql * (dl + radix * dh) + rl + radix * rh)
+                           - !ql * (vly
+                                    + power radix (sy - 2) * (dl + radix * dh))
+                         = vlx + power radix (sy - 2) * (rl + radix * rh)
+                           - !ql * vly
+                         >= power radix (sy - 2) * (rl + radix * rh)
+                            - !ql * vly
+                         >= - !ql * vly > - vy
+                   };
+          end;
+          let ghost xc = Array.copy (x.data) in
+          assert { forall j. x.offset <= j < x.offset + !i
+                          -> (pelts x)[j] = xc.elts[j]
+                   by
+                   0 <= x.offset <= j /\ j < x.offset + !i <= xc.Array.length
+                   so 0 <= j < xc.Array.length
+                 } ;
+          value_sub_frame (pelts x) xc.elts x.offset (x.offset + p2i !i);
+          let c = add_in_place xd y (Int32.(-) sy one) (Int32.(-) sy one) in
+          begin
+          ensures { value x !i
+                 = value (x at Adjust) !i }
+          assert { forall j. x.offset <= j < x.offset + !i
+                          -> (pelts x)[j] = xc.elts[j]
+                   by
+                   pelts (xd at Adjust) = pelts (x at Adjust)
+                   so pelts x = pelts xd
+                   so (pelts x)[j] = (pelts x at Adjust)[j]
+                   so
+                   ((pelts x at Adjust)[j] = xc.elts[j]
+                   by
+                   0 <= j /\ j < xc.Array.length
+                   ) } ;
+          value_sub_frame (pelts x) xc.elts x.offset (x.offset + p2i !i);
+          end;
+          label MidAdd in
+          begin
+            ensures { value xd (sy - 1) + power radix (sy - 1) * !x1
+                      = value (xd at Adjust) (sy - 1)
+                      + power radix (sy - 1) * (!x1 at Adjust)
+                      + vy
+                      - power radix sy }
+            assert { 0 <= c <= 1
+                     by
+                     value xd (sy - 1) + c * power radix (sy - 1)
+                     = value (xd at Adjust) (sy - 1)
+                       + value y (sy - 1)
+                     so
+                        value (xd at Adjust) (sy - 1)
+                        < power radix (sy - 1)
+                     so value y (sy - 1) < power radix (sy - 1)
+                     so value xd (sy - 1) >= 0
+                     so c * power radix (sy - 1) < 2 * power radix (sy - 1)
+                     so let p = power radix (sy - 1) in
+                        (c < 2 by c * p < 2 * p so p > 0)
+                   };
+            let ghost c' = div (l2i !x1 + l2i dh + l2i c) radix in
+            x1 := add_mod !x1 (add_mod dh c);
+            assert { !x1 + c' * radix = !x1 at Adjust + dh + c
+                     by
+                        (!x1 = mod (!x1 at Adjust + dh + c) radix
+                        by
+                        !x1 = mod (!x1 at Adjust + (mod (dh + c) radix)) radix
+                        so mod (div (dh + c) radix * radix + !x1 at Adjust
+                                + mod (dh + c) radix) radix
+                           = mod (!x1 at Adjust + (mod (dh + c) radix)) radix
+                        so !x1 = mod (div (dh + c) radix * radix + !x1 at Adjust
+                                + mod (dh + c) radix) radix
+                               = mod (!x1 at Adjust + dh + c) radix
+                        )
+                     so (!x1 at Adjust) + dh + c
+                        = div (!x1 at Adjust + dh + c) radix * radix
+                          + mod (!x1 at Adjust + dh + c) radix
+                        = c' * radix + !x1
+                     };
+            assert { 0 <= c' <= 1 };
+            value_sub_tail (pelts y) y.offset (y.offset + p2i sy - 1);
+            assert { value xd (sy - 1) + power radix (sy - 1) * !x1
+                     = value (xd at Adjust) (sy - 1)
+                       + power radix (sy - 1) * (!x1 at Adjust)
+                       + vy
+                       - power radix sy
+                     by
+                     value xd (sy - 1) + power radix (sy - 1) * c
+                     = value (xd at Adjust) (sy - 1)
+                       + value y (sy - 1)
+                     so vy = value y (sy - 1)
+                             + power radix (sy - 1) * dh
+                     so value xd (sy - 1) + power radix (sy - 1) * c
+                         + power radix (sy - 1) * (!x1 at Adjust)
+                         + power radix (sy - 1) * dh
+                        = value (xd at Adjust) (sy - 1)
+                           + value y (sy - 1)
+                           + power radix (sy - 1) * (!x1 at Adjust)
+                           + power radix (sy - 1) * dh
+                        = value (xd at Adjust) (sy - 1)
+                           + power radix (sy - 1) * (!x1 at Adjust)
+                           + vy
+                     so value xd (sy - 1) + power radix (sy - 1) * c
+                         + power radix (sy - 1) * (!x1 at Adjust)
+                         + power radix (sy - 1) * dh
+                        = value xd (sy - 1)
+                          + power radix (sy - 1) * (c + dh + !x1 at Adjust)
+                        = value xd (sy - 1)
+                          + power radix (sy - 1) * (!x1 + radix * c')
+                        = value xd (sy - 1)
+                          + power radix (sy - 1) * !x1
+                          + power radix sy * c'
+                      so  value xd (sy - 1)
+                            + power radix (sy - 1) * !x1
+                            + power radix sy * c'
+                          = value (xd at Adjust) (sy - 1)
+                            + power radix (sy - 1) * (!x1 at Adjust)
+                            + vy
+                      so value (xd at Adjust) (sy - 1)
+                            + power radix (sy - 1) * (!x1 at Adjust)
+                         >= power radix sy - vy
+                      so value xd (sy - 1) < power radix (sy - 1)
+                      so !x1 <= radix - 1
+                      so power radix (sy - 1) * !x1
+                         <= power radix (sy - 1) * (radix - 1)
+                      so value xd (sy - 1)
+                            + power radix (sy - 1) * !x1
+                         <= value xd (sy - 1)
+                            + power radix (sy - 1) * (radix - 1)
+                         < power radix (sy - 1)
+                           + power radix (sy - 1) * (radix - 1)
+                         = power radix sy
+                      so c' <> 0
+                      so c' = 1
+                      };
+          end;
+          ql := Limb.(-) !ql uone;
+          (* todo refl *)
+          assert { value xd (sy - 1) + power radix (sy - 1) * !x1
+                   =  value (xd at SubProd) sy
+                   + power radix sy * (!x1 at StartLoop)
+                   - !ql * vy
+                   by
+                   value xd (sy - 1) + power radix (sy - 1) * !x1
+                   = value (xd at Adjust) (sy - 1)
+                       + power radix (sy - 1) * (!x1 at Adjust)
+                       + vy
+                       - power radix sy
+                   = value (xd at SubProd) sy
+                     + power radix sy * (!x1 at StartLoop)
+                     - (!ql at Adjust) * vy
+                     + vy
+                   = value (xd at SubProd) sy
+                     + power radix sy * (!x1 at StartLoop)
+                     - (!ql + 1) * vy
+                     + vy
+                   = value (xd at SubProd) sy
+                     + power radix sy * (!x1 at StartLoop)
+                     - !ql * vy };
+          qp.contents <- C.incr !qp (-1);
+          value_sub_update_no_change (pelts q) (!qp).offset
+                            ((!qp).offset + 1)
+                            ((!qp).offset + p2i sx - p2i sy - p2i !i)
+                            !ql;
+          C.set !qp !ql;
+          value_sub_head (pelts q) (!qp).offset
+            ((!qp).offset + p2i sx - p2i sy - p2i !i);
+          value_sub_tail (pelts x) x.offset (x.offset + p2i sy + p2i !i - 1);
+          value_sub_concat (pelts x) x.offset xd.offset (x.offset + s);
+          (* todo refl *)
+          assert { value (old x) sx =
+                  (value !qp (sx - sy - !i)
+                   + qh * power radix (sx - sy - !i))
+                  * vy * power radix !i
+                  + value x (sy + !i - 1)
+                  + power radix (sy + !i - 1) * !x1
+                 by
+                    value !qp (sx - sy - !i)
+                    = !ql + radix *
+                          value_sub (pelts q) ((!qp).offset + 1)
+                                    ((!qp).offset + sx - sy - !i)
+                 so (value_sub (pelts q) ((!qp).offset + 1)
+                              ((!qp).offset + sx - sy - !i)
+                    = value (!qp at StartLoop)
+                              (sx - sy - k)
+                     by
+                     (!qp at StartLoop).offset = (!qp).offset + 1
+                     so ((!qp).offset + sx - sy - !i)
+                         - ((!qp).offset + 1)
+                        = sx - sy - k
+                     )
+                 so value !qp (sx - sy - !i)
+                    = !ql + radix * value (!qp at StartLoop)
+                                    (sx - sy - k)
+                 so (value x s
+                    = value x !i
+                      + power radix !i
+                        * value xd (sy - 1)
+                     by
+                        xd.offset = x.offset + !i
+                     so x.offset + s = xd.offset + sy - 1
+                     so pelts x = pelts xd
+                     so x.offset + s - xd.offset = sy - 1
+                     so value_sub (pelts x) xd.offset (x.offset + s)
+                        = value xd (sy - 1)
+                     so value x s
+                        = value_sub (pelts x) x.offset xd.offset
+                          + power radix !i * value_sub (pelts x) xd.offset (x.offset + s)
+                        = value x !i
+                          + power radix !i * value xd (sy - 1)
+                        )
+                 so (power radix s
+                    = power radix !i * power radix (sy - 1)
+                    by
+                    let n = !i in
+                    let m = sy - 1 in
+                    let x = radix in
+                    power x s = power x (n + m)
+                    so (power x (n + m) = power x n * power x m
+                       by 0 <= n
+                       so 0 <= m
+                       so forall x:int, n:int, m:int.
+                                 0 <= n -> 0 <= m -> power x (n + m) = (power x n * power x m)))
+                 so (value x s + power radix s * !x1
+                    = value x !i
+                      + power radix !i *
+                        (value (xd at SubProd) sy
+                        + power radix sy * (!x1 at StartLoop)
+                        - !ql * vy)
+                    by  value xd (sy - 1)
+                         + power radix (sy - 1) * !x1
+                       = value (xd at SubProd) sy
+                         + power radix sy * (!x1 at StartLoop)
+                         - !ql * vy
+                    so value x s + power radix s * !x1
+                    = value x !i
+                      + power radix !i
+                        * value xd (sy - 1)
+                      + power radix (!i + sy - 1) * !x1
+                    = value x !i
+                      + power radix !i
+                        * value xd (sy - 1)
+                      + power radix !i
+                        * power radix (sy - 1) * !x1
+                    = value x !i
+                      + power radix !i *
+                        (value xd (sy - 1)
+                         + power radix (sy - 1) * !x1)
+                    = value x !i
+                      + power radix !i *
+                        (value (xd at SubProd) sy
+                        + power radix sy * (!x1 at StartLoop)
+                        - !ql * vy)
+                    )
+                 so (value (x at StartLoop) (sy + k - 1)
+                    = value (x at SubProd) !i
+                      + power radix !i
+                        * value (xd at SubProd) sy
+                    by
+                     value (x at StartLoop) (sy + k - 1)
+                     = value_sub (pelts x at SubProd) (x at SubProd).offset
+                                 ((x at SubProd).offset + sy + k - 1)
+                     = value_sub (pelts x at SubProd) (x at SubProd).offset xd.offset
+                       + power radix (xd.offset - (x at SubProd).offset)
+                         * value_sub (pelts x at SubProd) xd.offset
+                           ((x at SubProd).offset + sy + k - 1)
+                     so (x at SubProd).offset = x.offset
+                     so xd.offset = x.offset + !i
+                     so value_sub (pelts x at SubProd) (x at SubProd).offset xd.offset
+                        = value (x at SubProd) !i
+                     so power radix (xd.offset - x.offset) = power radix !i
+                     so x.offset + sy + k - 1 - xd.offset = p2i sy
+                     so value_sub (pelts x at SubProd) xd.offset
+                                  (x.offset + sy + k - 1)
+                        = value (xd at SubProd) sy
+                    )
+                 so (value x !i
+                    = value (x at SubProd) !i
+                    by
+                    value x !i
+                    = value (x at Adjust) !i
+                    = value (x at SubProd) !i
+                    )
+                 so power radix !i * power radix sy = power radix (!i + sy)
+                 so value x s + power radix s * !x1
+                    - value (x at StartLoop) (sy + k - 1)
+                    = value x !i
+                      + power radix !i *
+                        (value (xd at SubProd) sy
+                        + power radix sy * (!x1 at StartLoop)
+                        - !ql * vy)
+                      - (value (x at SubProd) !i
+                         + power radix !i
+                         * value (xd at SubProd) sy)
+                    = value x !i
+                      + power radix !i *
+                        (value (xd at SubProd) sy
+                        + power radix sy * (!x1 at StartLoop)
+                        - !ql * vy)
+                      - (value x !i
+                         + power radix !i
+                         * value (xd at SubProd) sy)
+                    =  power radix !i
+                       * (power radix sy * (!x1 at StartLoop)
+                          - !ql * vy)
+                    = power radix !i * power radix sy * (!x1 at StartLoop)
+                      - power radix !i * !ql * vy
+                    = power radix (!i + sy) * (!x1 at StartLoop)
+                      - power radix !i * !ql * vy
+                    = power radix (sy + k - 1) * (!x1 at StartLoop)
+                      - power radix !i * !ql * vy
+                 so value x s + power radix s * !x1
+                    = value (x at StartLoop) (sy + k - 1)
+                      + power radix (sy + k - 1) * (!x1 at StartLoop)
+                      - power radix !i * !ql * vy
+                 so power radix (sx - sy - !i)
+                    = radix * power radix (sx - sy - k)
+                 so radix * power radix !i = power radix k
+                 so  (value !qp (sx - sy - !i)
+                       + qh * power radix (sx - sy - !i))
+                       * vy * power radix !i
+                       + value x (sy + !i - 1)
+                       + power radix (sy + !i - 1) * !x1
+                    = (!ql + radix * value (!qp at StartLoop)
+                                                      (sx - sy - k)
+                       + qh * power radix (sx - sy - !i))
+                       * vy * power radix !i
+                       + value x (sy + !i - 1)
+                       + power radix (sy + !i - 1) * !x1
+                    = (!ql + radix * value (!qp at StartLoop)
+                                                      (sx - sy - k)
+                       + qh * radix * power radix (sx - sy - k))
+                       * vy * power radix !i
+                       + value x (sy + !i - 1)
+                       + power radix (sy + !i - 1) * !x1
+                    = !ql * vy * power radix !i
+                      + (value (!qp at StartLoop)
+                                                 (sx - sy - k)
+                                 + qh * power radix (sx - sy - k))
+                        * vy * radix * power radix !i
+                      + value x (sy + !i - 1)
+                      + power radix (sy + !i - 1) * !x1
+                    = !ql * vy * power radix !i
+                      + (value (!qp at StartLoop)
+                                                 (sx - sy - k)
+                                 + qh * power radix (sx - sy - k))
+                        * vy * power radix k
+                      + value x (sy + !i - 1)
+                      + power radix (sy + !i - 1) * !x1
+                    = !ql * vy * power radix !i
+                      + (value (!qp at StartLoop)
+                                                 (sx - sy - k)
+                                 + qh * power radix (sx - sy - k))
+                        * vy * power radix k
+                      + value x s
+                      + power radix s * !x1
+                    = !ql * vy * power radix !i
+                      + (value (!qp at StartLoop)
+                                                 (sx - sy - k)
+                                 + qh * power radix (sx - sy - k))
+                        * vy * power radix k
+                      +  value (x at StartLoop) (sy + k - 1)
+                      + power radix (sy + k - 1) * (!x1 at StartLoop)
+                      - power radix !i * !ql * vy
+                    = (value (!qp at StartLoop)
+                                                 (sx - sy - k)
+                                 + qh * power radix (sx - sy - k))
+                        * vy * power radix k
+                      +  value (x at StartLoop) (sy + k - 1)
+                      + power radix (sy + k - 1) * (!x1 at StartLoop)
+                    = value (old x) sx
+                };
+        assert { value_sub (pelts x) (!xp.offset + mdn)
+                 (!xp.offset + mdn + sy - 1)
+                 + power radix (sy - 1) * !x1
+                 < vy
+                 by
+                 (value xd (sy - 1) + power radix (sy - 1) * !x1 < vy
+                   by
+                   value xd (sy - 1) + power radix (sy - 1) * !x1
+                   = value (xd at Adjust) (sy - 1)
+                     + power radix (sy - 1) * (!x1 at Adjust)
+                     + vy
+                     - power radix sy
+                   so value (xd at Adjust) (sy - 1)
+                      < power radix (sy - 1)
+                   so 1 + (!x1 at Adjust) <= radix
+                   so value (xd at Adjust) (sy - 1)
+                      + power radix (sy - 1) * (!x1 at Adjust)
+                      + vy
+                      - power radix sy
+                    < power radix (sy - 1)
+                      + power radix (sy - 1) * (!x1 at Adjust)
+                      + vy
+                      - power radix sy
+                    = power radix (sy - 1) * (1 + !x1 at Adjust)
+                      + vy
+                      - power radix sy
+                    <= power radix (sy - 1) * radix
+                      + vy
+                      - power radix sy
+                    = vy
+                 )
+                 so pelts x = pelts xd
+                 so xd.offset = !xp.offset + mdn
+                 so value xd (sy - 1)
+                    = value_sub (pelts x) (!xp.offset + mdn)
+                                          (!xp.offset + mdn + sy - 1)
+               };
+        assert { dl + radix * dh
+                 >= (pelts x)[(!xp).offset] + radix * !x1
+                 by
+                    vy = vly + power radix (sy - 2)
+                             * (dl + radix * dh)
+                 so value_sub (pelts x) (!xp.offset + mdn)
+                              (!xp.offset + mdn + sy - 1)
+                    + power radix (sy - 1) * !x1
+                    < vy
+                 so !xp.offset + mdn + sy - 1 = !xp.offset + 1
+                 so power radix (sy - 1) = power radix (sy - 2) * radix
+                 so - mdn = sy - 2
+                 so vy
+                    > value_sub (pelts x) (!xp.offset + mdn)
+                                          (!xp.offset + mdn + sy - 1)
+                      + power radix (sy - 1) * !x1
+                    = value_sub (pelts x) (!xp.offset + mdn)
+                                          (!xp.offset + 1)
+                      + power radix (sy - 1) * !x1
+                    = value_sub (pelts x) (!xp.offset + mdn) (!xp.offset)
+                      + power radix (- mdn) * (pelts x)[(!xp).offset]
+                      + power radix (sy - 1) * !x1
+                    = value_sub (pelts x) (!xp.offset + mdn) (!xp.offset)
+                      + power radix (sy - 2) * (pelts x)[(!xp).offset]
+                      + power radix (sy - 1) * !x1
+                    = value_sub (pelts x) (!xp.offset + mdn) (!xp.offset)
+                      + power radix (sy - 2) * (pelts x)[(!xp).offset]
+                      + power radix (sy - 2) * radix * !x1
+                    = value_sub (pelts x) (!xp.offset + mdn) (!xp.offset)
+                      + power radix (sy - 2)
+                        * ((pelts x)[(!xp).offset] + radix * !x1)
+                    >= power radix (sy - 2)
+                        * ((pelts x)[(!xp).offset] + radix * !x1)
+                 so vly < power radix (sy - 2)
+                 so vy < power radix (sy - 2)
+                         + power radix (sy - 2)
+                           * (dl + radix * dh)
+                         = power radix (sy - 2)
+                           * (1 + dl + radix * dh)
+                 so power radix (sy - 2)
+                    * ((pelts x)[(!xp).offset] + radix * !x1)
+                    < power radix (sy - 2) * (1 + dl + radix * dh)
+                 so power radix (sy - 2)
+                    * ((pelts x)[(!xp).offset] + radix * !x1
+                      - (1 + dl + radix * dh))
+                    < 0
+                 so (pelts x)[(!xp).offset] + radix * !x1
+                      - (1 + dl + radix * dh)
+                    < 0
+               };
+        end
+        else begin
+          qp.contents <- C.incr !qp (-1);
+          value_sub_update_no_change (pelts q) (!qp).offset
+                            ((!qp).offset + 1)
+                            ((!qp).offset + p2i sx - p2i sy - p2i !i)
+                            !ql;
+          C.set !qp !ql;
+          value_sub_head (pelts q) (!qp).offset
+            ((!qp).offset + p2i sx - p2i sy - p2i !i);
+          assert { value !qp (sx - sy - !i) * vy
+                    = !ql * vy + radix *
+                          (value_sub (pelts q) ((!qp).offset + 1)
+                                    ((!qp).offset + sx - sy - !i) * vy) }; (*nonlinear*)
+          assert { value_sub (pelts q) ((!qp).offset + 1)
+                                    ((!qp).offset + sx - sy - !i) * vy
+                   =  (value !qp (sx - sy - !i) * vy at StartLoop) }; (*nonlinear*)
+          value_tail x (sy + !i - 1);
+          value_sub_concat (pelts x) x.offset xd.offset (x.offset + s);
+          (* todo refl *)
+          assert { cy2 = 0 };
+          assert { value x !i = value (x at SubProd) !i };
+          assert { value x s = value x !i + power radix !i * value xd (sy-1)
+                     by xd.offset = x.offset + !i
+                     so x.offset + s = xd.offset + sy - 1
+                     so pelts x = pelts xd
+                     so x.offset + s - xd.offset = sy - 1
+                     so value_sub (pelts x) xd.offset (x.offset + s)
+                        = value xd (sy - 1)
+                     so value x s
+                        = value_sub (pelts x) x.offset xd.offset
+                          + power radix !i * value_sub (pelts x) xd.offset (x.offset + s)
+                        = value x !i
+                          + power radix !i * value xd (sy - 1)}; (*lifted from assertion*)
+          assert { (value !qp (sx - sy - !i) + qh * power radix (sx - sy - !i))
+                   * vy
+                   = value !qp (sx - sy - !i) * vy
+                     + qh * vy * power radix (sx - sy - !i)  }; (*nonlinear*)
+          assert { ((value !qp (sx - sy - !i) + qh * power radix (sx - sy - !i))
+                   * vy at StartLoop)
+                   = (value !qp (sx - sy - !i) * vy
+                     + qh * vy * power radix (sx - sy - !i) at StartLoop)  }; (*nonlinear*)
+          assert { value x s = value x (sy + !i - 1) };
+          assert { value (xd at SmallDiv) sy =
+                    vlx + power radix (sy - 2) * xp0
+                    + power radix (sy - 1) * xp1 };  (*nonlinear*)
+          assert { value (x at SubProd) (sy + (!i at StartLoop) - 1)
+                   = value (x at SubProd) !i + power radix !i * value (xd at SubProd) sy };
+          assert { value (old x) sx =
+                  (value !qp (sx - sy - !i)
+                   + qh * power radix (sx - sy - !i))
+                  * vy * power radix !i
+                  + value x (sy + !i - 1)
+                  + power radix (sy + !i - 1) * !x1
+                 (*by
+                    value !qp (sx - sy - !i)
+                    = !ql + radix *
+                          value_sub (pelts q) ((!qp).offset + 1)
+                                    ((!qp).offset + sx - sy - !i)
+                 so (value_sub (pelts q) ((!qp).offset + 1)
+                              ((!qp).offset + sx - sy - !i)
+                    = value (!qp at StartLoop)
+                              (sx - sy - k)
+                     by
+                     (!qp at StartLoop).offset = (!qp).offset + 1
+                     so ((!qp).offset + sx - sy - !i)
+                         - ((!qp).offset + 1)
+                        = sx - sy - k
+                     )
+                 so value !qp (sx - sy - !i)
+                    = !ql + radix * value (!qp at StartLoop)
+                                    (sx - sy - k)
+                 so (value x s
+                    = value x !i
+                      + power radix !i
+                        * value xd (sy - 1)
+                     by
+                        xd.offset = x.offset + !i
+                     so x.offset + s = xd.offset + sy - 1
+                     so pelts x = pelts xd
+                     so x.offset + s - xd.offset = sy - 1
+                     so value_sub (pelts x) xd.offset (x.offset + s)
+                        = value xd (sy - 1)
+                     so value x s
+                        = value_sub (pelts x) x.offset xd.offset
+                          + power radix !i * value_sub (pelts x) xd.offset (x.offset + s)
+                        = value x !i
+                          + power radix !i * value xd (sy - 1)
+                        )
+                 so (power radix s
+                    = power radix !i * power radix (sy - 1)
+                    by
+                    let n = !i in
+                    let m = sy - 1 in
+                    let x = radix in
+                    power x s = power x (n + m)
+                    so (power x (n + m) = power x n * power x m
+                       by 0 <= n
+                       so 0 <= m
+                       so forall x:int, n:int, m:int.
+                                 0 <= n -> 0 <= m -> power x (n + m) = (power x n * power x m)))
+                 so (value x s + power radix s * !x1
+                    = value x !i
+                      + power radix !i *
+                        (value (xd at SubProd) sy
+                        + power radix sy * (!x1 at StartLoop)
+                        - !ql * vy)
+                    by
+                       cy2 = 0
+                    so value xd (sy - 1)
+                         + power radix (sy - 1) * !x1
+                       = value (xd at SubProd) sy
+                         + power radix sy * (!x1 at StartLoop)
+                         - !ql * vy
+                    so value x s + power radix s * !x1
+                    = value x !i
+                      + power radix !i
+                        * value xd (sy - 1)
+                      + power radix (!i + sy - 1) * !x1
+                    = value x !i
+                      + power radix !i
+                        * value xd (sy - 1)
+                      + power radix !i
+                        * power radix (sy - 1) * !x1
+                    = value x !i
+                      + power radix !i *
+                        (value xd (sy - 1)
+                         + power radix (sy - 1) * !x1)
+                    = value x !i
+                      + power radix !i *
+                        (value (xd at SubProd) sy
+                        + power radix sy * (!x1 at StartLoop)
+                        - !ql * vy)
+                    )
+                 so (value (x at StartLoop) (sy + k - 1)
+                    = value (x at SubProd) !i
+                      + power radix !i
+                        * value (xd at SubProd) sy
+                    by
+                     value (x at StartLoop) (sy + k - 1)
+                     = value_sub (pelts x at SubProd) (x at SubProd).offset
+                                 ((x at SubProd).offset + sy + k - 1)
+                     = value_sub (pelts x at SubProd) (x at SubProd).offset xd.offset
+                       + power radix (xd.offset - (x at SubProd).offset)
+                         * value_sub (pelts x at SubProd) xd.offset
+                           ((x at SubProd).offset + sy + k - 1)
+                     so (x at SubProd).offset = x.offset
+                     so xd.offset = x.offset + !i
+                     so value_sub (pelts x at SubProd) (x at SubProd).offset xd.offset
+                        = value (x at SubProd) !i
+                     so power radix (xd.offset - x.offset) = power radix !i
+                     so x.offset + sy + k - 1 - xd.offset = p2i sy
+                     so value_sub (pelts x at SubProd) xd.offset
+                                  (x.offset + sy + k - 1)
+                        = value (xd at SubProd) sy
+                    )
+                 so (value x !i
+                    = value (x at SubProd) !i
+                    )
+                 so power radix !i * power radix sy = power radix (!i + sy)
+                 so value x s + power radix s * !x1
+                    - value (x at StartLoop) (sy + k - 1)
+                    = value x !i
+                      + power radix !i *
+                        (value (xd at SubProd) sy
+                        + power radix sy * (!x1 at StartLoop)
+                        - !ql * vy)
+                      - (value (x at SubProd) !i
+                         + power radix !i
+                         * value (xd at SubProd) sy)
+                    = value x !i
+                      + power radix !i *
+                        (value (xd at SubProd) sy
+                        + power radix sy * (!x1 at StartLoop)
+                        - !ql * vy)
+                      - (value x !i
+                         + power radix !i
+                         * value (xd at SubProd) sy)
+                    =  power radix !i
+                       * (power radix sy * (!x1 at StartLoop)
+                          - !ql * vy)
+                    = power radix !i * power radix sy * (!x1 at StartLoop)
+                      - power radix !i * !ql * vy
+                    = power radix (!i + sy) * (!x1 at StartLoop)
+                      - power radix !i * !ql * vy
+                    = power radix (sy + k - 1) * (!x1 at StartLoop)
+                      - power radix !i * !ql * vy
+                 so value x s + power radix s * !x1
+                    = value (x at StartLoop) (sy + k - 1)
+                      + power radix (sy + k - 1) * (!x1 at StartLoop)
+                      - power radix !i * !ql * vy
+                 so power radix (sx - sy - !i)
+                    = radix * power radix (sx - sy - k)
+                 so radix * power radix !i = power radix k
+                 so  (value !qp (sx - sy - !i)
+                       + qh * power radix (sx - sy - !i))
+                       * vy * power radix !i
+                       + value x (sy + !i - 1)
+                       + power radix (sy + !i - 1) * !x1
+                    = (!ql + radix * value (!qp at StartLoop)
+                                                      (sx - sy - k)
+                       + qh * power radix (sx - sy - !i))
+                       * vy * power radix !i
+                       + value x (sy + !i - 1)
+                       + power radix (sy + !i - 1) * !x1
+                    = (!ql + radix * value (!qp at StartLoop)
+                                                      (sx - sy - k)
+                       + qh * radix * power radix (sx - sy - k))
+                       * vy * power radix !i
+                       + value x (sy + !i - 1)
+                       + power radix (sy + !i - 1) * !x1
+                    = !ql * vy * power radix !i
+                      + (value (!qp at StartLoop)
+                                                 (sx - sy - k)
+                                 + qh * power radix (sx - sy - k))
+                        * vy * radix * power radix !i
+                      + value x (sy + !i - 1)
+                      + power radix (sy + !i - 1) * !x1
+                    = !ql * vy * power radix !i
+                      + (value (!qp at StartLoop)
+                                                 (sx - sy - k)
+                                 + qh * power radix (sx - sy - k))
+                        * vy * power radix k
+                      + value x (sy + !i - 1)
+                      + power radix (sy + !i - 1) * !x1
+                    = !ql * vy * power radix !i
+                      + (value (!qp at StartLoop)
+                                                 (sx - sy - k)
+                                 + qh * power radix (sx - sy - k))
+                        * vy * power radix k
+                      + value x s
+                      + power radix s * !x1
+                    = !ql * vy * power radix !i
+                      + (value (!qp at StartLoop)
+                                                 (sx - sy - k)
+                                 + qh * power radix (sx - sy - k))
+                        * vy * power radix k
+                      +  value (x at StartLoop) (sy + k - 1)
+                      + power radix (sy + k - 1) * (!x1 at StartLoop)
+                      - power radix !i * !ql * vy
+                    = (value (!qp at StartLoop)
+                                                 (sx - sy - k)
+                                 + qh * power radix (sx - sy - k))
+                        * vy * power radix k
+                      +  value (x at StartLoop) (sy + k - 1)
+                      + power radix (sy + k - 1) * (!x1 at StartLoop)
+                    = value (old x) sx *)
+                };
+          value_sub_tail (pelts y) y.offset (y.offset + p2i sy - 1);
+          value_sub_tail (pelts y) y.offset (y.offset + p2i sy - 2);
+          let ghost vly = value y (p2i sy - 2) in
+          assert { vy = vly + power radix (sy - 2) * dl
+                            + power radix (sy - 1) * dh
+                   by (pelts y)[y.offset + sy - 1] = dh
+                   so (pelts y)[y.offset + sy - 2] = dl
+                   so
+                      vy = value y (sy - 1)
+                            + power radix (sy - 1) * dh
+                         = vly + power radix (sy - 2) * dl
+                            + power radix (sy - 1) * dh };
+          assert { value_sub (pelts x) (!xp.offset + mdn)
+                   (!xp.offset + mdn + sy - 1)
+                   + power radix (sy - 1) * !x1
+                   < vy
+                   by
+                     pelts x = pelts xd
+                   so xd.offset = !xp.offset + mdn
+                   so !xp.offset + mdn + sy - 1 = xd.offset + sy - 1
+                   so
+                     value xd (sy - 1)
+                     = value_sub (pelts xd) xd.offset (xd.offset + sy - 1)
+                     = value_sub (pelts x) (!xp.offset + mdn)
+                       (!xp.offset + mdn + sy - 1)
+                   so value xd (sy - 1)
+                      + power radix (sy - 1) * !x1
+                      - power radix sy * cy2
+                      = value (xd at SubProd) sy
+                      + power radix sy * (!x1 at StartLoop)
+                      - !ql * vy
+                   so cy2 = 0
+                   so value xd (sy - 1)
+                      + power radix (sy - 1) * !x1
+                      = value (xd at SubProd) sy
+                      + power radix sy * (!x1 at StartLoop)
+                      - !ql * vy
+                   so !ql * (dl + radix * dh)
+                      + (rl + radix * rh)
+                      = xp0
+                        + radix * xp1
+                        + radix * radix * (!x1 at StartLoop)
+                   so vy = vly + power radix (sy - 2)
+                                 * (dl + radix * dh)
+                   so !ql * vy
+                      = power radix (sy - 2) *
+                          (xp0
+                          + radix * xp1
+                          + radix * radix * (!x1 at StartLoop))
+                        - power radix (sy - 2) * (rl + radix * rh)
+                        + !ql * vly
+                   so value (xd at SubProd) sy
+                       = vlx
+                        + power radix (sy - 2) * (xp0 + radix * xp1)
+                   so power radix sy
+                      = power radix (sy - 2) * radix * radix
+                   so (value (xd at SubProd) sy
+                      + power radix sy * (!x1 at StartLoop)
+                      - !ql * vy
+                      < vy
+                      by
+                      (!ql * vly >= 0
+                       by !ql >= 0 so vly >= 0)
+                      so (power radix (sy - 2) * (rl + radix * rh)
+                         <= power radix (sy - 2)
+                            * (dl + radix * dh)
+                            - power radix (sy - 2)
+                         by
+                         rl + radix * rh <= dl + radix * dh - 1
+                         so power radix (sy - 2) >= 0
+                         so power radix (sy - 2) * (rl + radix * rh)
+                            <= power radix (sy - 2)
+                               * (dl + radix * dh - 1)
+                            = power radix (sy - 2)
+                              * (dl + radix * dh)
+                              - power radix (sy - 2)
+                         )
+                      so vlx < power radix (sy - 2)
+                      so value (xd at SubProd) sy
+                        + power radix sy * (!x1 at StartLoop)
+                        - !ql * vy
+                      = vlx
+                        + power radix (sy - 2) * (xp0 + radix * xp1)
+                        + power radix sy * (!x1 at StartLoop)
+                        - !ql * vy
+                      = vlx
+                        + power radix (sy - 2) *
+                                (xp0 + radix * xp1
+                                  + radix * radix * (!x1 at StartLoop))
+                        - !ql * vy
+                      = vlx
+                        + power radix (sy - 2) *
+                                (xp0 + radix * xp1
+                                  + radix * radix * (!x1 at StartLoop))
+                        -  (power radix (sy - 2) *
+                           (xp0
+                            + radix * xp1
+                            + radix * radix * (!x1 at StartLoop))
+                          - power radix (sy - 2) * (rl + radix * rh)
+                          + !ql * vly)
+                      = vlx
+                        + power radix (sy - 2) * (rl + radix * rh)
+                        - !ql * vly
+                      <= vlx
+                        + power radix (sy - 2) * (rl + radix * rh)
+                      <= vlx
+                         +  power radix (sy - 2)
+                            * (dl + radix * dh)
+                         - power radix (sy - 2)
+                      <  power radix (sy - 2)
+                         +  power radix (sy - 2)
+                            * (dl + radix * dh)
+                         - power radix (sy - 2)
+                      = power radix (sy - 2) * (dl + radix * dh)
+                      = vy - vly <= vy
+                      )
+                    so value_sub (pelts x) (!xp.offset + mdn)
+                       (!xp.offset + mdn + sy - 1)
+                       + power radix (sy - 1) * !x1
+                       = value xd (sy - 1)
+                         + power radix (sy - 1) * !x1
+                       = value (xd at SubProd) sy
+                        + power radix sy * (!x1 at StartLoop)
+                        - !ql * vy
+                       < vy
+                 };
+          value_sub_tail (pelts x) (!xp.offset + p2i mdn) (!xp.offset);
+          value_sub_upper_bound (pelts y) (y.offset) (y.offset + p2i sy - 2);
+          value_sub_lower_bound (pelts x) (!xp.offset + p2i mdn) (!xp.offset);
+          assert { dl + radix * dh
+                   >= (pelts x)[(!xp).offset] + radix * !x1
+                   by
+                   vy = vly + power radix (sy - 2)
+                              * (dl + radix * dh)
+                   so value_sub (pelts x) (!xp.offset + mdn)
+                   (!xp.offset + mdn + sy - 1)
+                   + power radix (sy - 1) * !x1
+                   < vy
+                   so !xp.offset + mdn + sy - 1 = !xp.offset + 1
+                   so power radix (sy - 1) = power radix (sy - 2) * radix
+                   so - mdn = sy - 2
+                   so vy
+                      > value_sub (pelts x) (!xp.offset + mdn)
+                                            (!xp.offset + mdn + sy - 1)
+                        + power radix (sy - 1) * !x1
+                      = value_sub (pelts x) (!xp.offset + mdn)
+                                            (!xp.offset + 1)
+                        + power radix (sy - 1) * !x1
+                      = value_sub (pelts x) (!xp.offset + mdn) (!xp.offset)
+                        + power radix (- mdn) * (pelts x)[(!xp).offset]
+                        + power radix (sy - 1) * !x1
+                      = value_sub (pelts x) (!xp.offset + mdn) (!xp.offset)
+                        + power radix (sy - 2) * (pelts x)[(!xp).offset]
+                        + power radix (sy - 1) * !x1
+                      = value_sub (pelts x) (!xp.offset + mdn) (!xp.offset)
+                        + power radix (sy - 2) * (pelts x)[(!xp).offset]
+                        + power radix (sy - 2) * radix * !x1
+                      = value_sub (pelts x) (!xp.offset + mdn) (!xp.offset)
+                        + power radix (sy - 2)
+                          * ((pelts x)[(!xp).offset] + radix * !x1)
+                      >= power radix (sy - 2)
+                          * ((pelts x)[(!xp).offset] + radix * !x1)
+                   so vly < power radix (sy - 2)
+                   so vy < power radix (sy - 2)
+                           + power radix (sy - 2)
+                              * (dl + radix * dh)
+                           = power radix (sy - 2)
+                             * (1 + dl + radix * dh)
+                   so power radix (sy - 2)
+                      * ((pelts x)[(!xp).offset] + radix * !x1)
+                      < power radix (sy - 2) * (1 + dl + radix * dh)
+                   so power radix (sy - 2)
+                      * ((pelts x)[(!xp).offset] + radix * !x1
+                        - (1 + dl + radix * dh))
+                      < 0
+                   so (pelts x)[(!xp).offset] + radix * !x1
+                        - (1 + dl + radix * dh)
+                      < 0
+                 };
+        end;
+      end;
+    done;
+    label EndLoop in
+    assert { !i = 0 };
+    assert { !xp.offset = x.offset + sy - 2 };
+    value_sub_update_no_change (pelts x) (!xp.offset + 1)
+                               x.offset (!xp.offset) !x1;
+    C.set_ofs !xp 1 !x1;
+    assert { value x (sy - 1) =
+             value (x at EndLoop) (sy - 1)
+             by pelts x = Map.set (pelts x at EndLoop) (x.offset + sy - 1) !x1 };
+    value_sub_tail (pelts x) x.offset (!xp.offset+1);
+    (* todo refl *)
+    assert { value (old x) sx =
+              (value q (sx - sy)
+              + power radix (sx - sy) * qh)
+                * value y sy
+              + value x sy
+             by
+               value x sy
+                = value x (sy - 1)
+                  + power radix (sy - 1) * !x1
+             so vy = value y sy
+             so value (old x) sx
+                = (value !qp (sx - sy - !i)
+                  + qh * power radix (sx - sy - !i))
+                  * vy * power radix !i
+                  + value x (sy + !i - 1)
+                  + power radix (sy + !i - 1) * !x1
+                = (value !qp (sx - sy)
+                  + qh * power radix (sx - sy))
+                  * vy * 1
+                  + value x (sy - 1)
+                  + power radix (sy - 1) * !x1
+                = (value !qp (sx - sy)
+                  + qh * power radix (sx - sy))
+                  * value y sy
+                  + value x sy };
+    qh
+
+  let divmod_2 (q x y:t) (sx:int32) : limb
+    requires { 2 <= sx }
+    requires { valid x sx }
+    requires { valid y 2 }
+    requires { valid q (sx - 2) }
+    requires { (pelts y)[y.offset + 1] >= div radix 2 }
+    ensures { value (old x) sx =
+              (value q (sx - 2)
+               + power radix (sx - 2) * result)
+              * value y 2
+              + value x 2 }
+    ensures { value x 2 < value y 2 }
+    ensures { 0 <= result <= 1 }
+  =
+    let one = Int32.of_int 1 in
+    let zero = Int32.of_int 0 in
+    let two = Int32.of_int 2 in
+    let uzero = Limb.of_int 0 in
+    let uone = Limb.of_int 1 in
+    let xp = ref (C.incr x (Int32.(-) sx two)) in
+    let dh = C.get_ofs y one in
+    let dl = C.get y in
+    let rh = ref (C.get_ofs !xp one) in
+    let rl = ref (C.get !xp) in
+    let qh = ref uzero in
+    let lx = ref uzero in
+    assert { value y 2 = dl + radix * dh };
+    let i = ref (Int32.(-) sx two) in
+    let dinv = reciprocal_word_3by2 dh dl in
+    ([@vc:sp] if (Limb.(>=) !rh dh && ([@vc:sp] Limb.(>) !rh dh || Limb.(>=) !rl dl))
+    then
+      label Adjust in
+      begin
+        ensures { value x sx
+                  = (value_sub (pelts q) (q.offset + !i) (q.offset + sx - 2)
+                      + !qh * power radix (sx - 2 - !i))
+                    * value y 2 * power radix !i
+                    + value x !i
+                    + power radix !i * (!rl + radix * !rh) }
+        ensures { !rl + radix * !rh < dl + radix * dh }
+        ensures { !qh = 1 }
+        let (r0, b) = sub_with_borrow !rl dl uzero in
+        let (r1, ghost b') = sub_with_borrow !rh dh b in
+        assert { b' = 0 };
+        assert { r0 + radix * r1 = !rl + radix * !rh - (dl + radix * dh) };
+        value_sub_tail (pelts x) x.offset (x.offset + p2i sx - 1);
+        value_sub_tail (pelts x) x.offset (x.offset + p2i sx - 2);
+        rh := r1;
+        rl := r0;
+        qh := uone;
+        assert { value x sx
+                  = (value_sub (pelts q) (q.offset + !i) (q.offset + sx - 2)
+                      + !qh * power radix (sx - 2 - !i))
+                    * value y 2 * power radix !i
+                    + value x !i
+                    + power radix !i * (!rl + radix * !rh)
+                 by
+                 value_sub (pelts q) (q.offset + !i) (q.offset + sx - 2) = 0
+                 so (value_sub (pelts q) (q.offset + !i) (q.offset + sx - 2)
+                      + !qh * power radix (sx - 2 - !i))
+                    * value y 2 * power radix !i
+                    + value x !i
+                    + power radix !i * (!rl + radix * !rh)
+                  = value y 2 * power radix !i
+                    + value x !i
+                    + power radix !i * (!rl + radix * !rh)
+                  = value x !i
+                    + power radix !i * (dl + radix * dh + !rl + radix * !rh)
+                  = value x !i
+                    + power radix !i * (!rl at Adjust + radix * !rh at Adjust)
+                  = value x !i
+                    + power radix !i * !rl at Adjust
+                    + power radix (!i+1) * !rh at Adjust
+                  = value x sx
+               };
+      end
+    else
+      begin
+        ensures { value x sx
+                  = (value_sub (pelts q) (q.offset + !i) (q.offset + sx - 2)
+                      + !qh * power radix (sx - 2 - !i))
+                    * value y 2 * power radix !i
+                    + value x !i
+                    + power radix !i * (!rl + radix * !rh) }
+        ensures { !rl + radix * !rh < dl + radix * dh }
+        ensures { !qh = 0 }
+        value_sub_tail (pelts x) x.offset (x.offset + p2i sx - 1);
+        value_sub_tail (pelts x) x.offset (x.offset + p2i sx - 2);
+      end);
+    while (Int32.(>) !i zero) do
+      variant { p2i !i }
+      invariant { 0 <= !i <= sx - 2 }
+      invariant { !xp.offset = x.offset + !i }
+      invariant { plength !xp = plength x }
+      invariant { !xp.min = x.min }
+      invariant { !xp.max = x.max }
+      invariant { pelts !xp = pelts x }
+      invariant { value x sx
+                  = (value_sub (pelts q) (q.offset + !i) (q.offset + sx - 2)
+                      + !qh * power radix (sx - 2 - !i))
+                    * value y 2 * power radix !i
+                    + value x !i
+                    + power radix !i * (!rl + radix * !rh) }
+      invariant { !rl + radix * !rh < dl + radix * dh }
+      label StartLoop in
+      let ghost k = p2i !i in
+      xp.contents <- C.incr !xp (-1);
+      lx := C.get !xp;
+      label Got in
+      let (qu, r0, r1) = div3by2_inv !rh !rl !lx dh dl dinv in
+      rh := r1;
+      rl := r0;
+      i := Int32.(-) !i one;
+      C.set_ofs q !i qu;
+      assert { qu * (dl + radix * dh) + r0 + radix * r1
+               = !lx + radix * (!rl at StartLoop)
+                     + radix * radix * (!rh at StartLoop)
+               by
+                 radix * ((!rl at StartLoop) + radix * (!rh at StartLoop))
+                 = radix * (!rl at StartLoop) + radix * radix * (!rh at StartLoop)
+               so
+                 qu * (dl + radix * dh) + r0 + radix * r1
+               = !lx + radix * ((!rl at StartLoop) + radix * (!rh at StartLoop))
+               = !lx + radix * (!rl at StartLoop)
+                     + radix * radix * (!rh at StartLoop)
+             };
+      value_sub_head (pelts q) (q.offset + p2i !i) (q.offset + p2i sx - 2);
+      value_sub_tail (pelts x) x.offset (x.offset + p2i !i);
+      assert { value x sx
+                  = (value_sub (pelts q) (q.offset + !i) (q.offset + sx - 2)
+                      + !qh * power radix (sx - 2 - !i))
+                    * value y 2 * power radix !i
+                    + value x !i
+                    + power radix !i * (!rl + radix * !rh)
+               by
+                  value x k = value x !i + power radix !i * !lx
+               so value_sub (pelts q) (q.offset + !i) (q.offset + sx - 2)
+                 = qu + radix
+                        * value_sub (pelts q) (q.offset + k) (q.offset + sx - 2)
+               so power radix (sx - 2 - !i) = radix * power radix (sx - 2 - k)
+               so
+                 (value_sub (pelts q) (q.offset + !i) (q.offset + sx - 2)
+                        + !qh * power radix (sx - 2 - !i))
+                 = qu + radix
+                        * (value_sub (pelts q) (q.offset + k) (q.offset + sx - 2)
+                           + !qh * power radix (sx - 2 - k))
+               so power radix !i * radix  = power radix k
+               so ((value_sub (pelts q) (q.offset + !i) (q.offset + sx - 2)
+                      + !qh * power radix (sx - 2 - !i))
+                    * value y 2 * power radix !i
+                  = power radix !i * qu * (dl + radix * dh)
+                    + (value_sub (pelts q) (q.offset + k)
+                                                   (q.offset + sx - 2)
+                               + !qh * power radix (sx - 2 - k))
+                      * value y 2 * power radix k
+                  by
+                  (value_sub (pelts q) (q.offset + !i) (q.offset + sx - 2)
+                      + !qh * power radix (sx - 2 - !i))
+                    * value y 2 * power radix !i
+                  = (qu + radix
+                         * (value_sub (pelts q) (q.offset + k)
+                                                (q.offset + sx - 2)
+                             + !qh * power radix (sx - 2 - k)))
+                    * value y 2 * power radix !i
+                  = power radix !i * qu * (dl + radix * dh)
+                    + radix * (value_sub (pelts q) (q.offset + k)
+                                                   (q.offset + sx - 2)
+                               + !qh * power radix (sx - 2 - k))
+                      * value y 2 * power radix !i
+                  = power radix !i * qu * (dl + radix * dh)
+                    + (value_sub (pelts q) (q.offset + k)
+                                                   (q.offset + sx - 2)
+                               + !qh * power radix (sx - 2 - k))
+                      * value y 2 * power radix k)
+               so (value_sub (pelts q) (q.offset + !i) (q.offset + sx - 2)
+                      + !qh * power radix (sx - 2 - !i))
+                    * value y 2 * power radix !i
+                    + value x !i
+                    + power radix !i * (!rl + radix * !rh)
+                  = power radix !i * qu * (dl + radix * dh)
+                    + (value_sub (pelts q) (q.offset + k)
+                                           (q.offset + sx - 2)
+                               + !qh * power radix (sx - 2 - k))
+                      * value y 2 * power radix k
+                    + value x !i
+                    + power radix !i * (!rl + radix * !rh)
+                  = (value_sub (pelts q) (q.offset + k)
+                                           (q.offset + sx - 2)
+                               + !qh * power radix (sx - 2 - k))
+                      * value y 2 * power radix k
+                    + value x !i
+                    + power radix !i * (qu * (dl + radix * dh)
+                                        + !rl + radix * !rh)
+                  = (value_sub (pelts q) (q.offset + k)
+                                           (q.offset + sx - 2)
+                               + !qh * power radix (sx - 2 - k))
+                      * value y 2 * power radix k
+                    + value x !i
+                    + power radix !i
+                      * (!lx + radix * (!rl at StartLoop)
+                         + radix * radix * (!rh at StartLoop))
+                  = (value_sub (pelts q) (q.offset + k)
+                                           (q.offset + sx - 2)
+                               + !qh * power radix (sx - 2 - k))
+                      * value y 2 * power radix k
+                    + value x !i
+                    + power radix !i * !lx
+                    + power radix !i * (radix * (!rl at StartLoop
+                                                 + radix * !rh at StartLoop))
+                  = (value_sub (pelts q) (q.offset + k)
+                                           (q.offset + sx - 2)
+                               + !qh * power radix (sx - 2 - k))
+                      * value y 2 * power radix k
+                    + value x k
+                    + power radix !i * (radix * (!rl at StartLoop
+                                                 + radix * !rh at StartLoop))
+                  = (value_sub (pelts q) (q.offset + k)
+                                           (q.offset + sx - 2)
+                               + !qh * power radix (sx - 2 - k))
+                      * value y 2 * power radix k
+                    + value x k
+                    + power radix k * (!rl at StartLoop
+                                       + radix * !rh at StartLoop)
+                  = value x sx
+          };
+    done;
+    assert { !i = 0 };
+    assert { value x sx
+             = (value_sub (pelts q) q.offset (q.offset + sx - 2)
+                      + !qh * power radix (sx - 2))
+                    * value y 2
+                    + !rl + radix * !rh
+             by power radix !i = 1 };
+    C.set_ofs x one !rh;
+    C.set x !rl;
+    assert { value x 2 = !rl + radix * !rh
+             by (pelts x)[x.offset] = !rl
+                /\ (pelts x)[x.offset + 1] = !rh};
+    !qh
+
+
+(*  val sub_limb_in_place (x:t) (y:limb) (sz:int32) : limb*)
+
+  (** [div_qr q r x y sx sy] divides [(x,sx)] by [(y,sy)], writes the quotient
+    in [(q, (sx-sy))] and the remainder in [(r, sy)]. Corresponds to
+    [mpn_tdiv_qr]. *)
+  let div_qr (q r x y nx ny:t) (sx sy:int32) : unit
+    requires { 1 <= sy <= sx <= (Int32.max_int32 - 1) }
+    requires { valid x sx }
+    requires { valid y sy }
+    requires { valid q (sx - sy + 1) }
+    requires { valid r sy }
+    requires { valid nx (sx + 1) }
+    requires { valid ny sy }
+    requires { (pelts y)[y.offset + sy - 1] > 0 }
+    ensures { value x sx
+              = value q (sx - sy + 1) * value y sy
+                + value r sy }
+    ensures { value r sy < value y sy }
+  =
+    label Start in
+    let one = Int32.of_int 1 in
+    let limb_zero = Limb.of_int 0 in
+    let zero = Int32.of_int 0 in
+    let two = Int32.of_int 2 in
+    value_sub_tail (pelts y) y.offset (y.offset + p2i sy - 1);
+    value_sub_lower_bound (pelts y) y.offset (y.offset + p2i sy - 1);
+    assert { value y sy >= power radix (sy - 1) };
+    if (Int32.(=) sy one)
+    then
+      let lr = divmod_1 q x (C.get y) sx in
+      C.set r lr
+    else
+    if (Int32.(=) sy two)
+    then
+      let clz = clz_ext (C.get_ofs y (Int32.(-) sy one)) in
+      let ghost p = power 2 (p2i clz) in
+      if Int32.(=) clz zero
+      then begin
+        copy nx x sx;
+        value_sub_shift_no_change (pelts x) x.offset (p2i sx) (p2i sx) limb_zero;
+        C.set_ofs nx sx limb_zero;
+        value_sub_frame_shift (pelts x) (pelts nx) x.offset nx.offset (p2i sx);
+        label Div2_ns in
+        let ghost _qh = divmod_2 q nx y (Int32.(+) sx one) in
+        copy r nx sy;
+        assert { value x sx
+                 = value q (sx - sy + 1) * value y sy
+                 + value r sy
+               by value r sy = value nx sy
+               so value (nx at Div2_ns) (sx + 1) < power radix sx
+               so value (nx at Div2_ns) (sx + 1)
+                  = value (nx at Div2_ns) sx
+               so (_qh = 0
+                   by
+                   power radix sx
+                   > value (nx at Div2_ns) (sx + 1)
+                   = (value q (sx - 1) + power radix (sx - 1) * _qh)
+                    * value y 2
+                    + value nx 2
+                   so value nx 2 >= 0
+                   so value y 2 >= radix
+                   so value q (sx - 1) >= 0
+                   so _qh >= 0
+                   so (value q (sx - 1)
+                           + power radix (sx - 1) * _qh) >= 0
+                   so (value q (sx - 1) + power radix (sx - 1) * _qh)
+                      * value y 2
+                      + value nx 2
+                      >= (value q (sx - 1)
+                           + power radix (sx - 1) * _qh)
+                         * value y 2
+                      >= (value q (sx - 1)
+                           + power radix (sx - 1) * _qh)
+                         * radix
+                      >= power radix (sx - 1) * _qh * radix
+                      = power radix sx * _qh
+                   so power radix sx > power radix sx * _qh
+                  )
+               so value x sx = value (nx at Div2_ns) sx
+               };
+        ()
+      end
+      else begin
+        let ghost _c = lshift ny y sy (Limb.of_int32 clz) in
+        begin
+          ensures { normalized ny sy }
+          ensures { value ny sy = power 2 clz * value y sy }
+          let ghost dh = (pelts y)[y.offset + p2i sy - 1] in
+          assert { value y sy
+                   = value y (sy - 1) + power radix (sy - 1) * dh };
+          value_sub_upper_bound (pelts y) y.offset (y.offset + p2i sy - 1);
+          value_sub_tail (pelts ny) ny.offset (ny.offset + p2i sy - 1);
+          value_sub_upper_bound (pelts ny) ny.offset (ny.offset + p2i sy - 1);
+          let ghost ndh = (pelts ny)[ny.offset + p2i sy - 1] in
+          assert { normalized ny sy
+                   /\ value ny sy = power 2 clz * value y sy
+                   by
+                   value y sy < (dh + 1) * power radix (sy - 1)
+                   so value ny sy + (power radix sy) * _c
+                      = power 2 clz * value y sy
+                      = power 2 clz
+                        * (value y (sy - 1)
+                           + dh * power radix (sy - 1))
+                   so power 2 clz * dh <= radix - power 2 clz
+                   so value ny sy + (power radix sy) * _c
+                      = power 2 clz * value y (sy - 1)
+                        + power 2 clz * dh * power radix (sy - 1)
+                      < power 2 clz * power radix (sy - 1)
+                        + power 2 clz * dh * power radix (sy - 1)
+                      <= power 2 clz * power radix (sy - 1)
+                        + (radix - power 2 clz) * power radix (sy - 1)
+                       = radix * power radix (sy - 1)
+                       = power radix sy
+                   so _c = 0
+                   so value ny sy
+                      = power 2 clz * value y sy
+                   so value y sy >= dh * power radix (sy - 1)
+                   so value ny sy
+                      >= power 2  clz * dh * power radix (sy - 1)
+                   so value ny sy =
+                      value ny (sy - 1) + power radix (sy - 1) * ndh
+                      < power radix (sy - 1) + power radix (sy - 1) * ndh
+                      = power radix (sy - 1) * (ndh + 1)
+                   so power radix (sy - 1) * (ndh + 1)
+                      > power radix (sy - 1) * (power 2 clz * dh)
+                   so ndh + 1 > power 2 clz * dh
+                   so ndh >= power 2 clz * dh
+                   so 2 * power 2 clz * dh >= radix
+                   so 2 * ndh >= radix
+                   so ndh >= div radix 2
+                 };
+        end;
+        let h = lshift nx x sx (Limb.of_int32 clz) in
+        C.set_ofs nx sx h;
+        begin
+          ensures { value nx (sx + 1)
+                    = p * value x sx  }
+          value_sub_tail (pelts nx) nx.offset (nx.offset + p2i sx);
+          assert { value nx (sx + 1)
+                    = p * value x sx
+                   by
+                   value nx sx + power radix sx * h
+                    = p * value x sx
+                   so value nx (sx + 1)
+                      = value nx sx + power radix sx * h
+                 }
+        end;
+        label Div2_s in
+        (* TODO don't add 1 when not needed, cf "adjust" in GMP algo *)
+        let ghost _qh = divmod_2 q nx ny (Int32.(+) sx one) in
+        let ghost _l = rshift r nx sy (Limb.of_int32 clz) in
+        begin ensures { value nx 2 = p * value r 2 }
+          assert { _l = 0
+                 by
+                   (mod (value nx sy) p = 0
+                    by
+                      value (nx at Div2_s) (sx + 1)
+                   = (value q (sx - 1) + power radix (sx - 1) * _qh)
+                      * value ny sy
+                      + value nx sy
+                   so value (nx at Div2_s) (sx + 1)
+                    = p * value x sx
+                   so value ny sy = p * value y sy
+                   so value nx sy
+                      = value (nx at Div2_s) (sx + 1)
+                        - (value q (sx - 1)
+                          + power radix (sx - 1) * _qh)
+                          * value ny sy
+                      = p * value x sx
+                        - p * (value q (sx - 1)
+                               + power radix (sx - 1) * _qh)
+                            * value y sy
+                      = p * (value x sx
+                             - (value q (sx - 1)
+                               + power radix (sx - 1) * _qh)
+                               * value y sy)
+                   so let n = (value x sx
+                                - (value q (sx - 1)
+                                   + power radix (sx - 1) * _qh)
+                                   * value y sy)
+                      in
+                      value nx sy = p * n
+                      so value nx sy >= 0
+                      so p > 0
+                      so n >= 0
+                      so mod (value nx sy) p
+                         = mod (p * n) p
+                         = mod ((p*n)+0) p
+                         = mod 0 p
+                         = 0
+                 )
+                 so _l + radix * value r sy
+                    = power 2 (Limb.length - clz) * (value nx sy)
+                 so let a = div (value nx sy) p in
+                    value nx sy = p * a
+                 so power 2 (Limb.length - clz) * p = radix
+                 so power 2 (Limb.length - clz) * (value nx sy)
+                    = power 2 (Limb.length - clz) * (p * a)
+                    = (power 2 (Limb.length - clz) * p) * a
+                    = radix * a
+                 so mod (radix * value r sy + _l) radix
+                    = mod _l radix
+                 so mod (radix * value r sy + _l) radix
+                    = mod (radix * a) radix = 0
+                 so mod _l radix = 0
+                 so 0 <= _l < radix
+               };
+          assert { value nx 2 = p * value r 2
+                   by
+                   radix * value r 2
+                   = power 2 (Limb.length - clz) * value nx 2
+                   so p * power 2 (Limb.length - clz)
+                      = radix
+                   so p * radix * value r 2
+                      = p * power 2 (Limb.length - clz) * value nx 2
+                      = radix * value nx 2
+                   so p * value r 2 = value nx 2
+                 }
+        end;
+        assert { value x sx
+                 = value q (sx - sy + 1) * value y sy
+                 + value r sy
+                by
+                 value (nx at Div2_s) (sx + 1)
+                 = (value q (sx - 1) + power radix (sx - 1) * _qh)
+                   * value ny 2
+                   + value nx 2
+                so value (nx at Div2_s) (sx + 1)
+                    = p * value x sx
+                so value ny 2 = p * value y 2
+                so (_qh = 0
+                    by
+                    value x sx < power radix sx
+                    so value y 2 >= radix
+                    so value ny 2 >= p * radix
+                    so value q (sx - 1) >= 0
+                    so value nx 2 >= 0
+                    so (value q (sx - 1) + power radix (sx - 1) * _qh)
+                        >= 0
+                    so (value q (sx - 1) + power radix (sx - 1) * _qh)
+                         * value ny 2
+                       + value nx 2
+                       >= (value q (sx - 1)
+                           + power radix (sx - 1) * _qh)
+                          * value ny 2
+                       >= (value q (sx - 1)
+                           + power radix (sx - 1) * _qh)
+                          * (p * radix)
+                       >= power radix (sx - 1) * _qh * p * radix
+                       = power radix sx * p * _qh
+                    so power radix sx * p
+                       > value (nx at Div2_s) (sx + 1)
+                       >= power radix sx * p * _qh
+                    )
+                so value nx 2 = p * value r 2
+                so p * value x sx
+                   = value q (sx - 1) * p * value y 2
+                     + p * value r 2
+                   = p * (value q (sx - 1) * value y 2
+                          + value r 2)
+               };
+        ()
+      end
+    else
+     (* let qn = ref (Int32.(-) (Int32.(+) sx one) sy) in
+      if (Int32.(>=)  (Int32.(+) !qn !qn) sx)
+      then*) begin
+        let adjust =
+          if Limb.(>=) (get_ofs x (Int32.(-) sx one))
+                       (get_ofs y (Int32.(-) sy one))
+          then one
+          else zero
+        in
+        let clz = clz_ext (C.get_ofs y (Int32.(-) sy one)) in
+        let ghost p = power 2 (p2i clz) in
+        if Int32.(=) clz zero
+        then begin
+          copy nx x sx;
+          value_sub_shift_no_change (pelts x) x.offset
+                                    (p2i sx) (p2i sx) limb_zero;
+          C.set_ofs nx sx limb_zero;
+          value_sub_frame_shift (pelts x) (pelts nx) x.offset nx.offset (p2i sx);
+          assert { value y sy * (power radix (sx - sy + adjust))
+                   > value nx (sx + adjust)
+                   by
+                   let dh = (pelts y)[y.offset + sy - 1] in
+                   value y sy >= dh * power radix (sy - 1)
+                   so value nx (sx + adjust) = value nx sx = value x sx
+                   so [@case_split]
+                      ((adjust = 1
+                           so value x sx < power radix sx
+                           so value y sy * power radix (sx - sy + adjust)
+                              >= dh * power radix (sy - 1)
+                                    * power radix (sx - sy + adjust)
+                              = dh * power radix ((sy - 1) + (sx - sy + adjust))
+                              = dh * power radix sx
+                           so dh >= div radix 2 > 1
+                           so dh * power radix sx > power radix sx )
+                      \/
+                      (adjust = 0
+                           so let ah = (pelts x)[x.offset + sx - 1] in
+                              value x sx < (ah + 1) * power radix (sx - 1)
+                              so ah + 1 <= dh
+                              so value x sx < dh * power radix (sx - 1)
+                              so value y sy * power radix (sx - sy + adjust)
+                                 = value y sy * power radix (sx - sy)
+                                 >= dh * power radix (sy - 1)
+                                       * power radix (sx - sy)
+                                 = dh * power radix (sy - 1 + sx - sy)
+                                 = dh * power radix (sx - 1))) };
+          label Div_ns in
+          let ghost _qh = div_sb_qr q nx y (Int32.(+) sx adjust) sy in
+          copy r nx sy;
+          assert { value x sx
+                   = value q (sx - sy + adjust) * value y sy
+                   + value r sy
+                 by value r sy = value nx sy
+                 so value (nx at Div_ns) (sx + adjust) = value x sx < power radix sx
+                 so value (nx at Div_ns) (sx + adjust)
+                    = value (nx at Div_ns) sx
+                 so (_qh = 0
+                     by
+                     value (nx at Div_ns) (sx + adjust)
+                     = (value q (sx - sy + adjust)
+                        + power radix (sx - sy + adjust) * _qh)
+                      * value y sy
+                      + value nx sy
+                     so value nx sy >= 0
+                     so value q (sx - sy + adjust) >= 0
+                     so _qh >= 0
+                     so (value q (sx - sy + adjust)
+                             + power radix (sx - sy + adjust) * _qh) >= 0
+                     so (value q (sx - sy + adjust)
+                         + power radix (sx - sy + adjust) * _qh)
+                        * value y sy
+                        + value nx sy
+                        >= (value q (sx - sy + adjust)
+                             + power radix (sx - sy + adjust) * _qh)
+                           * value y sy
+                        >= power radix (sx - sy + adjust) * _qh * value y sy
+                     so _qh <> 1)
+                 so value x sx = value (nx at Div_ns) sx
+                 };
+           label Ret_ns in
+           begin
+             ensures { value q (sx - sy + 1)
+                       = value (q at Ret_ns) (sx - sy + adjust) }
+             if (Int32.(=) adjust zero)
+             then begin
+               value_sub_shift_no_change (pelts x) x.offset
+                                         (p2i sx) (p2i sx) limb_zero;
+               set_ofs q (Int32.(-) sx sy) limb_zero;
+               value_sub_tail (pelts q) q.offset (q.offset + p2i sx - p2i sy);
+               ()
+             end
+           end
+        end
+        else begin
+          let ghost _c = lshift ny y sy (Limb.of_int32 clz) in
+          begin
+            ensures { normalized ny sy }
+            ensures { value ny sy
+                      = power 2 clz * value y sy }
+            let ghost dh = (pelts y)[y.offset + p2i sy - 1] in
+            assert { value y sy
+                     = value y (sy - 1) + power radix (sy - 1) * dh };
+            value_sub_upper_bound (pelts y) y.offset (y.offset + p2i sy - 1);
+            value_sub_tail (pelts ny) ny.offset (ny.offset + p2i sy - 1);
+            value_sub_upper_bound (pelts ny) ny.offset (ny.offset + p2i sy - 1);
+            let ghost ndh = (pelts ny)[ny.offset + p2i sy - 1] in
+            assert { normalized ny sy
+                     /\ value ny sy
+                        = power 2 clz * value y sy
+                     by
+                     value y sy < (dh + 1) * power radix (sy - 1)
+                     so value ny sy + (power radix sy) * _c
+                        = power 2 clz * value y sy
+                        = power 2 clz
+                          * (value y (sy - 1)
+                             + dh * power radix (sy - 1))
+                     so power 2 clz * dh <= radix - power 2 clz
+                     so (_c = 0
+                        by
+                          value ny sy + (power radix sy) * _c
+                          = power 2 clz * value y (sy - 1)
+                            + power 2 clz * dh * power radix (sy - 1)
+                          < power 2 clz * power radix (sy - 1)
+                            + power 2 clz * dh * power radix (sy - 1)
+                          <= power 2 clz * power radix (sy - 1)
+                            + (radix - power 2 clz) * power radix (sy - 1)
+                           = radix * power radix (sy - 1)
+                           = power radix sy
+                        so value ny sy >= 0
+                        so power radix sy * _c < power radix sy
+                        so power radix sy > 0
+                        so _c >= 0
+                        )
+                     so value ny sy
+                        = power 2 clz * value y sy
+                     so value y sy >= dh * power radix (sy - 1)
+                     so value ny sy
+                        >= power 2  clz * dh * power radix (sy - 1)
+                     so value ny sy =
+                        value ny (sy - 1) + power radix (sy - 1) * ndh
+                        < power radix (sy - 1) + power radix (sy - 1) * ndh
+                        = power radix (sy - 1) * (ndh + 1)
+                     so power radix (sy - 1) * (ndh + 1)
+                        > power radix (sy - 1) * (power 2 clz * dh)
+                     so ndh + 1 > power 2 clz * dh
+                     so ndh >= power 2 clz * dh
+                     so 2 * power 2 clz * dh >= radix
+                     so 2 * ndh >= radix
+                     so ndh >= div radix 2
+                   };
+          end;
+          let h = lshift nx x sx (Limb.of_int32 clz) in
+          label Shifted in
+          C.set_ofs nx sx h;
+          begin
+            ensures { value nx (sx + adjust)
+                      = p * value x sx  }
+            if (Int32.(=) adjust one)
+            then begin
+              value_sub_tail (pelts nx) nx.offset (nx.offset + p2i sx);
+              assert { value nx (sx + 1)
+                        = p * value x sx
+                       by
+                       value nx sx + power radix sx * h
+                        = p * value x sx
+                       so value nx (sx + 1)
+                          = value nx sx + power radix sx * h
+                     } end
+            else begin
+              assert { adjust = 0 };
+              assert { h = 0
+                       by
+                       let dh = (pelts y)[y.offset + sy - 1] in
+                       let ah = (pelts x)[x.offset + sx - 1] in
+                       p * dh < radix
+                       so 0 <= ah <= dh
+                       so p * ah < radix
+                       so (p * ah <= radix - p
+                           by
+                           let q = power 2 (Limb.length - clz) in
+                           radix = p * q
+                           so p * ah < p * q
+                           so ah < q
+                           so ah <= q - 1
+                           so p * ah <= p * (q - 1) = radix - p
+                           )
+                       so p * (ah + 1) <= radix
+                       so let s = power radix (sx - 1) in
+                          value x sx < (ah + 1) * s
+                       so p * value x sx < p * (ah + 1) * s
+                       so (p * (ah + 1) * s
+                           <= radix * s
+                           by
+                           [@case_split]
+                           (p * (ah + 1) = radix
+                           \/ (p * (ah + 1) < radix
+                               so s > 0
+                               so p * (ah + 1) * s
+                                 < radix * s)))
+                       so radix * power radix (sx - 1) = power radix sx
+                       so value (nx at Shifted) sx + power radix sx * h
+                          < power radix sx
+                       so power radix sx * h < power radix sx * 1
+                       so (h < 1 by power radix sx > 0)
+                      }
+            end
+          end;
+          label Div_s in
+          assert { value ny sy * (power radix (sx - sy + adjust))
+                   > value nx (sx + adjust)
+                   by
+                   let dh = (pelts y)[y.offset + sy - 1] in
+                   value ny sy >= p * dh * power radix (sy - 1)
+                   so value nx (sx + adjust) = p * value x sx
+                   so p > 0
+                   so [@case_split]
+                      ((adjust = 1
+                           so value x sx < power radix sx
+                           so p * value x sx < p * power radix sx
+                           so value ny sy * power radix (sx - sy + adjust)
+                              >= p * dh * power radix (sy - 1)
+                                    * power radix (sx - sy + adjust)
+                              = p * dh * power radix ((sy - 1) + (sx - sy + adjust))
+                              = p * dh * power radix sx
+                           so dh >= 1
+                           so p * dh * power radix sx >= p * power radix sx )
+                      \/
+                      (adjust = 0
+                           so let ah = (pelts x)[x.offset + sx - 1] in
+                              value x sx < (ah + 1) * power radix (sx - 1)
+                              so ah + 1 <= dh
+                              so value x sx < dh * power radix (sx - 1)
+                              so p * value x sx < p * dh * power radix (sx - 1)
+                              so value ny sy * power radix (sx - sy + adjust)
+                                 = value ny sy * power radix (sx - sy)
+                                 >= p * dh * power radix (sy - 1)
+                                       * power radix (sx - sy)
+                                 = p * dh * power radix (sy - 1 + sx - sy)
+                                 = p * dh * power radix (sx - 1))) };
+          let ghost _qh = div_sb_qr q nx ny (Int32.(+) sx adjust) sy in
+          let ghost _l = rshift r nx sy (Limb.of_int32 clz) in
+          begin ensures { value nx sy = p * value r sy }
+            assert { _l = 0
+                   by
+                     (mod (value nx sy) p = 0
+                      by
+                        value (nx at Div_s) (sx + adjust)
+                     = (value q (sx - sy + adjust)
+                         + power radix (sx - sy + adjust) * _qh)
+                        * value ny sy
+                        + value nx sy
+                     so value (nx at Div_s) (sx + adjust)
+                      = p * value x sx
+                     so value ny sy = p * value y sy
+                     so value nx sy
+                        = value (nx at Div_s) (sx + adjust)
+                          - (value q (sx - sy + adjust)
+                            + power radix (sx - sy + adjust) * _qh)
+                            * value ny sy
+                        = p * value x sx
+                          - p * (value q (sx - sy + adjust)
+                                 + power radix (sx - sy + adjust) * _qh)
+                              * value y sy
+                        = p * (value x sx
+                               - (value q (sx - sy + adjust)
+                                 + power radix (sx - sy + adjust) * _qh)
+                                 * value y sy)
+                     so let n = (value x sx
+                                  - (value q (sx - sy + adjust)
+                                     + power radix (sx - sy + adjust) * _qh)
+                                     * value y sy)
+                        in
+                        value nx sy = p * n
+                        so value nx sy >= 0
+                        so p > 0
+                        so n >= 0
+                        so mod (value nx sy) p
+                           = mod (p * n) p
+                           = mod ((p*n)+0) p
+                           = mod 0 p
+                           = 0
+                   )
+                   so _l + radix * value r sy
+                      = power 2 (Limb.length - clz) * (value nx sy)
+                   so let a = div (value nx sy) p in
+                      value nx sy = p * a
+                   so power 2 (Limb.length - clz) * p = radix
+                   so power 2 (Limb.length - clz) * (value nx sy)
+                      = power 2 (Limb.length - clz) * (p * a)
+                      = (power 2 (Limb.length - clz) * p) * a
+                      = radix * a
+                   so mod (radix * value r sy + _l) radix
+                      = mod _l radix
+                   so mod (radix * value r sy + _l) radix
+                      = mod (radix * a) radix = 0
+                   so mod _l radix = 0
+                   so 0 <= _l < radix
+                 };
+            assert { value nx sy = p * value r sy
+                     by
+                     radix * value r sy
+                     = power 2 (Limb.length - clz) * value nx sy
+                     so p * power 2 (Limb.length - clz)
+                        = radix
+                     so p * radix * value r sy
+                        = p * power 2 (Limb.length - clz) * value nx sy
+                        = radix * value nx sy
+                     so p * value r sy = value nx sy
+                   }
+          end;
+          assert { value x sx
+                   = value q (sx - sy + adjust) * value y sy
+                   + value r sy
+                  by
+                   value (nx at Div_s) (sx + adjust)
+                   = (value q (sx - sy + adjust)
+                       + power radix (sx - sy + adjust) * _qh)
+                     * value ny sy
+                     + value nx sy
+                  so value (nx at Div_s) (sx + adjust)
+                      = p * value x sx
+                  so power radix (sx - sy + 1) * power radix (sy - 1)
+                     = power radix sx
+                  so value ny sy = p * value y sy
+                  so (_qh = 0
+                     by
+                     value (nx at Div_s) (sx + adjust)
+                     = (value q (sx - sy + adjust)
+                        + power radix (sx - sy + adjust) * _qh)
+                      * value ny sy
+                      + value nx sy
+                     so value nx sy >= 0
+                     so value q (sx - sy + adjust) >= 0
+                     so _qh >= 0
+                     so (value q (sx - sy + adjust)
+                             + power radix (sx - sy + adjust) * _qh) >= 0
+                     so (value q (sx - sy + adjust)
+                         + power radix (sx - sy + adjust) * _qh)
+                        * value ny sy
+                        + value nx sy
+                        >= (value q (sx - sy + adjust)
+                             + power radix (sx - sy + adjust) * _qh)
+                           * value ny sy
+                        >= power radix (sx - sy + adjust) * _qh * value ny sy
+                     so _qh <> 1)
+                  so value nx sy = p * value r sy
+                  so p * value x sx
+                     = value q (sx - sy + adjust) * p * value y sy
+                       + p * value r sy
+                     = p * (value q (sx - sy + adjust)
+                       * value y sy
+                            + value r sy)
+                 };
+          label Ret_s in
+          begin
+            ensures { value q (sx - sy + 1)
+                      = value (q at Ret_s) (sx - sy + adjust) }
+            if (Int32.(=) adjust zero)
+            then begin
+              value_sub_shift_no_change (pelts x) x.offset
+                                        (p2i sx) (p2i sx) limb_zero;
+              set_ofs q (Int32.(-) sx sy) limb_zero;
+              value_sub_tail (pelts q) q.offset (q.offset + p2i sx - p2i sy);
+              assert { value q (sx - sy + 1) = value (q at Ret_s) (sx - sy)
+                       by value q (sx - sy + 1)
+                          = value (q at Ret_s) (sx - sy) + power radix (sx - sy) * 0
+                          = value (q at Ret_s) (sx - sy) }
+            end
+          end;
+          ()
+        end
+        end
+       (* else begin
+        let dn = Int32.(+) !qn one in
+        let dqn = Int32.(+) !qn !qn in
+        let ign = Int32.(-) sy dn in
+        let ix = C.incr nx (Int32.(-) sx dqn)  in
+        let iy = C.incr y ign in
+        let clz = clz_ext (C.get_ofs y (Int32.(-) sy one)) in
+        (*let ghost p = power 2 (p2i clz) in*)
+        (if Int32.(=) clz zero
+        then begin
+          copy nx x sx;
+          C.set_ofs nx sx limb_zero;
+          (
+          if (Int32.(=) dn two)
+          then
+            let _d1 = divmod_2 q ix iy (Int32.(+) dqn one) in ()
+          else
+            let _s1 = div_sb_qr q ix iy (Int32.(+) dqn one) dn in ()
+          )
+          end
+        else begin
+          let _ = lshift ny y sy (Limb.of_int32 clz) in
+          let h = lshift nx x sx (Limb.of_int32 clz) in
+          C.set_ofs nx sx h;
+          begin
+          if (Int32.(=) dn two)
+          then
+           let _d2 = divmod_2 q ix (incr ny ign) (Int32.(+) dqn one) in ()
+          else
+           let _s2 = div_sb_qr q ix (incr ny ign) (Int32.(+) dqn one) dn in ()
+          end
+        end);
+        (* we have an estimated q, adjust by at most 1 *)
+        let dl = ref limb_zero in
+        let st = Int32.(-) sy one in
+        let snx = Int32.(+) sx one in
+        let tp = C.malloc (UInt32.of_int32 st) in
+        mul tp q ny !qn ign;
+        let b = sub_in_place nx tp snx st in
+        (if Limb.(>) b limb_zero
+        then (* quotient too large *)
+          let _s = sub_limb_in_place q (Limb.of_int 1) (!qn) in
+          let _a = add_in_place nx ny snx sy in
+          ()
+        else ());
+        if Int32.(=) clz zero
+        then begin copy r nx sy end
+        else let _r = rshift r nx sy (Limb.of_int32 clz) in ();
+        C.free tp;
+        ()
+        end*)
+
+  let tdiv_qr (q r x y:t) (sx sy:int32) : unit
+    requires { 1 <= sy <= sx <= (Int32.max_int32 - 1) }
+    requires { valid x sx }
+    requires { valid y sy }
+    requires { valid q (sx - sy + 1) }
+    requires { valid r sy }
+    requires { (pelts y)[y.offset + sy - 1] > 0 }
+    ensures { value x sx
+              = value q (sx - sy + 1) * value y sy
+                + value r sy }
+    ensures { value r sy < value y sy }
+    diverges
+  =
+    let uone = UInt32.of_int 1 in
+    let nx = malloc (UInt32.(+) (UInt32.of_int32 sx) uone) in
+    c_assert (is_not_null nx);
+    let ny = malloc (UInt32.of_int32 sy) in
+    c_assert (is_not_null ny);
+    div_qr q r x y nx ny sx sy;
+    free nx;
+    free ny;
+
+end
\ No newline at end of file
diff --git a/examples/multiprecision/div/why3session.xml b/examples/multiprecision/div/why3session.xml
new file mode 100644
index 0000000000..400b55d67b
--- /dev/null
+++ b/examples/multiprecision/div/why3session.xml
@@ -0,0 +1,10635 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE why3session PUBLIC "-//Why3//proof session v5//EN"
+"http://why3.lri.fr/why3session.dtd">
+<why3session shape_version="4">
+<prover id="0" name="Eprover" version="1.9.1-001" timelimit="5" steplimit="0" memlimit="2000"/>
+<prover id="1" name="CVC3" version="2.4.1" timelimit="5" steplimit="0" memlimit="2000"/>
+<prover id="2" name="CVC4" version="1.4" timelimit="5" steplimit="0" memlimit="1000"/>
+<prover id="3" name="Z3" version="4.5.0" timelimit="1" steplimit="0" memlimit="1000"/>
+<prover id="4" name="Z3" version="4.4.1" timelimit="5" steplimit="0" memlimit="1000"/>
+<prover id="5" name="Alt-Ergo" version="2.0.0" timelimit="1" steplimit="0" memlimit="1000"/>
+<file name="../div.mlw" proved="true">
+<theory name="Div" proved="true">
+ <goal name="VC fact_div" expl="VC for fact_div" proved="true">
+ <transf name="split_goal_right" proved="true" >
+  <goal name="VC fact_div.0" expl="assertion" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC fact_div.0.0" expl="VC for fact_div" proved="true">
+   <proof prover="5" timelimit="5"><result status="valid" time="0.04" steps="9"/></proof>
+   </goal>
+   <goal name="VC fact_div.0.1" expl="VC for fact_div" proved="true">
+   <proof prover="1" memlimit="1000"><result status="valid" time="0.06"/></proof>
+   </goal>
+   <goal name="VC fact_div.0.2" expl="VC for fact_div" proved="true">
+   <proof prover="5" timelimit="5"><result status="valid" time="0.04" steps="10"/></proof>
+   </goal>
+   <goal name="VC fact_div.0.3" expl="VC for fact_div" proved="true">
+   <proof prover="5" timelimit="5"><result status="valid" time="0.03" steps="11"/></proof>
+   </goal>
+   <goal name="VC fact_div.0.4" expl="VC for fact_div" proved="true">
+   <proof prover="5" timelimit="5"><result status="valid" time="0.03" steps="13"/></proof>
+   </goal>
+   <goal name="VC fact_div.0.5" expl="VC for fact_div" proved="true">
+   <proof prover="5" timelimit="5"><result status="valid" time="0.04" steps="13"/></proof>
+   </goal>
+   <goal name="VC fact_div.0.6" expl="VC for fact_div" proved="true">
+   <proof prover="5" timelimit="5"><result status="valid" time="0.05" steps="14"/></proof>
+   </goal>
+   <goal name="VC fact_div.0.7" expl="VC for fact_div" proved="true">
+   <proof prover="5" timelimit="5"><result status="valid" time="0.03" steps="15"/></proof>
+   </goal>
+   <goal name="VC fact_div.0.8" expl="VC for fact_div" proved="true">
+   <proof prover="5" timelimit="5"><result status="valid" time="0.05" steps="15"/></proof>
+   </goal>
+   <goal name="VC fact_div.0.9" expl="VC for fact_div" proved="true">
+   <proof prover="5" timelimit="5"><result status="valid" time="0.05" steps="17"/></proof>
+   </goal>
+   <goal name="VC fact_div.0.10" expl="VC for fact_div" proved="true">
+   <proof prover="5" timelimit="5"><result status="valid" time="0.05" steps="26"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC fact_div.1" expl="postcondition" proved="true">
+  <proof prover="0" memlimit="1000"><result status="valid" time="0.17"/></proof>
+  </goal>
+ </transf>
+ </goal>
+ <goal name="VC invert_limb" expl="VC for invert_limb" proved="true">
+ <transf name="split_goal_right" proved="true" >
+  <goal name="VC invert_limb.0" expl="integer overflow" proved="true">
+  <proof prover="4"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC invert_limb.1" expl="integer overflow" proved="true">
+  <proof prover="4"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC invert_limb.2" expl="integer overflow" proved="true">
+  <proof prover="5" timelimit="5"><result status="valid" time="0.06" steps="11"/></proof>
+  </goal>
+  <goal name="VC invert_limb.3" expl="precondition" proved="true">
+  <proof prover="4"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC invert_limb.4" expl="precondition" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC invert_limb.4.0" expl="precondition" proved="true">
+   <proof prover="1" memlimit="1000"><result status="valid" time="0.05"/></proof>
+   <proof prover="5" timelimit="5"><result status="valid" time="0.03" steps="12"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC invert_limb.5" expl="assertion" proved="true">
+  <proof prover="5"><result status="valid" time="0.01" steps="13"/></proof>
+  </goal>
+  <goal name="VC invert_limb.6" expl="postcondition" proved="true">
+  <proof prover="4"><result status="valid" time="0.03"/></proof>
+  </goal>
+ </transf>
+ </goal>
+ <goal name="VC div2by1_inv" expl="VC for div2by1_inv" proved="true">
+ <transf name="split_goal_right" proved="true" >
+  <goal name="VC div2by1_inv.0" expl="integer overflow" proved="true">
+  <proof prover="3"><result status="valid" time="0.01"/></proof>
+  </goal>
+  <goal name="VC div2by1_inv.1" expl="integer overflow" proved="true">
+  <proof prover="2"><result status="valid" time="0.06"/></proof>
+  </goal>
+  <goal name="VC div2by1_inv.2" expl="assertion" proved="true">
+  <proof prover="1" memlimit="1000"><result status="valid" time="0.18"/></proof>
+  </goal>
+  <goal name="VC div2by1_inv.3" expl="precondition" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC div2by1_inv.3.0" expl="VC for div2by1_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.03"/></proof>
+   </goal>
+   <goal name="VC div2by1_inv.3.1" expl="VC for div2by1_inv" proved="true">
+   <proof prover="2" timelimit="1"><result status="valid" time="0.04"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div2by1_inv.4" expl="precondition" proved="true">
+  <proof prover="4"><result status="valid" time="0.09"/></proof>
+  </goal>
+  <goal name="VC div2by1_inv.5" expl="assertion" proved="true">
+  <proof prover="5"><result status="valid" time="0.03" steps="21"/></proof>
+  </goal>
+  <goal name="VC div2by1_inv.6" expl="assertion" proved="true">
+  <proof prover="3"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC div2by1_inv.7" expl="assertion" proved="true">
+  <proof prover="1" memlimit="1000"><result status="valid" time="0.14"/></proof>
+  </goal>
+  <goal name="VC div2by1_inv.8" expl="assertion" proved="true">
+  <proof prover="4"><result status="valid" time="0.05"/></proof>
+  </goal>
+  <goal name="VC div2by1_inv.9" expl="assertion" proved="true">
+  <proof prover="5"><result status="valid" time="0.04" steps="29"/></proof>
+  </goal>
+  <goal name="VC div2by1_inv.10" expl="assertion" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC div2by1_inv.10.0" expl="VC for div2by1_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.01"/></proof>
+   </goal>
+   <goal name="VC div2by1_inv.10.1" expl="VC for div2by1_inv" proved="true">
+   <proof prover="1" memlimit="1000"><result status="valid" time="0.14"/></proof>
+   </goal>
+   <goal name="VC div2by1_inv.10.2" expl="VC for div2by1_inv" proved="true">
+   <proof prover="5"><result status="valid" time="0.06" steps="32"/></proof>
+   </goal>
+   <goal name="VC div2by1_inv.10.3" expl="VC for div2by1_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.01"/></proof>
+   </goal>
+   <goal name="VC div2by1_inv.10.4" expl="VC for div2by1_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.01"/></proof>
+   </goal>
+   <goal name="VC div2by1_inv.10.5" expl="VC for div2by1_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.01"/></proof>
+   </goal>
+   <goal name="VC div2by1_inv.10.6" expl="VC for div2by1_inv" proved="true">
+   <proof prover="5"><result status="valid" time="0.06" steps="32"/></proof>
+   </goal>
+   <goal name="VC div2by1_inv.10.7" expl="VC for div2by1_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.01"/></proof>
+   </goal>
+   <goal name="VC div2by1_inv.10.8" expl="VC for div2by1_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.01"/></proof>
+   </goal>
+   <goal name="VC div2by1_inv.10.9" expl="VC for div2by1_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div2by1_inv.10.10" expl="VC for div2by1_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.01"/></proof>
+   </goal>
+   <goal name="VC div2by1_inv.10.11" expl="VC for div2by1_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div2by1_inv.10.12" expl="VC for div2by1_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div2by1_inv.10.13" expl="VC for div2by1_inv" proved="true">
+   <proof prover="5"><result status="valid" time="0.21" steps="42"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div2by1_inv.11" expl="assertion" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC div2by1_inv.11.0" expl="assertion" proved="true">
+   <proof prover="1"><result status="valid" time="0.09"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div2by1_inv.12" expl="precondition" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC div2by1_inv.12.0" expl="VC for div2by1_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.04"/></proof>
+   </goal>
+   <goal name="VC div2by1_inv.12.1" expl="VC for div2by1_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.04"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div2by1_inv.13" expl="precondition" proved="true">
+  <proof prover="4"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC div2by1_inv.14" expl="precondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.18"/></proof>
+  </goal>
+  <goal name="VC div2by1_inv.15" expl="precondition" proved="true">
+  <proof prover="1" memlimit="1000"><result status="valid" time="0.15"/></proof>
+  </goal>
+  <goal name="VC div2by1_inv.16" expl="assertion" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC div2by1_inv.16.0" expl="VC for div2by1_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div2by1_inv.16.1" expl="VC for div2by1_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.08"/></proof>
+   </goal>
+   <goal name="VC div2by1_inv.16.2" expl="VC for div2by1_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.04"/></proof>
+   </goal>
+   <goal name="VC div2by1_inv.16.3" expl="VC for div2by1_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.05"/></proof>
+   </goal>
+   <goal name="VC div2by1_inv.16.4" expl="VC for div2by1_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.07"/></proof>
+   </goal>
+   <goal name="VC div2by1_inv.16.5" expl="VC for div2by1_inv" proved="true">
+   <proof prover="1"><result status="valid" time="0.14"/></proof>
+   </goal>
+   <goal name="VC div2by1_inv.16.6" expl="VC for div2by1_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.03"/></proof>
+   </goal>
+   <goal name="VC div2by1_inv.16.7" expl="VC for div2by1_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.05"/></proof>
+   </goal>
+   <goal name="VC div2by1_inv.16.8" expl="VC for div2by1_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div2by1_inv.16.9" expl="VC for div2by1_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.01"/></proof>
+   </goal>
+   <goal name="VC div2by1_inv.16.10" expl="VC for div2by1_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div2by1_inv.16.11" expl="VC for div2by1_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.05"/></proof>
+   </goal>
+   <goal name="VC div2by1_inv.16.12" expl="VC for div2by1_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.07"/></proof>
+   </goal>
+   <goal name="VC div2by1_inv.16.13" expl="VC for div2by1_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div2by1_inv.16.14" expl="VC for div2by1_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div2by1_inv.16.15" expl="VC for div2by1_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.05"/></proof>
+   </goal>
+   <goal name="VC div2by1_inv.16.16" expl="VC for div2by1_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div2by1_inv.16.17" expl="VC for div2by1_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div2by1_inv.16.18" expl="VC for div2by1_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div2by1_inv.16.19" expl="VC for div2by1_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.04"/></proof>
+   </goal>
+   <goal name="VC div2by1_inv.16.20" expl="VC for div2by1_inv" proved="true">
+   <proof prover="2" timelimit="1"><result status="valid" time="0.11"/></proof>
+   </goal>
+   <goal name="VC div2by1_inv.16.21" expl="VC for div2by1_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.03"/></proof>
+   </goal>
+   <goal name="VC div2by1_inv.16.22" expl="VC for div2by1_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.04"/></proof>
+   </goal>
+   <goal name="VC div2by1_inv.16.23" expl="VC for div2by1_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.04"/></proof>
+   </goal>
+   <goal name="VC div2by1_inv.16.24" expl="VC for div2by1_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.07"/></proof>
+   </goal>
+   <goal name="VC div2by1_inv.16.25" expl="VC for div2by1_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.04"/></proof>
+   </goal>
+   <goal name="VC div2by1_inv.16.26" expl="VC for div2by1_inv" proved="true">
+   <transf name="introduce_premises" proved="true" >
+    <goal name="VC div2by1_inv.16.26.0" expl="VC for div2by1_inv" proved="true">
+    <transf name="apply" proved="true" arg1="prod_compat_strict_r">
+     <goal name="VC div2by1_inv.16.26.0.0" proved="true">
+     <proof prover="3"><result status="valid" time="0.02"/></proof>
+     </goal>
+     <goal name="VC div2by1_inv.16.26.0.1" proved="true">
+     <proof prover="3"><result status="valid" time="0.02"/></proof>
+     </goal>
+    </transf>
+    </goal>
+   </transf>
+   </goal>
+   <goal name="VC div2by1_inv.16.27" expl="VC for div2by1_inv" proved="true">
+   <proof prover="0"><result status="valid" time="0.15"/></proof>
+   </goal>
+   <goal name="VC div2by1_inv.16.28" expl="VC for div2by1_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.04"/></proof>
+   </goal>
+   <goal name="VC div2by1_inv.16.29" expl="VC for div2by1_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.01"/></proof>
+   </goal>
+   <goal name="VC div2by1_inv.16.30" expl="VC for div2by1_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.03"/></proof>
+   </goal>
+   <goal name="VC div2by1_inv.16.31" expl="VC for div2by1_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.01"/></proof>
+   </goal>
+   <goal name="VC div2by1_inv.16.32" expl="VC for div2by1_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div2by1_inv.16.33" expl="VC for div2by1_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.01"/></proof>
+   </goal>
+   <goal name="VC div2by1_inv.16.34" expl="VC for div2by1_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div2by1_inv.16.35" expl="VC for div2by1_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div2by1_inv.16.36" expl="VC for div2by1_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.06"/></proof>
+   </goal>
+   <goal name="VC div2by1_inv.16.37" expl="VC for div2by1_inv" proved="true">
+   <proof prover="0"><result status="valid" time="0.28"/></proof>
+   </goal>
+   <goal name="VC div2by1_inv.16.38" expl="VC for div2by1_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.06"/></proof>
+   </goal>
+   <goal name="VC div2by1_inv.16.39" expl="VC for div2by1_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.06"/></proof>
+   </goal>
+   <goal name="VC div2by1_inv.16.40" expl="VC for div2by1_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.04"/></proof>
+   </goal>
+   <goal name="VC div2by1_inv.16.41" expl="VC for div2by1_inv" proved="true">
+   <proof prover="0"><result status="valid" time="0.03"/></proof>
+   </goal>
+   <goal name="VC div2by1_inv.16.42" expl="VC for div2by1_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div2by1_inv.16.43" expl="VC for div2by1_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div2by1_inv.16.44" expl="VC for div2by1_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div2by1_inv.16.45" expl="VC for div2by1_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div2by1_inv.16.46" expl="VC for div2by1_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.03"/></proof>
+   </goal>
+   <goal name="VC div2by1_inv.16.47" expl="VC for div2by1_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.05"/></proof>
+   </goal>
+   <goal name="VC div2by1_inv.16.48" expl="VC for div2by1_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.05"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div2by1_inv.17" expl="assertion" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC div2by1_inv.17.0" expl="assertion" proved="true">
+   <proof prover="2" timelimit="1"><result status="valid" time="0.31"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div2by1_inv.18" expl="assertion" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC div2by1_inv.18.0" expl="assertion" proved="true">
+   <proof prover="3"><result status="valid" time="0.03"/></proof>
+   </goal>
+   <goal name="VC div2by1_inv.18.1" expl="VC for div2by1_inv" proved="true">
+   <proof prover="2" timelimit="1"><result status="valid" time="0.13"/></proof>
+   </goal>
+   <goal name="VC div2by1_inv.18.2" expl="VC for div2by1_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.01"/></proof>
+   </goal>
+   <goal name="VC div2by1_inv.18.3" expl="VC for div2by1_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.04"/></proof>
+   </goal>
+   <goal name="VC div2by1_inv.18.4" expl="VC for div2by1_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.03"/></proof>
+   </goal>
+   <goal name="VC div2by1_inv.18.5" expl="VC for div2by1_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.01"/></proof>
+   </goal>
+   <goal name="VC div2by1_inv.18.6" expl="VC for div2by1_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div2by1_inv.18.7" expl="VC for div2by1_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.01"/></proof>
+   </goal>
+   <goal name="VC div2by1_inv.18.8" expl="VC for div2by1_inv" proved="true">
+   <proof prover="2" timelimit="1"><result status="valid" time="0.29"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div2by1_inv.19" expl="assertion" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC div2by1_inv.19.0" expl="assertion" proved="true">
+   <proof prover="2" timelimit="1"><result status="valid" time="0.22"/></proof>
+   </goal>
+   <goal name="VC div2by1_inv.19.1" expl="assertion" proved="true">
+   <proof prover="2" timelimit="1"><result status="valid" time="0.07"/></proof>
+   </goal>
+   <goal name="VC div2by1_inv.19.2" expl="VC for div2by1_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.03"/></proof>
+   </goal>
+   <goal name="VC div2by1_inv.19.3" expl="VC for div2by1_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.03"/></proof>
+   </goal>
+   <goal name="VC div2by1_inv.19.4" expl="VC for div2by1_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.07"/></proof>
+   </goal>
+   <goal name="VC div2by1_inv.19.5" expl="VC for div2by1_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.04"/></proof>
+   </goal>
+   <goal name="VC div2by1_inv.19.6" expl="VC for div2by1_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.04"/></proof>
+   </goal>
+   <goal name="VC div2by1_inv.19.7" expl="VC for div2by1_inv" proved="true">
+   <proof prover="2"><result status="valid" time="0.05"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div2by1_inv.20" expl="assertion" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC div2by1_inv.20.0" expl="VC for div2by1_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.04"/></proof>
+   </goal>
+   <goal name="VC div2by1_inv.20.1" expl="VC for div2by1_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div2by1_inv.21" expl="assertion" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC div2by1_inv.21.0" expl="VC for div2by1_inv" proved="true">
+   <proof prover="0" memlimit="1000"><result status="valid" time="0.03"/></proof>
+   <proof prover="1" memlimit="1000"><result status="valid" time="0.12"/></proof>
+   <proof prover="2"><result status="valid" time="0.07"/></proof>
+   </goal>
+   <goal name="VC div2by1_inv.21.1" expl="VC for div2by1_inv" proved="true">
+   <proof prover="2" timelimit="1"><result status="valid" time="0.28"/></proof>
+   </goal>
+   <goal name="VC div2by1_inv.21.2" expl="VC for div2by1_inv" proved="true">
+   <proof prover="1"><result status="valid" time="0.20"/></proof>
+   </goal>
+   <goal name="VC div2by1_inv.21.3" expl="VC for div2by1_inv" proved="true">
+   <proof prover="2" timelimit="1"><result status="valid" time="0.08"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div2by1_inv.22" expl="assertion" proved="true">
+  <proof prover="1" memlimit="1000"><result status="valid" time="0.14"/></proof>
+  </goal>
+  <goal name="VC div2by1_inv.23" expl="assertion" proved="true">
+  <proof prover="0"><result status="valid" time="3.42"/></proof>
+  </goal>
+  <goal name="VC div2by1_inv.24" expl="assertion" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC div2by1_inv.24.0" expl="assertion" proved="true">
+   <proof prover="4"><result status="valid" time="0.03"/></proof>
+   </goal>
+   <goal name="VC div2by1_inv.24.1" expl="VC for div2by1_inv" proved="true">
+   <proof prover="4"><result status="valid" time="0.03"/></proof>
+   </goal>
+   <goal name="VC div2by1_inv.24.2" expl="VC for div2by1_inv" proved="true">
+   <proof prover="4"><result status="valid" time="0.10"/></proof>
+   </goal>
+   <goal name="VC div2by1_inv.24.3" expl="VC for div2by1_inv" proved="true">
+   <proof prover="2"><result status="valid" time="0.07"/></proof>
+   </goal>
+   <goal name="VC div2by1_inv.24.4" expl="VC for div2by1_inv" proved="true">
+   <proof prover="4"><result status="valid" time="0.03"/></proof>
+   </goal>
+   <goal name="VC div2by1_inv.24.5" expl="VC for div2by1_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.04"/></proof>
+   </goal>
+   <goal name="VC div2by1_inv.24.6" expl="VC for div2by1_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.03"/></proof>
+   </goal>
+   <goal name="VC div2by1_inv.24.7" expl="VC for div2by1_inv" proved="true">
+   <proof prover="2" timelimit="1"><result status="valid" time="0.06"/></proof>
+   </goal>
+   <goal name="VC div2by1_inv.24.8" expl="VC for div2by1_inv" proved="true">
+   <proof prover="2" timelimit="1"><result status="valid" time="0.22"/></proof>
+   </goal>
+   <goal name="VC div2by1_inv.24.9" expl="VC for div2by1_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.08"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div2by1_inv.25" expl="assertion" proved="true">
+  <proof prover="4"><result status="valid" time="0.01"/></proof>
+  </goal>
+  <goal name="VC div2by1_inv.26" expl="assertion" proved="true">
+  <proof prover="2"><result status="valid" time="1.71"/></proof>
+  </goal>
+  <goal name="VC div2by1_inv.27" expl="assertion" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC div2by1_inv.27.0" expl="assertion" proved="true">
+   <proof prover="4"><result status="valid" time="0.01"/></proof>
+   </goal>
+   <goal name="VC div2by1_inv.27.1" expl="assertion" proved="true">
+   <proof prover="4"><result status="valid" time="0.06"/></proof>
+   </goal>
+   <goal name="VC div2by1_inv.27.2" expl="VC for div2by1_inv" proved="true">
+   <proof prover="2" timelimit="1"><result status="valid" time="0.08"/></proof>
+   </goal>
+   <goal name="VC div2by1_inv.27.3" expl="VC for div2by1_inv" proved="true">
+   <proof prover="2" timelimit="1"><result status="valid" time="0.10"/></proof>
+   </goal>
+   <goal name="VC div2by1_inv.27.4" expl="VC for div2by1_inv" proved="true">
+   <proof prover="2"><result status="valid" time="0.18"/></proof>
+   </goal>
+   <goal name="VC div2by1_inv.27.5" expl="VC for div2by1_inv" proved="true">
+   <proof prover="4"><result status="valid" time="0.04"/></proof>
+   </goal>
+   <goal name="VC div2by1_inv.27.6" expl="VC for div2by1_inv" proved="true">
+   <proof prover="2" timelimit="1"><result status="valid" time="0.07"/></proof>
+   </goal>
+   <goal name="VC div2by1_inv.27.7" expl="VC for div2by1_inv" proved="true">
+   <proof prover="2" timelimit="1"><result status="valid" time="0.11"/></proof>
+   </goal>
+   <goal name="VC div2by1_inv.27.8" expl="VC for div2by1_inv" proved="true">
+   <proof prover="4"><result status="valid" time="0.02"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div2by1_inv.28" expl="assertion" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC div2by1_inv.28.0" expl="assertion" proved="true">
+   <proof prover="4"><result status="valid" time="0.04"/></proof>
+   </goal>
+   <goal name="VC div2by1_inv.28.1" expl="VC for div2by1_inv" proved="true">
+   <proof prover="4"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div2by1_inv.28.2" expl="VC for div2by1_inv" proved="true">
+   <proof prover="4"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div2by1_inv.28.3" expl="VC for div2by1_inv" proved="true">
+   <proof prover="0"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div2by1_inv.28.4" expl="VC for div2by1_inv" proved="true">
+   <proof prover="4"><result status="valid" time="0.04"/></proof>
+   </goal>
+   <goal name="VC div2by1_inv.28.5" expl="VC for div2by1_inv" proved="true">
+   <proof prover="4"><result status="valid" time="0.01"/></proof>
+   </goal>
+   <goal name="VC div2by1_inv.28.6" expl="VC for div2by1_inv" proved="true">
+   <proof prover="4"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div2by1_inv.28.7" expl="VC for div2by1_inv" proved="true">
+   <transf name="introduce_premises" proved="true" >
+    <goal name="VC div2by1_inv.28.7.0" expl="VC for div2by1_inv" proved="true">
+    <proof prover="3"><result status="valid" time="0.02"/></proof>
+    </goal>
+   </transf>
+   </goal>
+   <goal name="VC div2by1_inv.28.8" expl="VC for div2by1_inv" proved="true">
+   <proof prover="4"><result status="valid" time="0.01"/></proof>
+   </goal>
+   <goal name="VC div2by1_inv.28.9" expl="VC for div2by1_inv" proved="true">
+   <proof prover="4"><result status="valid" time="0.01"/></proof>
+   </goal>
+   <goal name="VC div2by1_inv.28.10" expl="VC for div2by1_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.04"/></proof>
+   </goal>
+   <goal name="VC div2by1_inv.28.11" expl="VC for div2by1_inv" proved="true">
+   <transf name="introduce_premises" proved="true" >
+    <goal name="VC div2by1_inv.28.11.0" expl="VC for div2by1_inv" proved="true">
+    <proof prover="0" timelimit="55"><result status="valid" time="0.02"/></proof>
+    </goal>
+   </transf>
+   </goal>
+   <goal name="VC div2by1_inv.28.12" expl="VC for div2by1_inv" proved="true">
+   <proof prover="2" timelimit="1"><result status="valid" time="0.17"/></proof>
+   </goal>
+   <goal name="VC div2by1_inv.28.13" expl="VC for div2by1_inv" proved="true">
+   <proof prover="4"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div2by1_inv.28.14" expl="VC for div2by1_inv" proved="true">
+   <proof prover="2" timelimit="1"><result status="valid" time="0.56"/></proof>
+   </goal>
+   <goal name="VC div2by1_inv.28.15" expl="VC for div2by1_inv" proved="true">
+   <proof prover="2" timelimit="1"><result status="valid" time="0.25"/></proof>
+   </goal>
+   <goal name="VC div2by1_inv.28.16" expl="VC for div2by1_inv" proved="true">
+   <proof prover="4"><result status="valid" time="0.01"/></proof>
+   </goal>
+   <goal name="VC div2by1_inv.28.17" expl="VC for div2by1_inv" proved="true">
+   <proof prover="0"><result status="valid" time="0.06"/></proof>
+   </goal>
+   <goal name="VC div2by1_inv.28.18" expl="VC for div2by1_inv" proved="true">
+   <proof prover="4"><result status="valid" time="0.01"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div2by1_inv.29" expl="assertion" proved="true">
+  <proof prover="2"><result status="valid" time="0.09"/></proof>
+  </goal>
+  <goal name="VC div2by1_inv.30" expl="assertion" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC div2by1_inv.30.0" expl="assertion" proved="true">
+   <proof prover="4"><result status="valid" time="0.03"/></proof>
+   </goal>
+   <goal name="VC div2by1_inv.30.1" expl="VC for div2by1_inv" proved="true">
+   <proof prover="2" timelimit="1"><result status="valid" time="0.29"/></proof>
+   </goal>
+   <goal name="VC div2by1_inv.30.2" expl="VC for div2by1_inv" proved="true">
+   <proof prover="1"><result status="valid" time="0.10"/></proof>
+   </goal>
+   <goal name="VC div2by1_inv.30.3" expl="VC for div2by1_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div2by1_inv.30.4" expl="VC for div2by1_inv" proved="true">
+   <proof prover="2" timelimit="1"><result status="valid" time="0.10"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div2by1_inv.31" expl="assertion" proved="true">
+  <proof prover="2" timelimit="1"><result status="valid" time="0.10"/></proof>
+  </goal>
+  <goal name="VC div2by1_inv.32" expl="assertion" proved="true">
+  <proof prover="1" memlimit="1000"><result status="valid" time="0.23"/></proof>
+  </goal>
+  <goal name="VC div2by1_inv.33" expl="assertion" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC div2by1_inv.33.0" expl="VC for div2by1_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div2by1_inv.33.1" expl="VC for div2by1_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.05"/></proof>
+   </goal>
+   <goal name="VC div2by1_inv.33.2" expl="VC for div2by1_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div2by1_inv.33.3" expl="VC for div2by1_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.01"/></proof>
+   </goal>
+   <goal name="VC div2by1_inv.33.4" expl="VC for div2by1_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div2by1_inv.33.5" expl="VC for div2by1_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.09"/></proof>
+   </goal>
+   <goal name="VC div2by1_inv.33.6" expl="VC for div2by1_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div2by1_inv.33.7" expl="VC for div2by1_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div2by1_inv.33.8" expl="VC for div2by1_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.05"/></proof>
+   </goal>
+   <goal name="VC div2by1_inv.33.9" expl="VC for div2by1_inv" proved="true">
+   <proof prover="4"><result status="valid" time="0.01"/></proof>
+   </goal>
+   <goal name="VC div2by1_inv.33.10" expl="VC for div2by1_inv" proved="true">
+   <proof prover="2" timelimit="1"><result status="valid" time="0.42"/></proof>
+   </goal>
+   <goal name="VC div2by1_inv.33.11" expl="VC for div2by1_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.05"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div2by1_inv.34" expl="integer overflow" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC div2by1_inv.34.0" expl="integer overflow" proved="true">
+   <proof prover="2" timelimit="1"><result status="valid" time="0.11"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div2by1_inv.35" expl="integer overflow" proved="true">
+  <proof prover="4"><result status="valid" time="0.00"/></proof>
+  </goal>
+  <goal name="VC div2by1_inv.36" expl="assertion" proved="true">
+  <proof prover="4"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC div2by1_inv.37" expl="assertion" proved="true">
+  <proof prover="1"><result status="valid" time="0.13"/></proof>
+  </goal>
+  <goal name="VC div2by1_inv.38" expl="assertion" proved="true">
+  <proof prover="4"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC div2by1_inv.39" expl="assertion" proved="true">
+  <proof prover="4"><result status="valid" time="0.04"/></proof>
+  </goal>
+  <goal name="VC div2by1_inv.40" expl="postcondition" proved="true">
+  <proof prover="4"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC div2by1_inv.41" expl="postcondition" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC div2by1_inv.41.0" expl="VC for div2by1_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.01"/></proof>
+   </goal>
+   <goal name="VC div2by1_inv.41.1" expl="VC for div2by1_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.01"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div2by1_inv.42" expl="assertion" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC div2by1_inv.42.0" expl="VC for div2by1_inv" proved="true">
+   <proof prover="4"><result status="valid" time="0.03"/></proof>
+   </goal>
+   <goal name="VC div2by1_inv.42.1" expl="VC for div2by1_inv" proved="true">
+   <proof prover="4"><result status="valid" time="0.04"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div2by1_inv.43" expl="assertion" proved="true">
+  <proof prover="1" memlimit="1000"><result status="valid" time="0.21"/></proof>
+  </goal>
+  <goal name="VC div2by1_inv.44" expl="postcondition" proved="true">
+  <proof prover="4"><result status="valid" time="0.04"/></proof>
+  </goal>
+  <goal name="VC div2by1_inv.45" expl="postcondition" proved="true">
+  <proof prover="4"><result status="valid" time="0.04"/></proof>
+  </goal>
+  <goal name="VC div2by1_inv.46" expl="assertion" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC div2by1_inv.46.0" expl="assertion" proved="true">
+   <proof prover="2" timelimit="1"><result status="valid" time="0.04"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div2by1_inv.47" expl="assertion" proved="true">
+  <proof prover="0" memlimit="1000"><result status="valid" time="0.04"/></proof>
+  <proof prover="1" memlimit="1000"><result status="valid" time="0.19"/></proof>
+  <proof prover="2"><result status="valid" time="0.05"/></proof>
+  <proof prover="4"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC div2by1_inv.48" expl="assertion" proved="true">
+  <proof prover="2" timelimit="1"><result status="valid" time="0.08"/></proof>
+  </goal>
+  <goal name="VC div2by1_inv.49" expl="assertion" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC div2by1_inv.49.0" expl="assertion" proved="true">
+   <proof prover="4"><result status="valid" time="0.03"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div2by1_inv.50" expl="assertion" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC div2by1_inv.50.0" expl="VC for div2by1_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div2by1_inv.50.1" expl="VC for div2by1_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.03"/></proof>
+   </goal>
+   <goal name="VC div2by1_inv.50.2" expl="VC for div2by1_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div2by1_inv.50.3" expl="VC for div2by1_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div2by1_inv.50.4" expl="VC for div2by1_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div2by1_inv.50.5" expl="VC for div2by1_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.07"/></proof>
+   </goal>
+   <goal name="VC div2by1_inv.50.6" expl="VC for div2by1_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div2by1_inv.50.7" expl="VC for div2by1_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.01"/></proof>
+   </goal>
+   <goal name="VC div2by1_inv.50.8" expl="VC for div2by1_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.03"/></proof>
+   </goal>
+   <goal name="VC div2by1_inv.50.9" expl="VC for div2by1_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.04"/></proof>
+   </goal>
+   <goal name="VC div2by1_inv.50.10" expl="VC for div2by1_inv" proved="true">
+   <proof prover="1"><result status="valid" time="0.25"/></proof>
+   </goal>
+   <goal name="VC div2by1_inv.50.11" expl="VC for div2by1_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.04"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div2by1_inv.51" expl="integer overflow" proved="true">
+  <proof prover="2" timelimit="1"><result status="valid" time="0.10"/></proof>
+  </goal>
+  <goal name="VC div2by1_inv.52" expl="integer overflow" proved="true">
+  <proof prover="4"><result status="valid" time="0.01"/></proof>
+  </goal>
+  <goal name="VC div2by1_inv.53" expl="assertion" proved="true">
+  <proof prover="4"><result status="valid" time="0.04"/></proof>
+  </goal>
+  <goal name="VC div2by1_inv.54" expl="assertion" proved="true">
+  <proof prover="1"><result status="valid" time="0.18"/></proof>
+  </goal>
+  <goal name="VC div2by1_inv.55" expl="assertion" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC div2by1_inv.55.0" expl="VC for div2by1_inv" proved="true">
+   <proof prover="4"><result status="valid" time="0.04"/></proof>
+   </goal>
+   <goal name="VC div2by1_inv.55.1" expl="VC for div2by1_inv" proved="true">
+   <proof prover="4"><result status="valid" time="0.01"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div2by1_inv.56" expl="assertion" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC div2by1_inv.56.0" expl="assertion" proved="true">
+   <proof prover="3"><result status="valid" time="0.03"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div2by1_inv.57" expl="postcondition" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC div2by1_inv.57.0" expl="postcondition" proved="true">
+   <proof prover="4"><result status="valid" time="0.03"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div2by1_inv.58" expl="postcondition" proved="true">
+  <proof prover="4"><result status="valid" time="0.05"/></proof>
+  </goal>
+  <goal name="VC div2by1_inv.59" expl="assertion" proved="true">
+  <proof prover="0" memlimit="1000"><result status="valid" time="0.02"/></proof>
+  <proof prover="1" memlimit="1000"><result status="valid" time="0.12"/></proof>
+  <proof prover="2"><result status="valid" time="0.05"/></proof>
+  <proof prover="4"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC div2by1_inv.60" expl="assertion" proved="true">
+  <proof prover="4"><result status="valid" time="0.06"/></proof>
+  </goal>
+  <goal name="VC div2by1_inv.61" expl="postcondition" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC div2by1_inv.61.0" expl="postcondition" proved="true">
+   <proof prover="4"><result status="valid" time="0.03"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div2by1_inv.62" expl="postcondition" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC div2by1_inv.62.0" expl="VC for div2by1_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div2by1_inv.62.1" expl="VC for div2by1_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.01"/></proof>
+   </goal>
+  </transf>
+  </goal>
+ </transf>
+ </goal>
+ <goal name="VC divmod_1" expl="VC for divmod_1" proved="true">
+ <transf name="split_goal_right" proved="true" >
+  <goal name="VC divmod_1.0" expl="integer overflow" proved="true">
+  <proof prover="5" timelimit="5"><result status="valid" time="0.04" steps="22"/></proof>
+  </goal>
+  <goal name="VC divmod_1.1" expl="integer overflow" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC divmod_1.1.0" expl="integer overflow" proved="true">
+   <proof prover="5" timelimit="5"><result status="valid" time="0.08" steps="23"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC divmod_1.2" expl="integer overflow" proved="true">
+  <proof prover="2" memlimit="2000"><result status="valid" time="0.13"/></proof>
+  </goal>
+  <goal name="VC divmod_1.3" expl="integer overflow" proved="true">
+  <proof prover="5" timelimit="5"><result status="valid" time="0.06" steps="26"/></proof>
+  </goal>
+  <goal name="VC divmod_1.4" expl="precondition" proved="true">
+  <proof prover="4"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC divmod_1.5" expl="precondition" proved="true">
+  <proof prover="4"><result status="valid" time="0.04"/></proof>
+  </goal>
+  <goal name="VC divmod_1.6" expl="precondition" proved="true">
+  <proof prover="4"><result status="valid" time="0.04"/></proof>
+  </goal>
+  <goal name="VC divmod_1.7" expl="precondition" proved="true">
+  <proof prover="5" timelimit="5" memlimit="2000"><result status="valid" time="0.03" steps="23"/></proof>
+  </goal>
+  <goal name="VC divmod_1.8" expl="assertion" proved="true">
+  <proof prover="5" timelimit="5" memlimit="2000"><result status="valid" time="0.05" steps="22"/></proof>
+  </goal>
+  <goal name="VC divmod_1.9" expl="assertion" proved="true">
+  <proof prover="3"><result status="valid" time="0.05"/></proof>
+  </goal>
+  <goal name="VC divmod_1.10" expl="precondition" proved="true">
+  <proof prover="4"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC divmod_1.11" expl="loop invariant init" proved="true">
+  <proof prover="3"><result status="valid" time="0.04"/></proof>
+  </goal>
+  <goal name="VC divmod_1.12" expl="loop invariant init" proved="true">
+  <proof prover="5" timelimit="5" memlimit="2000"><result status="valid" time="0.04" steps="27"/></proof>
+  </goal>
+  <goal name="VC divmod_1.13" expl="loop invariant init" proved="true">
+  <proof prover="5"><result status="valid" time="0.04" steps="55"/></proof>
+  </goal>
+  <goal name="VC divmod_1.14" expl="loop invariant init" proved="true">
+  <proof prover="2" memlimit="2000"><result status="valid" time="0.08"/></proof>
+  </goal>
+  <goal name="VC divmod_1.15" expl="loop invariant init" proved="true">
+  <proof prover="5"><result status="valid" time="0.06" steps="53"/></proof>
+  </goal>
+  <goal name="VC divmod_1.16" expl="assertion" proved="true">
+  <proof prover="2"><result status="valid" time="0.17"/></proof>
+  </goal>
+  <goal name="VC divmod_1.17" expl="precondition" proved="true">
+  <proof prover="2" timelimit="1"><result status="valid" time="0.09"/></proof>
+  </goal>
+  <goal name="VC divmod_1.18" expl="precondition" proved="true">
+  <proof prover="4"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC divmod_1.19" expl="precondition" proved="true">
+  <proof prover="3"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC divmod_1.20" expl="precondition" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC divmod_1.20.0" expl="precondition" proved="true">
+   <proof prover="1" memlimit="1000"><result status="valid" time="0.10"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC divmod_1.21" expl="assertion" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC divmod_1.21.0" expl="VC for divmod_1" proved="true">
+   <proof prover="3"><result status="valid" time="0.03"/></proof>
+   </goal>
+   <goal name="VC divmod_1.21.1" expl="VC for divmod_1" proved="true">
+   <proof prover="2" timelimit="1"><result status="valid" time="0.10"/></proof>
+   </goal>
+   <goal name="VC divmod_1.21.2" expl="VC for divmod_1" proved="true">
+   <proof prover="3"><result status="valid" time="0.05"/></proof>
+   </goal>
+   <goal name="VC divmod_1.21.3" expl="VC for divmod_1" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC divmod_1.21.4" expl="VC for divmod_1" proved="true">
+   <proof prover="3"><result status="valid" time="0.03"/></proof>
+   </goal>
+   <goal name="VC divmod_1.21.5" expl="VC for divmod_1" proved="true">
+   <proof prover="3"><result status="valid" time="0.60"/></proof>
+   </goal>
+   <goal name="VC divmod_1.21.6" expl="VC for divmod_1" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC divmod_1.21.7" expl="VC for divmod_1" proved="true">
+   <proof prover="3"><result status="valid" time="0.01"/></proof>
+   </goal>
+   <goal name="VC divmod_1.21.8" expl="VC for divmod_1" proved="true">
+   <proof prover="2" timelimit="1"><result status="valid" time="0.09"/></proof>
+   </goal>
+   <goal name="VC divmod_1.21.9" expl="VC for divmod_1" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC divmod_1.21.10" expl="VC for divmod_1" proved="true">
+   <proof prover="3"><result status="valid" time="0.05"/></proof>
+   </goal>
+   <goal name="VC divmod_1.21.11" expl="VC for divmod_1" proved="true">
+   <transf name="introduce_premises" proved="true" >
+    <goal name="VC divmod_1.21.11.0" expl="VC for divmod_1" proved="true">
+    <proof prover="1"><result status="valid" time="0.26"/></proof>
+    </goal>
+   </transf>
+   </goal>
+   <goal name="VC divmod_1.21.12" expl="VC for divmod_1" proved="true">
+   <proof prover="3"><result status="valid" time="0.03"/></proof>
+   </goal>
+   <goal name="VC divmod_1.21.13" expl="VC for divmod_1" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC divmod_1.21.14" expl="VC for divmod_1" proved="true">
+   <proof prover="3"><result status="valid" time="0.01"/></proof>
+   </goal>
+   <goal name="VC divmod_1.21.15" expl="VC for divmod_1" proved="true">
+   <proof prover="3"><result status="valid" time="0.04"/></proof>
+   </goal>
+   <goal name="VC divmod_1.21.16" expl="VC for divmod_1" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC divmod_1.21.17" expl="VC for divmod_1" proved="true">
+   <proof prover="3"><result status="valid" time="0.04"/></proof>
+   </goal>
+   <goal name="VC divmod_1.21.18" expl="VC for divmod_1" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC divmod_1.21.19" expl="VC for divmod_1" proved="true">
+   <proof prover="3"><result status="valid" time="0.01"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC divmod_1.22" expl="assertion" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC divmod_1.22.0" expl="VC for divmod_1" proved="true">
+   <proof prover="3"><result status="valid" time="0.01"/></proof>
+   </goal>
+   <goal name="VC divmod_1.22.1" expl="VC for divmod_1" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC divmod_1.22.2" expl="VC for divmod_1" proved="true">
+   <proof prover="3"><result status="valid" time="0.04"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC divmod_1.23" expl="integer overflow" proved="true">
+  <proof prover="2"><result status="valid" time="0.08"/></proof>
+  </goal>
+  <goal name="VC divmod_1.24" expl="precondition" proved="true">
+  <proof prover="4"><result status="valid" time="0.05"/></proof>
+  </goal>
+  <goal name="VC divmod_1.25" expl="precondition" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC divmod_1.25.0" expl="precondition" proved="true">
+   <proof prover="0" memlimit="1000"><result status="valid" time="0.02"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC divmod_1.26" expl="precondition" proved="true">
+  <proof prover="3"><result status="valid" time="0.04"/></proof>
+  </goal>
+  <goal name="VC divmod_1.27" expl="precondition" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC divmod_1.27.0" expl="precondition" proved="true">
+   <proof prover="4"><result status="valid" time="0.02"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC divmod_1.28" expl="precondition" proved="true">
+  <proof prover="4"><result status="valid" time="0.06"/></proof>
+  </goal>
+  <goal name="VC divmod_1.29" expl="assertion" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC divmod_1.29.0" expl="VC for divmod_1" proved="true">
+   <proof prover="2" timelimit="1"><result status="valid" time="0.09"/></proof>
+   </goal>
+   <goal name="VC divmod_1.29.1" expl="VC for divmod_1" proved="true">
+   <proof prover="0"><result status="valid" time="0.03"/></proof>
+   </goal>
+   <goal name="VC divmod_1.29.2" expl="VC for divmod_1" proved="true">
+   <proof prover="0"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC divmod_1.29.3" expl="VC for divmod_1" proved="true">
+   <proof prover="3"><result status="valid" time="0.03"/></proof>
+   </goal>
+   <goal name="VC divmod_1.29.4" expl="VC for divmod_1" proved="true">
+   <proof prover="3"><result status="valid" time="0.01"/></proof>
+   </goal>
+   <goal name="VC divmod_1.29.5" expl="VC for divmod_1" proved="true">
+   <proof prover="0"><result status="valid" time="0.13"/></proof>
+   </goal>
+   <goal name="VC divmod_1.29.6" expl="VC for divmod_1" proved="true">
+   <proof prover="3"><result status="valid" time="0.05"/></proof>
+   </goal>
+   <goal name="VC divmod_1.29.7" expl="VC for divmod_1" proved="true">
+   <proof prover="3"><result status="valid" time="0.04"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC divmod_1.30" expl="precondition" proved="true">
+  <proof prover="4"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC divmod_1.31" expl="assertion" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC divmod_1.31.0" expl="VC for divmod_1" proved="true">
+   <proof prover="3"><result status="valid" time="0.01"/></proof>
+   </goal>
+   <goal name="VC divmod_1.31.1" expl="VC for divmod_1" proved="true">
+   <proof prover="2" timelimit="1"><result status="valid" time="0.15"/></proof>
+   </goal>
+   <goal name="VC divmod_1.31.2" expl="VC for divmod_1" proved="true">
+   <proof prover="3"><result status="valid" time="0.03"/></proof>
+   </goal>
+   <goal name="VC divmod_1.31.3" expl="VC for divmod_1" proved="true">
+   <proof prover="3"><result status="valid" time="0.04"/></proof>
+   </goal>
+   <goal name="VC divmod_1.31.4" expl="VC for divmod_1" proved="true">
+   <proof prover="3"><result status="valid" time="0.05"/></proof>
+   </goal>
+   <goal name="VC divmod_1.31.5" expl="VC for divmod_1" proved="true">
+   <proof prover="3"><result status="valid" time="0.05"/></proof>
+   </goal>
+   <goal name="VC divmod_1.31.6" expl="VC for divmod_1" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC divmod_1.31.7" expl="VC for divmod_1" proved="true">
+   <proof prover="1"><result status="valid" time="0.08"/></proof>
+   </goal>
+   <goal name="VC divmod_1.31.8" expl="VC for divmod_1" proved="true">
+   <proof prover="3"><result status="valid" time="0.01"/></proof>
+   </goal>
+   <goal name="VC divmod_1.31.9" expl="VC for divmod_1" proved="true">
+   <proof prover="3"><result status="valid" time="0.04"/></proof>
+   </goal>
+   <goal name="VC divmod_1.31.10" expl="VC for divmod_1" proved="true">
+   <proof prover="1"><result status="valid" time="0.08"/></proof>
+   </goal>
+   <goal name="VC divmod_1.31.11" expl="VC for divmod_1" proved="true">
+   <proof prover="3"><result status="valid" time="0.05"/></proof>
+   </goal>
+   <goal name="VC divmod_1.31.12" expl="VC for divmod_1" proved="true">
+   <proof prover="3"><result status="valid" time="0.05"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC divmod_1.32" expl="assertion" proved="true">
+  <proof prover="2" timelimit="1"><result status="valid" time="0.08"/></proof>
+  </goal>
+  <goal name="VC divmod_1.33" expl="precondition" proved="true">
+  <proof prover="4"><result status="valid" time="0.01"/></proof>
+  </goal>
+  <goal name="VC divmod_1.34" expl="precondition" proved="true">
+  <proof prover="4"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC divmod_1.35" expl="precondition" proved="true">
+  <proof prover="2" memlimit="2000"><result status="valid" time="0.19"/></proof>
+  </goal>
+  <goal name="VC divmod_1.36" expl="assertion" proved="true">
+  <proof prover="0"><result status="valid" time="0.05"/></proof>
+  </goal>
+  <goal name="VC divmod_1.37" expl="precondition" proved="true">
+  <proof prover="4"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC divmod_1.38" expl="precondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.11"/></proof>
+  </goal>
+  <goal name="VC divmod_1.39" expl="assertion" proved="true">
+  <proof prover="0" timelimit="10"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC divmod_1.40" expl="assertion" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC divmod_1.40.0" expl="VC for divmod_1" proved="true">
+   <proof prover="0" timelimit="10"><result status="valid" time="0.04"/></proof>
+   </goal>
+   <goal name="VC divmod_1.40.1" expl="VC for divmod_1" proved="true">
+   <proof prover="2" timelimit="1"><result status="valid" time="0.14"/></proof>
+   </goal>
+   <goal name="VC divmod_1.40.2" expl="VC for divmod_1" proved="true">
+   <proof prover="1" timelimit="10"><result status="valid" time="0.11"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC divmod_1.41" expl="assertion" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC divmod_1.41.0" expl="VC for divmod_1" proved="true">
+   <proof prover="0" timelimit="10"><result status="valid" time="0.04"/></proof>
+   </goal>
+   <goal name="VC divmod_1.41.1" expl="VC for divmod_1" proved="true">
+   <proof prover="0" timelimit="10"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC divmod_1.41.2" expl="VC for divmod_1" proved="true">
+   <proof prover="0" timelimit="10"><result status="valid" time="4.44"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC divmod_1.42" expl="assertion" proved="true">
+  <proof prover="2" timelimit="1"><result status="valid" time="0.08"/></proof>
+  </goal>
+  <goal name="VC divmod_1.43" expl="integer overflow" proved="true">
+  <proof prover="2" memlimit="2000"><result status="valid" time="0.20"/></proof>
+  </goal>
+  <goal name="VC divmod_1.44" expl="loop variant decrease" proved="true">
+  <proof prover="4"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC divmod_1.45" expl="loop invariant preservation" proved="true">
+  <proof prover="2" timelimit="1"><result status="valid" time="0.10"/></proof>
+  </goal>
+  <goal name="VC divmod_1.46" expl="loop invariant preservation" proved="true">
+  <proof prover="4"><result status="valid" time="0.08"/></proof>
+  </goal>
+  <goal name="VC divmod_1.47" expl="loop invariant preservation" proved="true">
+  <proof prover="0" timelimit="10"><result status="valid" time="4.18"/></proof>
+  </goal>
+  <goal name="VC divmod_1.48" expl="loop invariant preservation" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC divmod_1.48.0" expl="loop invariant preservation" proved="true">
+   <proof prover="4"><result status="valid" time="0.03"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC divmod_1.49" expl="loop invariant preservation" proved="true">
+  <proof prover="4"><result status="valid" time="0.05"/></proof>
+  </goal>
+  <goal name="VC divmod_1.50" expl="precondition" proved="true">
+  <proof prover="4"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC divmod_1.51" expl="precondition" proved="true">
+  <proof prover="1" memlimit="1000"><result status="valid" time="0.08"/></proof>
+  <proof prover="4" memlimit="2000"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC divmod_1.52" expl="precondition" proved="true">
+  <proof prover="1"><result status="valid" time="0.08"/></proof>
+  </goal>
+  <goal name="VC divmod_1.53" expl="assertion" proved="true">
+  <proof prover="1"><result status="valid" time="0.27"/></proof>
+  </goal>
+  <goal name="VC divmod_1.54" expl="precondition" proved="true">
+  <proof prover="3"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC divmod_1.55" expl="precondition" proved="true">
+  <proof prover="4"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC divmod_1.56" expl="precondition" proved="true">
+  <proof prover="4"><result status="valid" time="0.04"/></proof>
+  </goal>
+  <goal name="VC divmod_1.57" expl="postcondition" proved="true">
+  <transf name="introduce_premises" proved="true" >
+   <goal name="VC divmod_1.57.0" expl="postcondition" proved="true">
+   <transf name="replace" proved="true" arg1="result" arg2="res">
+    <goal name="VC divmod_1.57.0.0" expl="postcondition" proved="true">
+    <proof prover="3"><result status="valid" time="0.02"/></proof>
+    </goal>
+    <goal name="VC divmod_1.57.0.1" proved="true">
+    <proof prover="1"><result status="valid" time="0.14"/></proof>
+    </goal>
+   </transf>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC divmod_1.58" expl="postcondition" proved="true">
+  <proof prover="1"><result status="valid" time="0.08"/></proof>
+  </goal>
+  <goal name="VC divmod_1.59" expl="precondition" proved="true">
+  <proof prover="5" timelimit="5" memlimit="2000"><result status="valid" time="0.06" steps="46"/></proof>
+  </goal>
+  <goal name="VC divmod_1.60" expl="loop invariant init" proved="true">
+  <proof prover="5"><result status="valid" time="0.05" steps="21"/></proof>
+  </goal>
+  <goal name="VC divmod_1.61" expl="loop invariant init" proved="true">
+  <proof prover="2" memlimit="2000"><result status="valid" time="0.10"/></proof>
+  </goal>
+  <goal name="VC divmod_1.62" expl="loop invariant init" proved="true">
+  <proof prover="5"><result status="valid" time="0.03" steps="51"/></proof>
+  </goal>
+  <goal name="VC divmod_1.63" expl="assertion" proved="true">
+  <proof prover="2" timelimit="1"><result status="valid" time="0.10"/></proof>
+  </goal>
+  <goal name="VC divmod_1.64" expl="precondition" proved="true">
+  <proof prover="2" timelimit="1"><result status="valid" time="0.14"/></proof>
+  </goal>
+  <goal name="VC divmod_1.65" expl="precondition" proved="true">
+  <proof prover="5"><result status="valid" time="0.03" steps="61"/></proof>
+  </goal>
+  <goal name="VC divmod_1.66" expl="precondition" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC divmod_1.66.0" expl="precondition" proved="true">
+   <proof prover="0"><result status="valid" time="0.04"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC divmod_1.67" expl="precondition" proved="true">
+  <proof prover="4"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC divmod_1.68" expl="precondition" proved="true">
+  <proof prover="4"><result status="valid" time="0.04"/></proof>
+  </goal>
+  <goal name="VC divmod_1.69" expl="precondition" proved="true">
+  <proof prover="3"><result status="valid" time="0.04"/></proof>
+  </goal>
+  <goal name="VC divmod_1.70" expl="precondition" proved="true">
+  <proof prover="2" timelimit="1"><result status="valid" time="0.09"/></proof>
+  </goal>
+  <goal name="VC divmod_1.71" expl="integer overflow" proved="true">
+  <proof prover="1" memlimit="1000"><result status="valid" time="0.20"/></proof>
+  </goal>
+  <goal name="VC divmod_1.72" expl="precondition" proved="true">
+  <proof prover="2" timelimit="1"><result status="valid" time="0.11"/></proof>
+  </goal>
+  <goal name="VC divmod_1.73" expl="precondition" proved="true">
+  <proof prover="4"><result status="valid" time="0.07"/></proof>
+  </goal>
+  <goal name="VC divmod_1.74" expl="assertion" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC divmod_1.74.0" expl="VC for divmod_1" proved="true">
+   <proof prover="0"><result status="valid" time="0.04"/></proof>
+   </goal>
+   <goal name="VC divmod_1.74.1" expl="VC for divmod_1" proved="true">
+   <proof prover="0"><result status="valid" time="0.03"/></proof>
+   </goal>
+   <goal name="VC divmod_1.74.2" expl="VC for divmod_1" proved="true">
+   <proof prover="0"><result status="valid" time="2.92"/></proof>
+   </goal>
+   <goal name="VC divmod_1.74.3" expl="VC for divmod_1" proved="true">
+   <proof prover="2" timelimit="1"><result status="valid" time="0.07"/></proof>
+   </goal>
+   <goal name="VC divmod_1.74.4" expl="VC for divmod_1" proved="true">
+   <proof prover="0"><result status="valid" time="0.06"/></proof>
+   </goal>
+   <goal name="VC divmod_1.74.5" expl="VC for divmod_1" proved="true">
+   <proof prover="0"><result status="valid" time="0.06"/></proof>
+   </goal>
+   <goal name="VC divmod_1.74.6" expl="VC for divmod_1" proved="true">
+   <proof prover="2" timelimit="1"><result status="valid" time="0.06"/></proof>
+   </goal>
+   <goal name="VC divmod_1.74.7" expl="VC for divmod_1" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC divmod_1.74.8" expl="VC for divmod_1" proved="true">
+   <proof prover="0"><result status="valid" time="3.09"/></proof>
+   </goal>
+   <goal name="VC divmod_1.74.9" expl="VC for divmod_1" proved="true">
+   <proof prover="0"><result status="valid" time="0.02"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC divmod_1.75" expl="loop variant decrease" proved="true">
+  <proof prover="1" memlimit="1000"><result status="valid" time="0.07"/></proof>
+  </goal>
+  <goal name="VC divmod_1.76" expl="loop invariant preservation" proved="true">
+  <proof prover="2" memlimit="2000"><result status="valid" time="0.08"/></proof>
+  </goal>
+  <goal name="VC divmod_1.77" expl="loop invariant preservation" proved="true">
+  <proof prover="2" memlimit="2000"><result status="valid" time="0.15"/></proof>
+  </goal>
+  <goal name="VC divmod_1.78" expl="loop invariant preservation" proved="true">
+  <proof prover="3"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC divmod_1.79" expl="postcondition" proved="true">
+  <proof prover="1"><result status="valid" time="0.07"/></proof>
+  </goal>
+  <goal name="VC divmod_1.80" expl="postcondition" proved="true">
+  <proof prover="2" memlimit="2000"><result status="valid" time="0.07"/></proof>
+  </goal>
+ </transf>
+ </goal>
+ <goal name="VC div3by2_inv" expl="VC for div3by2_inv" proved="true">
+ <transf name="split_goal_right" proved="true" >
+  <goal name="VC div3by2_inv.0" expl="integer overflow" proved="true">
+  <proof prover="5" timelimit="5"><result status="valid" time="0.03" steps="12"/></proof>
+  </goal>
+  <goal name="VC div3by2_inv.1" expl="integer overflow" proved="true">
+  <proof prover="5" timelimit="5"><result status="valid" time="0.04" steps="13"/></proof>
+  </goal>
+  <goal name="VC div3by2_inv.2" expl="precondition" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC div3by2_inv.2.0" expl="VC for div3by2_inv" proved="true">
+   <proof prover="2" timelimit="1"><result status="valid" time="0.06"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.2.1" expl="VC for div3by2_inv" proved="true">
+   <proof prover="2"><result status="valid" time="0.05"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div3by2_inv.3" expl="precondition" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC div3by2_inv.3.0" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.01"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.3.1" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.11"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div3by2_inv.4" expl="assertion" proved="true">
+  <proof prover="1" memlimit="1000"><result status="valid" time="0.09"/></proof>
+  <proof prover="2"><result status="valid" time="0.07"/></proof>
+  </goal>
+  <goal name="VC div3by2_inv.5" expl="assertion" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC div3by2_inv.5.0" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.03"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.5.1" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.03"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.5.2" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.5.3" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.5.4" expl="VC for div3by2_inv" proved="true">
+   <transf name="introduce_premises" proved="true" >
+    <goal name="VC div3by2_inv.5.4.0" expl="VC for div3by2_inv" proved="true">
+    <transf name="cut" proved="true" arg1="(v * (radix2 * uh) &lt;= v * d)">
+     <goal name="VC div3by2_inv.5.4.0.0" expl="VC for div3by2_inv" proved="true">
+     <proof prover="3"><result status="valid" time="0.01"/></proof>
+     </goal>
+     <goal name="VC div3by2_inv.5.4.0.1" proved="true">
+     <transf name="apply" proved="true" arg1="prod_compat_r">
+      <goal name="VC div3by2_inv.5.4.0.1.0" proved="true">
+      <proof prover="3"><result status="valid" time="0.05"/></proof>
+      </goal>
+      <goal name="VC div3by2_inv.5.4.0.1.1" proved="true">
+      <proof prover="3"><result status="valid" time="0.03"/></proof>
+      </goal>
+     </transf>
+     </goal>
+    </transf>
+    </goal>
+   </transf>
+   </goal>
+   <goal name="VC div3by2_inv.5.5" expl="VC for div3by2_inv" proved="true">
+   <proof prover="5"><result status="valid" time="0.02" steps="23"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.5.6" expl="VC for div3by2_inv" proved="true">
+   <proof prover="2" timelimit="1"><result status="valid" time="0.12"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.5.7" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.01"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.5.8" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.5.9" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.5.10" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.5.11" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div3by2_inv.6" expl="assertion" proved="true">
+  <proof prover="0" memlimit="1000"><result status="valid" time="0.02"/></proof>
+  <proof prover="1" memlimit="1000"><result status="valid" time="0.12"/></proof>
+  <proof prover="2"><result status="valid" time="0.26"/></proof>
+  </goal>
+  <goal name="VC div3by2_inv.7" expl="precondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC div3by2_inv.8" expl="precondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.06"/></proof>
+  </goal>
+  <goal name="VC div3by2_inv.9" expl="precondition" proved="true">
+  <proof prover="1" memlimit="1000"><result status="valid" time="0.09"/></proof>
+  <proof prover="2"><result status="valid" time="0.07"/></proof>
+  </goal>
+  <goal name="VC div3by2_inv.10" expl="assertion" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC div3by2_inv.10.0" expl="assertion" proved="true">
+   <proof prover="1" memlimit="1000"><result status="valid" time="0.09"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div3by2_inv.11" expl="precondition" proved="true">
+  <proof prover="0" memlimit="1000"><result status="valid" time="0.02"/></proof>
+  <proof prover="1" memlimit="1000"><result status="valid" time="0.09"/></proof>
+  <proof prover="2"><result status="valid" time="0.09"/></proof>
+  <proof prover="4"><result status="valid" time="0.05"/></proof>
+  </goal>
+  <goal name="VC div3by2_inv.12" expl="precondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC div3by2_inv.13" expl="assertion" proved="true">
+  <proof prover="2"><result status="valid" time="0.10"/></proof>
+  </goal>
+  <goal name="VC div3by2_inv.14" expl="precondition" proved="true">
+  <proof prover="1" memlimit="1000"><result status="valid" time="0.09"/></proof>
+  <proof prover="2"><result status="valid" time="0.06"/></proof>
+  <proof prover="4"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC div3by2_inv.15" expl="assertion" proved="true">
+  <proof prover="2"><result status="valid" time="2.78"/></proof>
+  </goal>
+  <goal name="VC div3by2_inv.16" expl="assertion" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC div3by2_inv.16.0" expl="VC for div3by2_inv" proved="true">
+   <proof prover="2" timelimit="1"><result status="valid" time="0.15"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.16.1" expl="VC for div3by2_inv" proved="true">
+   <proof prover="2" timelimit="1"><result status="valid" time="0.08"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.16.2" expl="VC for div3by2_inv" proved="true">
+   <proof prover="1"><result status="valid" time="0.08"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.16.3" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.01"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.16.4" expl="VC for div3by2_inv" proved="true">
+   <proof prover="2" timelimit="1"><result status="valid" time="0.13"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.16.5" expl="VC for div3by2_inv" proved="true">
+   <proof prover="2" timelimit="1"><result status="valid" time="0.18"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.16.6" expl="VC for div3by2_inv" proved="true">
+   <proof prover="2" timelimit="1"><result status="valid" time="0.07"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.16.7" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.01"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.16.8" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.01"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.16.9" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.16.10" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.16.11" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.16.12" expl="VC for div3by2_inv" proved="true">
+   <proof prover="2" timelimit="1"><result status="valid" time="0.04"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.16.13" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.01"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.16.14" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.16.15" expl="VC for div3by2_inv" proved="true">
+   <proof prover="0"><result status="valid" time="0.05"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.16.16" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.01"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.16.17" expl="VC for div3by2_inv" proved="true">
+   <proof prover="2" timelimit="1"><result status="valid" time="0.07"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div3by2_inv.17" expl="assertion" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC div3by2_inv.17.0" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.04"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.17.1" expl="VC for div3by2_inv" proved="true">
+   <proof prover="1"><result status="valid" time="0.09"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.17.2" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.08"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.17.3" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.17.4" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.01"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.17.5" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.09"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.17.6" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.17.7" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.17.8" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.10"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.17.9" expl="VC for div3by2_inv" proved="true">
+   <proof prover="2" timelimit="1"><result status="valid" time="0.58"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.17.10" expl="VC for div3by2_inv" proved="true">
+   <proof prover="2" timelimit="1"><result status="valid" time="0.09"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.17.11" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.03"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.17.12" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.08"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.17.13" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.03"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.17.14" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.01"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.17.15" expl="VC for div3by2_inv" proved="true">
+   <proof prover="1"><result status="valid" time="0.09"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.17.16" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.17.17" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.17.18" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.01"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.17.19" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.17.20" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.17.21" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.17.22" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.05"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.17.23" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.12"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.17.24" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.10"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.17.25" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.12"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.17.26" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.11"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.17.27" expl="VC for div3by2_inv" proved="true">
+   <proof prover="1"><result status="valid" time="0.14"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.17.28" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.04"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.17.29" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.13"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.17.30" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.04"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.17.31" expl="VC for div3by2_inv" proved="true">
+   <proof prover="1"><result status="valid" time="0.20"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.17.32" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.05"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.17.33" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.17.34" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.17.35" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.17.36" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.15"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.17.37" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.14"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.17.38" expl="VC for div3by2_inv" proved="true">
+   <proof prover="0"><result status="valid" time="4.33"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.17.39" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.05"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.17.40" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.17.41" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.06"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.17.42" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.03"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.17.43" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.17.44" expl="VC for div3by2_inv" proved="true">
+   <proof prover="2" timelimit="1"><result status="valid" time="0.26"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.17.45" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.08"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.17.46" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.10"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.17.47" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.12"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.17.48" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.04"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.17.49" expl="VC for div3by2_inv" proved="true">
+   <transf name="introduce_premises" proved="true" >
+    <goal name="VC div3by2_inv.17.49.0" expl="VC for div3by2_inv" proved="true">
+    <transf name="apply" proved="true" arg1="prod_compat_strict_r">
+     <goal name="VC div3by2_inv.17.49.0.0" proved="true">
+     <proof prover="3"><result status="valid" time="0.02"/></proof>
+     </goal>
+     <goal name="VC div3by2_inv.17.49.0.1" proved="true">
+     <proof prover="3"><result status="valid" time="0.03"/></proof>
+     </goal>
+    </transf>
+    </goal>
+   </transf>
+   </goal>
+   <goal name="VC div3by2_inv.17.50" expl="VC for div3by2_inv" proved="true">
+   <transf name="introduce_premises" proved="true" >
+    <goal name="VC div3by2_inv.17.50.0" expl="VC for div3by2_inv" proved="true">
+    <transf name="apply" proved="true" arg1="prod_compat_r">
+     <goal name="VC div3by2_inv.17.50.0.0" proved="true">
+     <proof prover="3"><result status="valid" time="0.04"/></proof>
+     </goal>
+     <goal name="VC div3by2_inv.17.50.0.1" proved="true">
+     <proof prover="3"><result status="valid" time="0.04"/></proof>
+     </goal>
+    </transf>
+    </goal>
+   </transf>
+   </goal>
+   <goal name="VC div3by2_inv.17.51" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.03"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.17.52" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.03"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.17.53" expl="VC for div3by2_inv" proved="true">
+   <transf name="introduce_premises" proved="true" >
+    <goal name="VC div3by2_inv.17.53.0" expl="VC for div3by2_inv" proved="true">
+    <transf name="apply" proved="true" arg1="prod_compat_strict_r">
+     <goal name="VC div3by2_inv.17.53.0.0" proved="true">
+     <proof prover="3"><result status="valid" time="0.02"/></proof>
+     </goal>
+     <goal name="VC div3by2_inv.17.53.0.1" proved="true">
+     <proof prover="3"><result status="valid" time="0.06"/></proof>
+     </goal>
+    </transf>
+    </goal>
+   </transf>
+   </goal>
+   <goal name="VC div3by2_inv.17.54" expl="VC for div3by2_inv" proved="true">
+   <proof prover="0"><result status="valid" time="1.79"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.17.55" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.01"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.17.56" expl="VC for div3by2_inv" proved="true">
+   <proof prover="2" timelimit="1"><result status="valid" time="0.16"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.17.57" expl="VC for div3by2_inv" proved="true">
+   <proof prover="0"><result status="valid" time="1.07"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.17.58" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.05"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.17.59" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.05"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.17.60" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.04"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.17.61" expl="VC for div3by2_inv" proved="true">
+   <proof prover="0"><result status="valid" time="1.18"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.17.62" expl="VC for div3by2_inv" proved="true">
+   <proof prover="0"><result status="valid" time="1.31"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.17.63" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.03"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.17.64" expl="VC for div3by2_inv" proved="true">
+   <proof prover="0"><result status="valid" time="1.95"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.17.65" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.01"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.17.66" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.17.67" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.17.68" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.14"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.17.69" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.06"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.17.70" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.17.71" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.17.72" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.17.73" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.17.74" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.06"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.17.75" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.16"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.17.76" expl="VC for div3by2_inv" proved="true">
+   <proof prover="1"><result status="valid" time="0.30"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.17.77" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.17.78" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.17.79" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.17.80" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.17.81" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.17.82" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.17.83" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.17.84" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.17.85" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.03"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.17.86" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.17.87" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.17.88" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.03"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.17.89" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.06"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.17.90" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.06"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.17.91" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.06"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.17.92" expl="VC for div3by2_inv" proved="true">
+   <proof prover="0"><result status="valid" time="1.06"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.17.93" expl="VC for div3by2_inv" proved="true">
+   <proof prover="2" timelimit="1"><result status="valid" time="0.10"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.17.94" expl="VC for div3by2_inv" proved="true">
+   <transf name="introduce_premises" proved="true" >
+    <goal name="VC div3by2_inv.17.94.0" expl="VC for div3by2_inv" proved="true">
+    <transf name="cut" proved="true" arg1="(k*dh &lt;= d*dh)">
+     <goal name="VC div3by2_inv.17.94.0.0" expl="VC for div3by2_inv" proved="true">
+     <proof prover="3"><result status="valid" time="0.02"/></proof>
+     </goal>
+     <goal name="VC div3by2_inv.17.94.0.1" proved="true">
+     <proof prover="0"><result status="valid" time="1.33"/></proof>
+     </goal>
+    </transf>
+    </goal>
+   </transf>
+   </goal>
+   <goal name="VC div3by2_inv.17.95" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.01"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.17.96" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.10"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.17.97" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.06"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.17.98" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.03"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.17.99" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.03"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.17.100" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.17.101" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.17.102" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.17.103" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.17.104" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.01"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.17.105" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.01"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.17.106" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.17.107" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.17.108" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.01"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.17.109" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.17.110" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.17.111" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.17.112" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.17.113" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.01"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.17.114" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.17.115" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.17.116" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.06"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.17.117" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.03"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.17.118" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.17.119" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.01"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.17.120" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.01"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.17.121" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.17.122" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.17.123" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.03"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.17.124" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.14"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.17.125" expl="VC for div3by2_inv" proved="true">
+   <proof prover="1"><result status="valid" time="0.44"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.17.126" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.17.127" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.17.128" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.06"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.17.129" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.17"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.17.130" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.01"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.17.131" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.06"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.17.132" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.17.133" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.15"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.17.134" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.01"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.17.135" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.03"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.17.136" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.17.137" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.01"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.17.138" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.01"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.17.139" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.17.140" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.06"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.17.141" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.17.142" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.17.143" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.06"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.17.144" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.06"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.17.145" expl="VC for div3by2_inv" proved="true">
+   <proof prover="1"><result status="valid" time="0.40"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.17.146" expl="VC for div3by2_inv" proved="true">
+   <proof prover="0"><result status="valid" time="0.06"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.17.147" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.04"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.17.148" expl="VC for div3by2_inv" proved="true">
+   <proof prover="1"><result status="valid" time="0.30"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.17.149" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.03"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.17.150" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.14"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.17.151" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.01"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.17.152" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.01"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.17.153" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.12"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.17.154" expl="VC for div3by2_inv" proved="true">
+   <proof prover="2" timelimit="1"><result status="valid" time="0.31"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.17.155" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.04"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.17.156" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.01"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.17.157" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.05"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.17.158" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.17.159" expl="VC for div3by2_inv" proved="true">
+   <proof prover="0"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.17.160" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.15"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.17.161" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.17.162" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.17.163" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.17.164" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.13"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.17.165" expl="VC for div3by2_inv" proved="true">
+   <proof prover="2"><result status="valid" time="0.11"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.17.166" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.17.167" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.17.168" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.03"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.17.169" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.06"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.17.170" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.06"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.17.171" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.05"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.17.172" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.06"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.17.173" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.04"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.17.174" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.04"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div3by2_inv.18" expl="assertion" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC div3by2_inv.18.0" expl="assertion" proved="true">
+   <proof prover="2"><result status="valid" time="0.51"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div3by2_inv.19" expl="assertion" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC div3by2_inv.19.0" expl="assertion" proved="true">
+   <proof prover="2"><result status="valid" time="0.34"/></proof>
+   <proof prover="4"><result status="valid" time="0.07"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.19.1" expl="VC for div3by2_inv" proved="true">
+   <proof prover="4"><result status="valid" time="0.03"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.19.2" expl="VC for div3by2_inv" proved="true">
+   <proof prover="4"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.19.3" expl="VC for div3by2_inv" proved="true">
+   <proof prover="4"><result status="valid" time="0.03"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.19.4" expl="VC for div3by2_inv" proved="true">
+   <proof prover="2"><result status="valid" time="0.24"/></proof>
+   <proof prover="4"><result status="valid" time="0.05"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.19.5" expl="VC for div3by2_inv" proved="true">
+   <proof prover="2"><result status="valid" time="0.16"/></proof>
+   <proof prover="4"><result status="valid" time="0.01"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.19.6" expl="VC for div3by2_inv" proved="true">
+   <proof prover="2"><result status="valid" time="0.08"/></proof>
+   <proof prover="4"><result status="valid" time="0.05"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.19.7" expl="VC for div3by2_inv" proved="true">
+   <proof prover="4"><result status="valid" time="0.11"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.19.8" expl="VC for div3by2_inv" proved="true">
+   <proof prover="2"><result status="valid" time="0.09"/></proof>
+   <proof prover="4"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.19.9" expl="VC for div3by2_inv" proved="true">
+   <proof prover="2"><result status="valid" time="1.45"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div3by2_inv.20" expl="assertion" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC div3by2_inv.20.0" expl="assertion" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.20.1" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.01"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.20.2" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.01"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.20.3" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.04"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.20.4" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.03"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.20.5" expl="VC for div3by2_inv" proved="true">
+   <proof prover="1" memlimit="1000"><result status="valid" time="0.20"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.20.6" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.20.7" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.20.8" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.04"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.20.9" expl="VC for div3by2_inv" proved="true">
+   <proof prover="2" timelimit="1"><result status="valid" time="0.11"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.20.10" expl="VC for div3by2_inv" proved="true">
+   <proof prover="2"><result status="valid" time="0.17"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.20.11" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.20.12" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.20.13" expl="VC for div3by2_inv" proved="true">
+   <transf name="introduce_premises" proved="true" >
+    <goal name="VC div3by2_inv.20.13.0" expl="VC for div3by2_inv" proved="true">
+    <transf name="cut" proved="true" arg1="(v * (radix2 * uh) &lt;= v * d)">
+     <goal name="VC div3by2_inv.20.13.0.0" expl="VC for div3by2_inv" proved="true">
+     <proof prover="3"><result status="valid" time="0.04"/></proof>
+     </goal>
+     <goal name="VC div3by2_inv.20.13.0.1" proved="true">
+     <transf name="apply" proved="true" arg1="prod_compat_r">
+      <goal name="VC div3by2_inv.20.13.0.1.0" proved="true">
+      <proof prover="3"><result status="valid" time="0.04"/></proof>
+      </goal>
+      <goal name="VC div3by2_inv.20.13.0.1.1" proved="true">
+      <proof prover="3"><result status="valid" time="0.04"/></proof>
+      </goal>
+     </transf>
+     </goal>
+    </transf>
+    </goal>
+   </transf>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div3by2_inv.21" expl="assertion" proved="true">
+  <proof prover="1" memlimit="1000"><result status="valid" time="0.09"/></proof>
+  <proof prover="2"><result status="valid" time="0.22"/></proof>
+  <proof prover="4"><result status="valid" time="0.04"/></proof>
+  </goal>
+  <goal name="VC div3by2_inv.22" expl="assertion" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC div3by2_inv.22.0" expl="assertion" proved="true">
+   <proof prover="2" timelimit="1"><result status="valid" time="0.67"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.22.1" expl="VC for div3by2_inv" proved="true">
+   <proof prover="0"><result status="valid" time="0.03"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div3by2_inv.23" expl="assertion" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC div3by2_inv.23.0" expl="assertion" proved="true">
+   <proof prover="3"><result status="valid" time="0.01"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.23.1" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.03"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.23.2" expl="VC for div3by2_inv" proved="true">
+   <proof prover="0"><result status="valid" time="0.03"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.23.3" expl="VC for div3by2_inv" proved="true">
+   <proof prover="2" timelimit="1"><result status="valid" time="0.11"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.23.4" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.01"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.23.5" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.09"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.23.6" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.04"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div3by2_inv.24" expl="assertion" proved="true">
+  <proof prover="2" memlimit="2000"><result status="valid" time="2.96"/></proof>
+  </goal>
+  <goal name="VC div3by2_inv.25" expl="precondition" proved="true">
+  <proof prover="3"><result status="valid" time="0.08"/></proof>
+  </goal>
+  <goal name="VC div3by2_inv.26" expl="precondition" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC div3by2_inv.26.0" expl="VC for div3by2_inv" proved="true">
+   <proof prover="2" timelimit="1"><result status="valid" time="0.14"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.26.1" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.04"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div3by2_inv.27" expl="assertion" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC div3by2_inv.27.0" expl="VC for div3by2_inv" proved="true">
+   <proof prover="2" timelimit="1"><result status="valid" time="0.14"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.27.1" expl="VC for div3by2_inv" proved="true">
+   <proof prover="0"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.27.2" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.27.3" expl="VC for div3by2_inv" proved="true">
+   <proof prover="2"><result status="valid" time="1.94"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div3by2_inv.28" expl="assertion" proved="true">
+  <proof prover="2"><result status="valid" time="0.77"/></proof>
+  </goal>
+  <goal name="VC div3by2_inv.29" expl="assertion" proved="true">
+  <proof prover="1" memlimit="1000"><result status="valid" time="0.25"/></proof>
+  </goal>
+  <goal name="VC div3by2_inv.30" expl="assertion" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC div3by2_inv.30.0" expl="assertion" proved="true">
+   <proof prover="2"><result status="valid" time="0.18"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div3by2_inv.31" expl="precondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.23"/></proof>
+  <proof prover="4"><result status="valid" time="0.11"/></proof>
+  </goal>
+  <goal name="VC div3by2_inv.32" expl="precondition" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC div3by2_inv.32.0" expl="VC for div3by2_inv" proved="true">
+   <proof prover="2"><result status="valid" time="0.22"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.32.1" expl="VC for div3by2_inv" proved="true">
+   <proof prover="2"><result status="valid" time="0.16"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div3by2_inv.33" expl="assertion" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC div3by2_inv.33.0" expl="assertion" proved="true">
+   <proof prover="2"><result status="valid" time="0.28"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.33.1" expl="assertion" proved="true">
+   <proof prover="3"><result status="valid" time="0.13"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div3by2_inv.34" expl="assertion" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC div3by2_inv.34.0" expl="assertion" proved="true">
+   <proof prover="2"><result status="valid" time="0.16"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.34.1" expl="assertion" proved="true">
+   <proof prover="2" timelimit="1"><result status="valid" time="0.17"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div3by2_inv.35" expl="assertion" proved="true">
+  <proof prover="3"><result status="valid" time="0.18"/></proof>
+  </goal>
+  <goal name="VC div3by2_inv.36" expl="assertion" proved="true">
+  <proof prover="1" memlimit="1000"><result status="valid" time="0.27"/></proof>
+  <proof prover="2"><result status="valid" time="1.20"/></proof>
+  </goal>
+  <goal name="VC div3by2_inv.37" expl="assertion" proved="true">
+  <proof prover="1" memlimit="1000"><result status="valid" time="0.25"/></proof>
+  </goal>
+  <goal name="VC div3by2_inv.38" expl="assertion" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC div3by2_inv.38.0" expl="VC for div3by2_inv" proved="true">
+   <proof prover="2"><result status="valid" time="0.33"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.38.1" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.16"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div3by2_inv.39" expl="postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.24"/></proof>
+  </goal>
+  <goal name="VC div3by2_inv.40" expl="postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.22"/></proof>
+  </goal>
+  <goal name="VC div3by2_inv.41" expl="assertion" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC div3by2_inv.41.0" expl="VC for div3by2_inv" proved="true">
+   <proof prover="4"><result status="valid" time="0.15"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.41.1" expl="VC for div3by2_inv" proved="true">
+   <proof prover="2" memlimit="2000"><result status="valid" time="0.26"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div3by2_inv.42" expl="postcondition" proved="true">
+  <proof prover="1" memlimit="1000"><result status="valid" time="0.24"/></proof>
+  <proof prover="2"><result status="valid" time="0.18"/></proof>
+  <proof prover="4"><result status="valid" time="0.04"/></proof>
+  </goal>
+  <goal name="VC div3by2_inv.43" expl="postcondition" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC div3by2_inv.43.0" expl="VC for div3by2_inv" proved="true">
+   <proof prover="4"><result status="valid" time="0.01"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.43.1" expl="VC for div3by2_inv" proved="true">
+   <proof prover="0" memlimit="1000"><result status="valid" time="0.04"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div3by2_inv.44" expl="assertion" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC div3by2_inv.44.0" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.06"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.44.1" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.03"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.44.2" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.05"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.44.3" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.04"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.44.4" expl="VC for div3by2_inv" proved="true">
+   <proof prover="0"><result status="valid" time="0.94"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.44.5" expl="VC for div3by2_inv" proved="true">
+   <proof prover="2" timelimit="1"><result status="valid" time="0.14"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div3by2_inv.45" expl="assertion" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC div3by2_inv.45.0" expl="assertion" proved="true">
+   <proof prover="2" timelimit="1"><result status="valid" time="0.14"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div3by2_inv.46" expl="precondition" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC div3by2_inv.46.0" expl="VC for div3by2_inv" proved="true">
+   <proof prover="2" timelimit="1"><result status="valid" time="0.11"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.46.1" expl="VC for div3by2_inv" proved="true">
+   <proof prover="2" memlimit="2000"><result status="valid" time="0.14"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div3by2_inv.47" expl="precondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.18"/></proof>
+  </goal>
+  <goal name="VC div3by2_inv.48" expl="assertion" proved="true">
+  <proof prover="2"><result status="valid" time="0.29"/></proof>
+  </goal>
+  <goal name="VC div3by2_inv.49" expl="assertion" proved="true">
+  <proof prover="2"><result status="valid" time="0.12"/></proof>
+  </goal>
+  <goal name="VC div3by2_inv.50" expl="assertion" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC div3by2_inv.50.0" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.04"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.50.1" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.10"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.50.2" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.04"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.50.3" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.01"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.50.4" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.01"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.50.5" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.10"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.50.6" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.01"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.50.7" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.03"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.50.8" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.50.9" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.04"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.50.10" expl="VC for div3by2_inv" proved="true">
+   <proof prover="4"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.50.11" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.06"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.50.12" expl="VC for div3by2_inv" proved="true">
+   <proof prover="1"><result status="valid" time="0.34"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div3by2_inv.51" expl="assertion" proved="true">
+  <proof prover="2"><result status="valid" time="1.04"/></proof>
+  </goal>
+  <goal name="VC div3by2_inv.52" expl="assertion" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC div3by2_inv.52.0" expl="VC for div3by2_inv" proved="true">
+   <proof prover="0"><result status="valid" time="0.48"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.52.1" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.52.2" expl="VC for div3by2_inv" proved="true">
+   <proof prover="2" timelimit="1"><result status="valid" time="0.12"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div3by2_inv.53" expl="assertion" proved="true">
+  <proof prover="2"><result status="valid" time="4.04"/></proof>
+  </goal>
+  <goal name="VC div3by2_inv.54" expl="postcondition" proved="true">
+  <proof prover="1" memlimit="1000"><result status="valid" time="0.13"/></proof>
+  <proof prover="2"><result status="valid" time="0.19"/></proof>
+  <proof prover="4"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC div3by2_inv.55" expl="postcondition" proved="true">
+  <proof prover="3"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC div3by2_inv.56" expl="assertion" proved="true">
+  <proof prover="2"><result status="valid" time="0.25"/></proof>
+  </goal>
+  <goal name="VC div3by2_inv.57" expl="postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.08"/></proof>
+  </goal>
+  <goal name="VC div3by2_inv.58" expl="postcondition" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC div3by2_inv.58.0" expl="VC for div3by2_inv" proved="true">
+   <proof prover="3"><result status="valid" time="0.04"/></proof>
+   </goal>
+   <goal name="VC div3by2_inv.58.1" expl="VC for div3by2_inv" proved="true">
+   <proof prover="4"><result status="valid" time="0.02"/></proof>
+   </goal>
+  </transf>
+  </goal>
+ </transf>
+ </goal>
+ <goal name="VC bounds_imply_rec3by2" expl="VC for bounds_imply_rec3by2" proved="true">
+ <proof prover="5" timelimit="5"><result status="valid" time="0.03" steps="12"/></proof>
+ </goal>
+ <goal name="VC reciprocal_word_3by2" expl="VC for reciprocal_word_3by2" proved="true">
+ <transf name="split_goal_right" proved="true" >
+  <goal name="VC reciprocal_word_3by2.0" expl="integer overflow" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC reciprocal_word_3by2.0.0" expl="integer overflow" proved="true">
+   <proof prover="1" memlimit="1000"><result status="valid" time="0.09"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC reciprocal_word_3by2.1" expl="precondition" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC reciprocal_word_3by2.1.0" expl="precondition" proved="true">
+   <proof prover="0" memlimit="1000"><result status="valid" time="0.03"/></proof>
+   <proof prover="2"><result status="valid" time="0.05"/></proof>
+   <proof prover="5" timelimit="5"><result status="valid" time="0.04" steps="9"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC reciprocal_word_3by2.2" expl="assertion" proved="true">
+  <transf name="split_vc" proved="true" >
+   <goal name="VC reciprocal_word_3by2.2.0" expl="VC for reciprocal_word_3by2" proved="true">
+   <proof prover="3"><result status="valid" time="0.04"/></proof>
+   </goal>
+   <goal name="VC reciprocal_word_3by2.2.1" expl="VC for reciprocal_word_3by2" proved="true">
+   <proof prover="5"><result status="valid" time="0.11" steps="87"/></proof>
+   </goal>
+   <goal name="VC reciprocal_word_3by2.2.2" expl="VC for reciprocal_word_3by2" proved="true">
+   <proof prover="5"><result status="valid" time="0.03" steps="53"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC reciprocal_word_3by2.3" expl="assertion" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC reciprocal_word_3by2.3.0" expl="VC for reciprocal_word_3by2" proved="true">
+   <proof prover="4"><result status="valid" time="0.04"/></proof>
+   <proof prover="5" timelimit="5"><result status="valid" time="0.06" steps="13"/></proof>
+   </goal>
+   <goal name="VC reciprocal_word_3by2.3.1" expl="VC for reciprocal_word_3by2" proved="true">
+   <proof prover="5" timelimit="5"><result status="valid" time="0.05" steps="72"/></proof>
+   </goal>
+   <goal name="VC reciprocal_word_3by2.3.2" expl="VC for reciprocal_word_3by2" proved="true">
+   <proof prover="5" timelimit="5"><result status="valid" time="0.04" steps="13"/></proof>
+   </goal>
+   <goal name="VC reciprocal_word_3by2.3.3" expl="VC for reciprocal_word_3by2" proved="true">
+   <proof prover="5"><result status="valid" time="0.08" steps="20"/></proof>
+   </goal>
+   <goal name="VC reciprocal_word_3by2.3.4" expl="VC for reciprocal_word_3by2" proved="true">
+   <proof prover="5"><result status="valid" time="0.02" steps="16"/></proof>
+   </goal>
+   <goal name="VC reciprocal_word_3by2.3.5" expl="VC for reciprocal_word_3by2" proved="true">
+   <proof prover="5"><result status="valid" time="0.03" steps="16"/></proof>
+   </goal>
+   <goal name="VC reciprocal_word_3by2.3.6" expl="VC for reciprocal_word_3by2" proved="true">
+   <proof prover="3"><result status="valid" time="0.04"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC reciprocal_word_3by2.4" expl="assertion" proved="true">
+  <proof prover="5"><result status="valid" time="0.07" steps="17"/></proof>
+  </goal>
+  <goal name="VC reciprocal_word_3by2.5" expl="assertion" proved="true">
+  <proof prover="1" memlimit="1000"><result status="valid" time="0.26"/></proof>
+  <proof prover="2"><result status="valid" time="0.89"/></proof>
+  </goal>
+  <goal name="VC reciprocal_word_3by2.6" expl="assertion" proved="true">
+  <proof prover="1" memlimit="1000"><result status="valid" time="0.12"/></proof>
+  </goal>
+  <goal name="VC reciprocal_word_3by2.7" expl="assertion" proved="true">
+  <proof prover="0" memlimit="1000"><result status="valid" time="0.02"/></proof>
+  <proof prover="1" memlimit="1000"><result status="valid" time="0.08"/></proof>
+  <proof prover="2"><result status="valid" time="0.07"/></proof>
+  <proof prover="4"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC reciprocal_word_3by2.8" expl="integer overflow" proved="true">
+  <proof prover="1"><result status="valid" time="0.17"/></proof>
+  </goal>
+  <goal name="VC reciprocal_word_3by2.9" expl="integer overflow" proved="true">
+  <proof prover="1" memlimit="1000"><result status="valid" time="0.12"/></proof>
+  </goal>
+  <goal name="VC reciprocal_word_3by2.10" expl="assertion" proved="true">
+  <proof prover="1"><result status="valid" time="0.05"/></proof>
+  </goal>
+  <goal name="VC reciprocal_word_3by2.11" expl="integer overflow" proved="true">
+  <proof prover="1" memlimit="1000"><result status="valid" time="0.21"/></proof>
+  </goal>
+  <goal name="VC reciprocal_word_3by2.12" expl="assertion" proved="true">
+  <proof prover="2"><result status="valid" time="0.12"/></proof>
+  <proof prover="4"><result status="valid" time="0.04"/></proof>
+  </goal>
+  <goal name="VC reciprocal_word_3by2.13" expl="assertion" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC reciprocal_word_3by2.13.0" expl="assertion" proved="true">
+   <proof prover="2"><result status="valid" time="1.13"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC reciprocal_word_3by2.14" expl="assertion" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC reciprocal_word_3by2.14.0" expl="VC for reciprocal_word_3by2" proved="true">
+   <proof prover="1"><result status="valid" time="0.05"/></proof>
+   </goal>
+   <goal name="VC reciprocal_word_3by2.14.1" expl="VC for reciprocal_word_3by2" proved="true">
+   <proof prover="2"><result status="valid" time="0.11"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC reciprocal_word_3by2.15" expl="assertion" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC reciprocal_word_3by2.15.0" expl="VC for reciprocal_word_3by2" proved="true">
+   <proof prover="3"><result status="valid" time="0.04"/></proof>
+   </goal>
+   <goal name="VC reciprocal_word_3by2.15.1" expl="VC for reciprocal_word_3by2" proved="true">
+   <proof prover="5"><result status="valid" time="0.11" steps="34"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC reciprocal_word_3by2.16" expl="assertion" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC reciprocal_word_3by2.16.0" expl="assertion" proved="true">
+   <proof prover="2"><result status="valid" time="0.18"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC reciprocal_word_3by2.17" expl="assertion" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC reciprocal_word_3by2.17.0" expl="VC for reciprocal_word_3by2" proved="true">
+   <proof prover="2"><result status="valid" time="0.12"/></proof>
+   </goal>
+   <goal name="VC reciprocal_word_3by2.17.1" expl="VC for reciprocal_word_3by2" proved="true">
+   <proof prover="5"><result status="valid" time="0.32" steps="42"/></proof>
+   </goal>
+   <goal name="VC reciprocal_word_3by2.17.2" expl="VC for reciprocal_word_3by2" proved="true">
+   <proof prover="5"><result status="valid" time="0.26" steps="43"/></proof>
+   </goal>
+   <goal name="VC reciprocal_word_3by2.17.3" expl="VC for reciprocal_word_3by2" proved="true">
+   <proof prover="5"><result status="valid" time="0.35" steps="44"/></proof>
+   </goal>
+   <goal name="VC reciprocal_word_3by2.17.4" expl="VC for reciprocal_word_3by2" proved="true">
+   <proof prover="3"><result status="valid" time="0.06"/></proof>
+   </goal>
+   <goal name="VC reciprocal_word_3by2.17.5" expl="VC for reciprocal_word_3by2" proved="true">
+   <proof prover="5"><result status="valid" time="0.22" steps="46"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC reciprocal_word_3by2.18" expl="assertion" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC reciprocal_word_3by2.18.0" expl="VC for reciprocal_word_3by2" proved="true">
+   <proof prover="1" memlimit="1000"><result status="valid" time="0.09"/></proof>
+   </goal>
+   <goal name="VC reciprocal_word_3by2.18.1" expl="VC for reciprocal_word_3by2" proved="true">
+   <proof prover="3"><result status="valid" time="0.04"/></proof>
+   </goal>
+   <goal name="VC reciprocal_word_3by2.18.2" expl="VC for reciprocal_word_3by2" proved="true">
+   <proof prover="1" memlimit="1000"><result status="valid" time="0.21"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC reciprocal_word_3by2.19" expl="assertion" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC reciprocal_word_3by2.19.0" expl="assertion" proved="true">
+   <proof prover="2"><result status="valid" time="0.09"/></proof>
+   <proof prover="4"><result status="valid" time="0.01"/></proof>
+   </goal>
+   <goal name="VC reciprocal_word_3by2.19.1" expl="assertion" proved="true">
+   <proof prover="4"><result status="valid" time="0.03"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC reciprocal_word_3by2.20" expl="integer overflow" proved="true">
+  <proof prover="1"><result status="valid" time="0.45"/></proof>
+  </goal>
+  <goal name="VC reciprocal_word_3by2.21" expl="assertion" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC reciprocal_word_3by2.21.0" expl="VC for reciprocal_word_3by2" proved="true">
+   <proof prover="5"><result status="valid" time="0.68" steps="47"/></proof>
+   </goal>
+   <goal name="VC reciprocal_word_3by2.21.1" expl="VC for reciprocal_word_3by2" proved="true">
+   <proof prover="3"><result status="valid" time="0.01"/></proof>
+   </goal>
+   <goal name="VC reciprocal_word_3by2.21.2" expl="VC for reciprocal_word_3by2" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC reciprocal_word_3by2.21.3" expl="VC for reciprocal_word_3by2" proved="true">
+   <proof prover="3"><result status="valid" time="0.04"/></proof>
+   </goal>
+   <goal name="VC reciprocal_word_3by2.21.4" expl="VC for reciprocal_word_3by2" proved="true">
+   <proof prover="3"><result status="valid" time="0.04"/></proof>
+   </goal>
+   <goal name="VC reciprocal_word_3by2.21.5" expl="VC for reciprocal_word_3by2" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC reciprocal_word_3by2.21.6" expl="VC for reciprocal_word_3by2" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC reciprocal_word_3by2.21.7" expl="VC for reciprocal_word_3by2" proved="true">
+   <proof prover="3"><result status="valid" time="0.06"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC reciprocal_word_3by2.22" expl="assertion" proved="true">
+  <proof prover="4"><result status="valid" time="0.04"/></proof>
+  </goal>
+  <goal name="VC reciprocal_word_3by2.23" expl="integer overflow" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC reciprocal_word_3by2.23.0" expl="integer overflow" proved="true">
+   <proof prover="1"><result status="valid" time="0.35"/></proof>
+   </goal>
+   <goal name="VC reciprocal_word_3by2.23.1" expl="integer overflow" proved="true">
+   <proof prover="1"><result status="valid" time="0.29"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC reciprocal_word_3by2.24" expl="precondition" proved="true">
+  <proof prover="1" memlimit="1000"><result status="valid" time="0.10"/></proof>
+  </goal>
+  <goal name="VC reciprocal_word_3by2.25" expl="postcondition" proved="true">
+  <proof prover="4"><result status="valid" time="0.04"/></proof>
+  </goal>
+  <goal name="VC reciprocal_word_3by2.26" expl="assertion" proved="true">
+  <proof prover="1" memlimit="1000"><result status="valid" time="0.37"/></proof>
+  <proof prover="2"><result status="valid" time="0.18"/></proof>
+  </goal>
+  <goal name="VC reciprocal_word_3by2.27" expl="integer overflow" proved="true">
+  <proof prover="1" memlimit="1000"><result status="valid" time="0.34"/></proof>
+  </goal>
+  <goal name="VC reciprocal_word_3by2.28" expl="precondition" proved="true">
+  <proof prover="1" memlimit="1000"><result status="valid" time="0.08"/></proof>
+  </goal>
+  <goal name="VC reciprocal_word_3by2.29" expl="postcondition" proved="true">
+  <proof prover="1" memlimit="1000"><result status="valid" time="0.07"/></proof>
+  <proof prover="5" timelimit="5"><result status="valid" time="0.67" steps="49"/></proof>
+  </goal>
+  <goal name="VC reciprocal_word_3by2.30" expl="precondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.62"/></proof>
+  </goal>
+  <goal name="VC reciprocal_word_3by2.31" expl="postcondition" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC reciprocal_word_3by2.31.0" expl="postcondition" proved="true">
+   <proof prover="5" timelimit="5"><result status="valid" time="0.18" steps="41"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC reciprocal_word_3by2.32" expl="integer overflow" proved="true">
+  <proof prover="1"><result status="valid" time="0.12"/></proof>
+  </goal>
+  <goal name="VC reciprocal_word_3by2.33" expl="assertion" proved="true">
+  <proof prover="2"><result status="valid" time="0.10"/></proof>
+  <proof prover="4"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC reciprocal_word_3by2.34" expl="assertion" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC reciprocal_word_3by2.34.0" expl="assertion" proved="true">
+   <proof prover="1" memlimit="1000"><result status="valid" time="0.13"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC reciprocal_word_3by2.35" expl="assertion" proved="true">
+  <proof prover="1" memlimit="1000"><result status="valid" time="0.06"/></proof>
+  </goal>
+  <goal name="VC reciprocal_word_3by2.36" expl="assertion" proved="true">
+  <proof prover="1" memlimit="1000"><result status="valid" time="0.05"/></proof>
+  </goal>
+  <goal name="VC reciprocal_word_3by2.37" expl="assertion" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC reciprocal_word_3by2.37.0" expl="assertion" proved="true">
+   <proof prover="2"><result status="valid" time="0.17"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC reciprocal_word_3by2.38" expl="assertion" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC reciprocal_word_3by2.38.0" expl="VC for reciprocal_word_3by2" proved="true">
+   <proof prover="2"><result status="valid" time="0.07"/></proof>
+   </goal>
+   <goal name="VC reciprocal_word_3by2.38.1" expl="VC for reciprocal_word_3by2" proved="true">
+   <proof prover="5"><result status="valid" time="0.11" steps="37"/></proof>
+   </goal>
+   <goal name="VC reciprocal_word_3by2.38.2" expl="VC for reciprocal_word_3by2" proved="true">
+   <proof prover="5"><result status="valid" time="0.13" steps="38"/></proof>
+   </goal>
+   <goal name="VC reciprocal_word_3by2.38.3" expl="VC for reciprocal_word_3by2" proved="true">
+   <proof prover="5"><result status="valid" time="0.10" steps="39"/></proof>
+   </goal>
+   <goal name="VC reciprocal_word_3by2.38.4" expl="VC for reciprocal_word_3by2" proved="true">
+   <proof prover="3"><result status="valid" time="0.06"/></proof>
+   </goal>
+   <goal name="VC reciprocal_word_3by2.38.5" expl="VC for reciprocal_word_3by2" proved="true">
+   <proof prover="5"><result status="valid" time="0.10" steps="41"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC reciprocal_word_3by2.39" expl="assertion" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC reciprocal_word_3by2.39.0" expl="VC for reciprocal_word_3by2" proved="true">
+   <proof prover="3"><result status="valid" time="0.04"/></proof>
+   </goal>
+   <goal name="VC reciprocal_word_3by2.39.1" expl="VC for reciprocal_word_3by2" proved="true">
+   <proof prover="1" memlimit="1000"><result status="valid" time="0.10"/></proof>
+   </goal>
+   <goal name="VC reciprocal_word_3by2.39.2" expl="VC for reciprocal_word_3by2" proved="true">
+   <proof prover="1" memlimit="1000"><result status="valid" time="0.10"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC reciprocal_word_3by2.40" expl="assertion" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC reciprocal_word_3by2.40.0" expl="assertion" proved="true">
+   <proof prover="2"><result status="valid" time="0.08"/></proof>
+   <proof prover="4"><result status="valid" time="0.00"/></proof>
+   </goal>
+   <goal name="VC reciprocal_word_3by2.40.1" expl="assertion" proved="true">
+   <proof prover="4"><result status="valid" time="0.03"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC reciprocal_word_3by2.41" expl="integer overflow" proved="true">
+  <proof prover="0" memlimit="1000"><result status="valid" time="0.53"/></proof>
+  <proof prover="1" memlimit="1000"><result status="valid" time="0.47"/></proof>
+  <proof prover="2"><result status="valid" time="0.06"/></proof>
+  <proof prover="4"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC reciprocal_word_3by2.42" expl="assertion" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC reciprocal_word_3by2.42.0" expl="VC for reciprocal_word_3by2" proved="true">
+   <proof prover="5"><result status="valid" time="0.20" steps="42"/></proof>
+   </goal>
+   <goal name="VC reciprocal_word_3by2.42.1" expl="VC for reciprocal_word_3by2" proved="true">
+   <proof prover="3"><result status="valid" time="0.01"/></proof>
+   </goal>
+   <goal name="VC reciprocal_word_3by2.42.2" expl="VC for reciprocal_word_3by2" proved="true">
+   <proof prover="3"><result status="valid" time="0.04"/></proof>
+   </goal>
+   <goal name="VC reciprocal_word_3by2.42.3" expl="VC for reciprocal_word_3by2" proved="true">
+   <proof prover="3"><result status="valid" time="0.04"/></proof>
+   </goal>
+   <goal name="VC reciprocal_word_3by2.42.4" expl="VC for reciprocal_word_3by2" proved="true">
+   <proof prover="3"><result status="valid" time="0.04"/></proof>
+   </goal>
+   <goal name="VC reciprocal_word_3by2.42.5" expl="VC for reciprocal_word_3by2" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC reciprocal_word_3by2.42.6" expl="VC for reciprocal_word_3by2" proved="true">
+   <proof prover="2"><result status="valid" time="0.13"/></proof>
+   </goal>
+   <goal name="VC reciprocal_word_3by2.42.7" expl="VC for reciprocal_word_3by2" proved="true">
+   <proof prover="2"><result status="valid" time="0.14"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC reciprocal_word_3by2.43" expl="assertion" proved="true">
+  <proof prover="3"><result status="valid" time="0.07"/></proof>
+  </goal>
+  <goal name="VC reciprocal_word_3by2.44" expl="integer overflow" proved="true">
+  <proof prover="1"><result status="valid" time="0.28"/></proof>
+  </goal>
+  <goal name="VC reciprocal_word_3by2.45" expl="precondition" proved="true">
+  <proof prover="1" memlimit="1000"><result status="valid" time="0.07"/></proof>
+  </goal>
+  <goal name="VC reciprocal_word_3by2.46" expl="postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.07"/></proof>
+  </goal>
+  <goal name="VC reciprocal_word_3by2.47" expl="assertion" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC reciprocal_word_3by2.47.0" expl="VC for reciprocal_word_3by2" proved="true">
+   <proof prover="2"><result status="valid" time="0.08"/></proof>
+   <proof prover="4"><result status="valid" time="0.04"/></proof>
+   </goal>
+   <goal name="VC reciprocal_word_3by2.47.1" expl="VC for reciprocal_word_3by2" proved="true">
+   <proof prover="2"><result status="valid" time="0.08"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC reciprocal_word_3by2.48" expl="integer overflow" proved="true">
+  <proof prover="1" memlimit="1000"><result status="valid" time="0.40"/></proof>
+  </goal>
+  <goal name="VC reciprocal_word_3by2.49" expl="precondition" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC reciprocal_word_3by2.49.0" expl="VC for reciprocal_word_3by2" proved="true">
+   <proof prover="1"><result status="valid" time="0.09"/></proof>
+   </goal>
+   <goal name="VC reciprocal_word_3by2.49.1" expl="VC for reciprocal_word_3by2" proved="true">
+   <proof prover="1" memlimit="1000"><result status="valid" time="0.10"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC reciprocal_word_3by2.50" expl="postcondition" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC reciprocal_word_3by2.50.0" expl="postcondition" proved="true">
+   <proof prover="5" timelimit="5"><result status="valid" time="0.12" steps="40"/></proof>
+   </goal>
+   <goal name="VC reciprocal_word_3by2.50.1" expl="postcondition" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC reciprocal_word_3by2.51" expl="precondition" proved="true">
+  <proof prover="2" timelimit="1"><result status="valid" time="0.44"/></proof>
+  </goal>
+  <goal name="VC reciprocal_word_3by2.52" expl="postcondition" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC reciprocal_word_3by2.52.0" expl="postcondition" proved="true">
+   <proof prover="4"><result status="valid" time="0.02"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC reciprocal_word_3by2.53" expl="assertion" proved="true">
+  <proof prover="1" memlimit="1000"><result status="valid" time="0.35"/></proof>
+  <proof prover="2"><result status="valid" time="0.18"/></proof>
+  </goal>
+  <goal name="VC reciprocal_word_3by2.54" expl="assertion" proved="true">
+  <proof prover="5" timelimit="5"><result status="valid" time="0.07" steps="22"/></proof>
+  </goal>
+  <goal name="VC reciprocal_word_3by2.55" expl="assertion" proved="true">
+  <proof prover="5" timelimit="5"><result status="valid" time="0.05" steps="24"/></proof>
+  </goal>
+  <goal name="VC reciprocal_word_3by2.56" expl="assertion" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC reciprocal_word_3by2.56.0" expl="VC for reciprocal_word_3by2" proved="true">
+   <proof prover="2"><result status="valid" time="0.09"/></proof>
+   </goal>
+   <goal name="VC reciprocal_word_3by2.56.1" expl="VC for reciprocal_word_3by2" proved="true">
+   <proof prover="5"><result status="valid" time="0.03" steps="26"/></proof>
+   </goal>
+   <goal name="VC reciprocal_word_3by2.56.2" expl="VC for reciprocal_word_3by2" proved="true">
+   <proof prover="5"><result status="valid" time="0.05" steps="27"/></proof>
+   </goal>
+   <goal name="VC reciprocal_word_3by2.56.3" expl="VC for reciprocal_word_3by2" proved="true">
+   <proof prover="5"><result status="valid" time="0.04" steps="28"/></proof>
+   </goal>
+   <goal name="VC reciprocal_word_3by2.56.4" expl="VC for reciprocal_word_3by2" proved="true">
+   <proof prover="5"><result status="valid" time="0.03" steps="28"/></proof>
+   </goal>
+   <goal name="VC reciprocal_word_3by2.56.5" expl="VC for reciprocal_word_3by2" proved="true">
+   <proof prover="5"><result status="valid" time="0.04" steps="30"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC reciprocal_word_3by2.57" expl="assertion" proved="true">
+  <proof prover="1" memlimit="1000"><result status="valid" time="0.08"/></proof>
+  </goal>
+  <goal name="VC reciprocal_word_3by2.58" expl="assertion" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC reciprocal_word_3by2.58.0" expl="assertion" proved="true">
+   <proof prover="2"><result status="valid" time="0.16"/></proof>
+   <proof prover="4"><result status="valid" time="0.01"/></proof>
+   </goal>
+   <goal name="VC reciprocal_word_3by2.58.1" expl="assertion" proved="true">
+   <proof prover="2"><result status="valid" time="0.06"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC reciprocal_word_3by2.59" expl="integer overflow" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC reciprocal_word_3by2.59.0" expl="integer overflow" proved="true">
+   <proof prover="2"><result status="valid" time="0.07"/></proof>
+   <proof prover="4"><result status="valid" time="0.04"/></proof>
+   <proof prover="5" timelimit="5"><result status="valid" time="0.10" steps="32"/></proof>
+   </goal>
+   <goal name="VC reciprocal_word_3by2.59.1" expl="integer overflow" proved="true">
+   <proof prover="4"><result status="valid" time="0.02"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC reciprocal_word_3by2.60" expl="assertion" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC reciprocal_word_3by2.60.0" expl="VC for reciprocal_word_3by2" proved="true">
+   <proof prover="5"><result status="valid" time="0.06" steps="31"/></proof>
+   </goal>
+   <goal name="VC reciprocal_word_3by2.60.1" expl="VC for reciprocal_word_3by2" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC reciprocal_word_3by2.60.2" expl="VC for reciprocal_word_3by2" proved="true">
+   <proof prover="3"><result status="valid" time="0.04"/></proof>
+   </goal>
+   <goal name="VC reciprocal_word_3by2.60.3" expl="VC for reciprocal_word_3by2" proved="true">
+   <proof prover="3"><result status="valid" time="0.04"/></proof>
+   </goal>
+   <goal name="VC reciprocal_word_3by2.60.4" expl="VC for reciprocal_word_3by2" proved="true">
+   <proof prover="3"><result status="valid" time="0.04"/></proof>
+   </goal>
+   <goal name="VC reciprocal_word_3by2.60.5" expl="VC for reciprocal_word_3by2" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC reciprocal_word_3by2.60.6" expl="VC for reciprocal_word_3by2" proved="true">
+   <proof prover="2"><result status="valid" time="0.12"/></proof>
+   </goal>
+   <goal name="VC reciprocal_word_3by2.60.7" expl="VC for reciprocal_word_3by2" proved="true">
+   <proof prover="2"><result status="valid" time="0.17"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC reciprocal_word_3by2.61" expl="assertion" proved="true">
+  <proof prover="5" timelimit="5"><result status="valid" time="2.30" steps="38"/></proof>
+  </goal>
+  <goal name="VC reciprocal_word_3by2.62" expl="integer overflow" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC reciprocal_word_3by2.62.0" expl="integer overflow" proved="true">
+   <transf name="split_goal_right" proved="true" >
+    <goal name="VC reciprocal_word_3by2.62.0.0" expl="integer overflow" proved="true">
+    <proof prover="1"><result status="valid" time="0.29"/></proof>
+    </goal>
+   </transf>
+   </goal>
+   <goal name="VC reciprocal_word_3by2.62.1" expl="integer overflow" proved="true">
+   <transf name="split_goal_right" proved="true" >
+    <goal name="VC reciprocal_word_3by2.62.1.0" expl="integer overflow" proved="true">
+    <proof prover="1"><result status="valid" time="0.20"/></proof>
+    </goal>
+   </transf>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC reciprocal_word_3by2.63" expl="precondition" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC reciprocal_word_3by2.63.0" expl="VC for reciprocal_word_3by2" proved="true">
+   <proof prover="1"><result status="valid" time="0.08"/></proof>
+   </goal>
+   <goal name="VC reciprocal_word_3by2.63.1" expl="VC for reciprocal_word_3by2" proved="true">
+   <proof prover="1"><result status="valid" time="0.09"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC reciprocal_word_3by2.64" expl="postcondition" proved="true">
+  <proof prover="1" memlimit="1000"><result status="valid" time="0.07"/></proof>
+  <proof prover="2"><result status="valid" time="0.07"/></proof>
+  </goal>
+  <goal name="VC reciprocal_word_3by2.65" expl="assertion" proved="true">
+  <proof prover="1" memlimit="1000"><result status="valid" time="0.28"/></proof>
+  <proof prover="2"><result status="valid" time="0.07"/></proof>
+  </goal>
+  <goal name="VC reciprocal_word_3by2.66" expl="integer overflow" proved="true">
+  <proof prover="1" memlimit="1000"><result status="valid" time="0.31"/></proof>
+  </goal>
+  <goal name="VC reciprocal_word_3by2.67" expl="precondition" proved="true">
+  <proof prover="1" memlimit="1000"><result status="valid" time="0.06"/></proof>
+  </goal>
+  <goal name="VC reciprocal_word_3by2.68" expl="postcondition" proved="true">
+  <proof prover="0" memlimit="1000"><result status="valid" time="0.02"/></proof>
+  <proof prover="1" memlimit="1000"><result status="valid" time="0.06"/></proof>
+  <proof prover="2"><result status="valid" time="0.05"/></proof>
+  <proof prover="4"><result status="valid" time="0.01"/></proof>
+  </goal>
+  <goal name="VC reciprocal_word_3by2.69" expl="precondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.19"/></proof>
+  </goal>
+  <goal name="VC reciprocal_word_3by2.70" expl="postcondition" proved="true">
+  <proof prover="1" memlimit="1000"><result status="valid" time="0.06"/></proof>
+  <proof prover="2"><result status="valid" time="0.08"/></proof>
+  </goal>
+ </transf>
+ </goal>
+ <goal name="VC sub3" expl="VC for sub3" proved="true">
+ <transf name="split_goal_right" proved="true" >
+  <goal name="VC sub3.0" expl="integer overflow" proved="true">
+  <proof prover="5" timelimit="5"><result status="valid" time="0.02" steps="8"/></proof>
+  </goal>
+  <goal name="VC sub3.1" expl="precondition" proved="true">
+  <proof prover="5" timelimit="5"><result status="valid" time="0.02" steps="8"/></proof>
+  </goal>
+  <goal name="VC sub3.2" expl="precondition" proved="true">
+  <proof prover="5" timelimit="5"><result status="valid" time="0.03" steps="11"/></proof>
+  </goal>
+  <goal name="VC sub3.3" expl="integer overflow" proved="true">
+  <proof prover="5" timelimit="5"><result status="valid" time="0.03" steps="15"/></proof>
+  </goal>
+  <goal name="VC sub3.4" expl="postcondition" proved="true">
+  <proof prover="5" timelimit="5"><result status="valid" time="0.03" steps="17"/></proof>
+  </goal>
+ </transf>
+ </goal>
+ <goal name="VC submul_limb" expl="VC for submul_limb" proved="true">
+ <transf name="split_goal_right" proved="true" >
+  <goal name="VC submul_limb.0" expl="integer overflow" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC submul_limb.0.0" expl="integer overflow" proved="true">
+   <proof prover="5" timelimit="5"><result status="valid" time="0.02" steps="20"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC submul_limb.1" expl="integer overflow" proved="true">
+  <proof prover="5" timelimit="5"><result status="valid" time="0.09" steps="21"/></proof>
+  </goal>
+  <goal name="VC submul_limb.2" expl="loop invariant init" proved="true">
+  <proof prover="5" timelimit="5"><result status="valid" time="0.06" steps="12"/></proof>
+  </goal>
+  <goal name="VC submul_limb.3" expl="loop invariant init" proved="true">
+  <proof prover="5"><result status="valid" time="0.02" steps="73"/></proof>
+  </goal>
+  <goal name="VC submul_limb.4" expl="loop invariant init" proved="true">
+  <transf name="split_goal_right" proved="true" >
+  </transf>
+  </goal>
+  <goal name="VC submul_limb.5" expl="loop invariant init" proved="true">
+  <transf name="split_goal_right" proved="true" >
+  </transf>
+  </goal>
+  <goal name="VC submul_limb.6" expl="precondition" proved="true">
+  <proof prover="5" timelimit="5"><result status="valid" time="0.02" steps="30"/></proof>
+  </goal>
+  <goal name="VC submul_limb.7" expl="precondition" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC submul_limb.7.0" expl="VC for submul_limb" proved="true">
+   <proof prover="3"><result status="valid" time="0.03"/></proof>
+   </goal>
+   <goal name="VC submul_limb.7.1" expl="VC for submul_limb" proved="true">
+   <proof prover="3"><result status="valid" time="0.04"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC submul_limb.8" expl="assertion" proved="true">
+  <proof prover="5"><result status="valid" time="0.02" steps="46"/></proof>
+  </goal>
+  <goal name="VC submul_limb.9" expl="precondition" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC submul_limb.9.0" expl="precondition" proved="true">
+   <proof prover="3"><result status="valid" time="0.00"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC submul_limb.10" expl="precondition" proved="true">
+  <proof prover="0" memlimit="1000"><result status="valid" time="0.74"/></proof>
+  </goal>
+  <goal name="VC submul_limb.11" expl="precondition" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC submul_limb.11.0" expl="VC for submul_limb" proved="true">
+   <proof prover="4"><result status="valid" time="0.04"/></proof>
+   </goal>
+   <goal name="VC submul_limb.11.1" expl="VC for submul_limb" proved="true">
+   <proof prover="4"><result status="valid" time="0.04"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC submul_limb.12" expl="precondition" proved="true">
+  <proof prover="2" timelimit="1"><result status="valid" time="0.11"/></proof>
+  </goal>
+  <goal name="VC submul_limb.13" expl="assertion" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC submul_limb.13.0" expl="assertion" proved="true">
+   <proof prover="4"><result status="valid" time="0.03"/></proof>
+   </goal>
+   <goal name="VC submul_limb.13.1" expl="assertion" proved="true">
+   <proof prover="0"><result status="valid" time="0.52"/></proof>
+   </goal>
+   <goal name="VC submul_limb.13.2" expl="VC for submul_limb" proved="true">
+   <proof prover="4"><result status="valid" time="0.04"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC submul_limb.14" expl="assertion" proved="true">
+  <proof prover="0"><result status="valid" time="0.50"/></proof>
+  </goal>
+  <goal name="VC submul_limb.15" expl="assertion" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC submul_limb.15.0" expl="VC for submul_limb" proved="true">
+   <proof prover="3"><result status="valid" time="0.04"/></proof>
+   </goal>
+   <goal name="VC submul_limb.15.1" expl="VC for submul_limb" proved="true">
+   <proof prover="3"><result status="valid" time="0.04"/></proof>
+   </goal>
+   <goal name="VC submul_limb.15.2" expl="VC for submul_limb" proved="true">
+   <proof prover="4"><result status="valid" time="0.04"/></proof>
+   </goal>
+   <goal name="VC submul_limb.15.3" expl="VC for submul_limb" proved="true">
+   <proof prover="3"><result status="valid" time="0.04"/></proof>
+   </goal>
+   <goal name="VC submul_limb.15.4" expl="VC for submul_limb" proved="true">
+   <proof prover="4"><result status="valid" time="0.05"/></proof>
+   </goal>
+   <goal name="VC submul_limb.15.5" expl="VC for submul_limb" proved="true">
+   <proof prover="0"><result status="valid" time="0.03"/></proof>
+   </goal>
+   <goal name="VC submul_limb.15.6" expl="VC for submul_limb" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC submul_limb.15.7" expl="VC for submul_limb" proved="true">
+   <proof prover="3"><result status="valid" time="0.04"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC submul_limb.16" expl="assertion" proved="true">
+  <proof prover="4"><result status="valid" time="0.04"/></proof>
+  </goal>
+  <goal name="VC submul_limb.17" expl="assertion" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC submul_limb.17.0" expl="assertion" proved="true">
+   <proof prover="4"><result status="valid" time="0.04"/></proof>
+   </goal>
+   <goal name="VC submul_limb.17.1" expl="VC for submul_limb" proved="true">
+   <proof prover="4"><result status="valid" time="0.04"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC submul_limb.18" expl="assertion" proved="true">
+  <proof prover="3"><result status="valid" time="0.06"/></proof>
+  </goal>
+  <goal name="VC submul_limb.19" expl="integer overflow" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC submul_limb.19.0" expl="integer overflow" proved="true">
+   <proof prover="3"><result status="valid" time="0.05"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC submul_limb.20" expl="integer overflow" proved="true">
+  <proof prover="4"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC submul_limb.21" expl="integer overflow" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC submul_limb.21.0" expl="integer overflow" proved="true">
+   <proof prover="4"><result status="valid" time="0.03"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC submul_limb.22" expl="assertion" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC submul_limb.22.0" expl="VC for submul_limb" proved="true">
+   <proof prover="0" timelimit="10"><result status="valid" time="6.36"/></proof>
+   </goal>
+   <goal name="VC submul_limb.22.1" expl="VC for submul_limb" proved="true">
+   <proof prover="0"><result status="valid" time="0.06"/></proof>
+   </goal>
+   <goal name="VC submul_limb.22.2" expl="VC for submul_limb" proved="true">
+   <proof prover="0"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC submul_limb.22.3" expl="VC for submul_limb" proved="true">
+   <proof prover="1"><result status="valid" time="0.11"/></proof>
+   </goal>
+   <goal name="VC submul_limb.22.4" expl="VC for submul_limb" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC submul_limb.22.5" expl="VC for submul_limb" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC submul_limb.22.6" expl="VC for submul_limb" proved="true">
+   <proof prover="0"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC submul_limb.22.7" expl="VC for submul_limb" proved="true">
+   <proof prover="3"><result status="valid" time="0.01"/></proof>
+   </goal>
+   <goal name="VC submul_limb.22.8" expl="VC for submul_limb" proved="true">
+   <proof prover="0"><result status="valid" time="0.03"/></proof>
+   </goal>
+   <goal name="VC submul_limb.22.9" expl="VC for submul_limb" proved="true">
+   <transf name="introduce_premises" proved="true" >
+    <goal name="VC submul_limb.22.9.0" expl="VC for submul_limb" proved="true">
+    <transf name="cut" proved="true" arg1="(value r1 i = value r1 k + power radix2 k * lr)">
+     <goal name="VC submul_limb.22.9.0.0" expl="VC for submul_limb" proved="true">
+     <proof prover="3"><result status="valid" time="0.02"/></proof>
+     </goal>
+     <goal name="VC submul_limb.22.9.0.1" proved="true">
+     <proof prover="0"><result status="valid" time="0.06"/></proof>
+     </goal>
+    </transf>
+    </goal>
+   </transf>
+   </goal>
+   <goal name="VC submul_limb.22.10" expl="VC for submul_limb" proved="true">
+   <proof prover="3"><result status="valid" time="0.01"/></proof>
+   </goal>
+   <goal name="VC submul_limb.22.11" expl="VC for submul_limb" proved="true">
+   <proof prover="3"><result status="valid" time="0.03"/></proof>
+   </goal>
+   <goal name="VC submul_limb.22.12" expl="VC for submul_limb" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC submul_limb.22.13" expl="VC for submul_limb" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC submul_limb.22.14" expl="VC for submul_limb" proved="true">
+   <proof prover="0"><result status="valid" time="0.52"/></proof>
+   </goal>
+   <goal name="VC submul_limb.22.15" expl="VC for submul_limb" proved="true">
+   <proof prover="2" timelimit="1"><result status="valid" time="0.09"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC submul_limb.23" expl="loop variant decrease" proved="true">
+  <proof prover="4"><result status="valid" time="0.11"/></proof>
+  </goal>
+  <goal name="VC submul_limb.24" expl="loop invariant preservation" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC submul_limb.24.0" expl="VC for submul_limb" proved="true">
+   <proof prover="4"><result status="valid" time="0.05"/></proof>
+   </goal>
+   <goal name="VC submul_limb.24.1" expl="VC for submul_limb" proved="true">
+   <proof prover="4"><result status="valid" time="0.05"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC submul_limb.25" expl="loop invariant preservation" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC submul_limb.25.0" expl="loop invariant preservation" proved="true">
+   <proof prover="4"><result status="valid" time="0.01"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC submul_limb.26" expl="loop invariant preservation" proved="true">
+  <proof prover="0"><result status="valid" time="0.54"/></proof>
+  </goal>
+  <goal name="VC submul_limb.27" expl="loop invariant preservation" proved="true">
+  <proof prover="2" timelimit="1"><result status="valid" time="0.16"/></proof>
+  </goal>
+  <goal name="VC submul_limb.28" expl="postcondition" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC submul_limb.28.0" expl="postcondition" proved="true">
+   <proof prover="5"><result status="valid" time="0.02" steps="20"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC submul_limb.29" expl="postcondition" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC submul_limb.29.0" expl="postcondition" proved="true">
+   <proof prover="5" timelimit="5"><result status="valid" time="0.03" steps="44"/></proof>
+   </goal>
+  </transf>
+  </goal>
+ </transf>
+ </goal>
+ <goal name="VC div_sb_qr" expl="VC for div_sb_qr" proved="true">
+ <transf name="split_goal_right" proved="true" >
+  <goal name="VC div_sb_qr.0" expl="integer overflow" proved="true">
+  <proof prover="4" memlimit="2000"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC div_sb_qr.1" expl="integer overflow" proved="true">
+  <proof prover="4"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC div_sb_qr.2" expl="integer overflow" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC div_sb_qr.2.0" expl="integer overflow" proved="true">
+   <proof prover="5" timelimit="5"><result status="valid" time="0.03" steps="35"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div_sb_qr.3" expl="integer overflow" proved="true">
+  <transf name="introduce_premises" proved="true" >
+   <goal name="VC div_sb_qr.3.0" expl="integer overflow" proved="true">
+   <transf name="inline_goal" proved="true" >
+    <goal name="VC div_sb_qr.3.0.0" expl="integer overflow" proved="true">
+    <proof prover="2"><result status="valid" time="0.05"/></proof>
+    </goal>
+   </transf>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div_sb_qr.4" expl="integer overflow" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC div_sb_qr.4.0" expl="integer overflow" proved="true">
+   <transf name="introduce_premises" proved="true" >
+    <goal name="VC div_sb_qr.4.0.0" expl="integer overflow" proved="true">
+    <proof prover="1"><result status="valid" time="0.04"/></proof>
+    </goal>
+   </transf>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div_sb_qr.5" expl="integer overflow" proved="true">
+  <proof prover="5" timelimit="5"><result status="valid" time="0.02" steps="39"/></proof>
+  </goal>
+  <goal name="VC div_sb_qr.6" expl="precondition" proved="true">
+  <proof prover="2" memlimit="2000"><result status="valid" time="0.10"/></proof>
+  <proof prover="4" memlimit="2000"><result status="valid" time="0.10"/></proof>
+  </goal>
+  <goal name="VC div_sb_qr.7" expl="integer overflow" proved="true">
+  <proof prover="4"><result status="valid" time="0.08"/></proof>
+  </goal>
+  <goal name="VC div_sb_qr.8" expl="precondition" proved="true">
+  <proof prover="5" timelimit="5"><result status="valid" time="0.05" steps="46"/></proof>
+  </goal>
+  <goal name="VC div_sb_qr.9" expl="integer overflow" proved="true">
+  <proof prover="5" timelimit="5"><result status="valid" time="0.06" steps="55"/></proof>
+  </goal>
+  <goal name="VC div_sb_qr.10" expl="precondition" proved="true">
+  <proof prover="2" memlimit="2000"><result status="valid" time="0.13"/></proof>
+  </goal>
+  <goal name="VC div_sb_qr.11" expl="assertion" proved="true">
+  <proof prover="5"><result status="valid" time="0.03" steps="36"/></proof>
+  </goal>
+  <goal name="VC div_sb_qr.12" expl="integer overflow" proved="true">
+  <transf name="introduce_premises" proved="true" >
+   <goal name="VC div_sb_qr.12.0" expl="integer overflow" proved="true">
+   <transf name="inline_goal" proved="true" >
+    <goal name="VC div_sb_qr.12.0.0" expl="integer overflow" proved="true">
+    <transf name="split_goal_right" proved="true" >
+     <goal name="VC div_sb_qr.12.0.0.0" expl="VC for div_sb_qr" proved="true">
+     <proof prover="2" memlimit="2000"><result status="valid" time="0.07"/></proof>
+     </goal>
+     <goal name="VC div_sb_qr.12.0.0.1" expl="VC for div_sb_qr" proved="true">
+     <proof prover="2" memlimit="2000"><result status="valid" time="0.12"/></proof>
+     </goal>
+    </transf>
+    </goal>
+   </transf>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div_sb_qr.13" expl="precondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.11"/></proof>
+  </goal>
+  <goal name="VC div_sb_qr.14" expl="precondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.12"/></proof>
+  </goal>
+  <goal name="VC div_sb_qr.15" expl="integer overflow" proved="true">
+  <proof prover="2" memlimit="2000"><result status="valid" time="0.10"/></proof>
+  </goal>
+  <goal name="VC div_sb_qr.16" expl="integer overflow" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC div_sb_qr.16.0" expl="integer overflow" proved="true">
+   <transf name="introduce_premises" proved="true" >
+    <goal name="VC div_sb_qr.16.0.0" expl="integer overflow" proved="true">
+    <transf name="inline_goal" proved="true" >
+     <goal name="VC div_sb_qr.16.0.0.0" expl="integer overflow" proved="true">
+     <proof prover="1"><result status="valid" time="0.05"/></proof>
+     </goal>
+    </transf>
+    </goal>
+   </transf>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div_sb_qr.17" expl="precondition" proved="true">
+  <proof prover="1" memlimit="1000"><result status="valid" time="0.17"/></proof>
+  <proof prover="2" memlimit="2000"><result status="valid" time="0.12"/></proof>
+  <proof prover="4" memlimit="2000"><result status="valid" time="0.01"/></proof>
+  </goal>
+  <goal name="VC div_sb_qr.18" expl="precondition" proved="true">
+  <transf name="introduce_premises" proved="true" >
+   <goal name="VC div_sb_qr.18.0" expl="precondition" proved="true">
+   <transf name="inline_goal" proved="true" >
+    <goal name="VC div_sb_qr.18.0.0" expl="precondition" proved="true">
+    <transf name="split_goal_right" proved="true" >
+     <goal name="VC div_sb_qr.18.0.0.0" expl="VC for div_sb_qr" proved="true">
+     <proof prover="3"><result status="valid" time="0.03"/></proof>
+     </goal>
+     <goal name="VC div_sb_qr.18.0.0.1" expl="VC for div_sb_qr" proved="true">
+     <proof prover="3"><result status="valid" time="0.03"/></proof>
+     </goal>
+     <goal name="VC div_sb_qr.18.0.0.2" expl="VC for div_sb_qr" proved="true">
+     <proof prover="3"><result status="valid" time="0.04"/></proof>
+     </goal>
+     <goal name="VC div_sb_qr.18.0.0.3" expl="VC for div_sb_qr" proved="true">
+     <proof prover="3"><result status="valid" time="0.04"/></proof>
+     </goal>
+     <goal name="VC div_sb_qr.18.0.0.4" expl="VC for div_sb_qr" proved="true">
+     <proof prover="3"><result status="valid" time="0.03"/></proof>
+     </goal>
+     <goal name="VC div_sb_qr.18.0.0.5" expl="VC for div_sb_qr" proved="true">
+     <proof prover="3"><result status="valid" time="0.04"/></proof>
+     </goal>
+    </transf>
+    </goal>
+   </transf>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div_sb_qr.19" expl="precondition" proved="true">
+  <proof prover="2" memlimit="2000"><result status="valid" time="0.08"/></proof>
+  </goal>
+  <goal name="VC div_sb_qr.20" expl="assertion" proved="true">
+  <transf name="inline_all" proved="true" >
+   <goal name="VC div_sb_qr.20.0" expl="assertion" proved="true">
+   <proof prover="1" timelimit="55"><result status="valid" time="0.29"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div_sb_qr.21" expl="precondition" proved="true">
+  <proof prover="4"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC div_sb_qr.22" expl="precondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.12"/></proof>
+  </goal>
+  <goal name="VC div_sb_qr.23" expl="precondition" proved="true">
+  <proof prover="5" timelimit="5"><result status="valid" time="0.04" steps="54"/></proof>
+  </goal>
+  <goal name="VC div_sb_qr.24" expl="precondition" proved="true">
+  <proof prover="2" memlimit="2000"><result status="valid" time="0.08"/></proof>
+  </goal>
+  <goal name="VC div_sb_qr.25" expl="assertion" proved="true">
+  <transf name="introduce_premises" proved="true" >
+   <goal name="VC div_sb_qr.25.0" expl="assertion" proved="true">
+   <transf name="inline_goal" proved="true" >
+    <goal name="VC div_sb_qr.25.0.0" expl="assertion" proved="true">
+    <proof prover="1"><result status="valid" time="1.06"/></proof>
+    </goal>
+   </transf>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div_sb_qr.26" expl="assertion" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC div_sb_qr.26.0" expl="assertion" proved="true">
+   <proof prover="5"><result status="valid" time="0.09" steps="74"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.26.1" expl="assertion" proved="true">
+   <proof prover="5"><result status="valid" time="0.04" steps="51"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div_sb_qr.27" expl="precondition" proved="true">
+  <proof prover="5" timelimit="5"><result status="valid" time="0.04" steps="74"/></proof>
+  </goal>
+  <goal name="VC div_sb_qr.28" expl="precondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.12"/></proof>
+  </goal>
+  <goal name="VC div_sb_qr.29" expl="precondition" proved="true">
+  <proof prover="2" memlimit="2000"><result status="valid" time="0.53"/></proof>
+  </goal>
+  <goal name="VC div_sb_qr.30" expl="assertion" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC div_sb_qr.30.0" expl="VC for div_sb_qr" proved="true">
+   <transf name="introduce_premises" proved="true" >
+    <goal name="VC div_sb_qr.30.0.0" expl="VC for div_sb_qr" proved="true">
+    <proof prover="0"><result status="valid" time="0.01"/></proof>
+    </goal>
+   </transf>
+   </goal>
+   <goal name="VC div_sb_qr.30.1" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.05"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.30.2" expl="VC for div_sb_qr" proved="true">
+   <proof prover="5"><result status="valid" time="0.08" steps="127"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.30.3" expl="VC for div_sb_qr" proved="true">
+   <proof prover="5"><result status="valid" time="0.09" steps="120"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.30.4" expl="VC for div_sb_qr" proved="true">
+   <proof prover="5"><result status="valid" time="0.05" steps="79"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.30.5" expl="VC for div_sb_qr" proved="true">
+   <transf name="introduce_premises" proved="true" >
+    <goal name="VC div_sb_qr.30.5.0" expl="VC for div_sb_qr" proved="true">
+    <transf name="inline_goal" proved="true" >
+     <goal name="VC div_sb_qr.30.5.0.0" expl="VC for div_sb_qr" proved="true">
+     <proof prover="0"><result status="valid" time="0.02"/></proof>
+     </goal>
+    </transf>
+    </goal>
+   </transf>
+   </goal>
+   <goal name="VC div_sb_qr.30.6" expl="VC for div_sb_qr" proved="true">
+   <transf name="introduce_premises" proved="true" >
+    <goal name="VC div_sb_qr.30.6.0" expl="VC for div_sb_qr" proved="true">
+    <proof prover="0"><result status="valid" time="0.02"/></proof>
+    </goal>
+   </transf>
+   </goal>
+   <goal name="VC div_sb_qr.30.7" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.30.8" expl="VC for div_sb_qr" proved="true">
+   <transf name="introduce_premises" proved="true" >
+    <goal name="VC div_sb_qr.30.8.0" expl="VC for div_sb_qr" proved="true">
+    <transf name="inline_goal" proved="true" >
+     <goal name="VC div_sb_qr.30.8.0.0" expl="VC for div_sb_qr" proved="true">
+     <proof prover="5"><result status="valid" time="0.06" steps="120"/></proof>
+     </goal>
+    </transf>
+    </goal>
+   </transf>
+   </goal>
+   <goal name="VC div_sb_qr.30.9" expl="VC for div_sb_qr" proved="true">
+   <proof prover="5"><result status="valid" time="0.66" steps="85"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div_sb_qr.31" expl="precondition" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC div_sb_qr.31.0" expl="precondition" proved="true">
+   <proof prover="4"><result status="valid" time="0.03"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.31.1" expl="precondition" proved="true">
+   <proof prover="2"><result status="valid" time="0.08"/></proof>
+   <proof prover="4"><result status="valid" time="0.04"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div_sb_qr.32" expl="assertion" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC div_sb_qr.32.0" expl="VC for div_sb_qr" proved="true">
+   <proof prover="5" timelimit="5" memlimit="2000"><result status="valid" time="0.04" steps="79"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.32.1" expl="VC for div_sb_qr" proved="true">
+   <proof prover="5" timelimit="5" memlimit="2000"><result status="valid" time="0.04" steps="120"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.32.2" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.06"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.32.3" expl="VC for div_sb_qr" proved="true">
+   <proof prover="5" timelimit="5" memlimit="2000"><result status="valid" time="0.03" steps="81"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div_sb_qr.33" expl="precondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.09"/></proof>
+  </goal>
+  <goal name="VC div_sb_qr.34" expl="assertion" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC div_sb_qr.34.0" expl="VC for div_sb_qr" proved="true">
+   <proof prover="0"><result status="valid" time="0.04"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.34.1" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.01"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.34.2" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="1.62"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.34.3" expl="VC for div_sb_qr" proved="true">
+   <proof prover="5"><result status="valid" time="0.60" steps="150"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.34.4" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.03"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.34.5" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.34.6" expl="VC for div_sb_qr" proved="true">
+   <proof prover="1"><result status="valid" time="0.40"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.34.7" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.01"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.34.8" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.05"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.34.9" expl="VC for div_sb_qr" proved="true">
+   <proof prover="2" timelimit="1"><result status="valid" time="0.13"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.34.10" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.01"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.34.11" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.05"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div_sb_qr.35" expl="postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.16"/></proof>
+  </goal>
+  <goal name="VC div_sb_qr.36" expl="postcondition" proved="true">
+  <proof prover="4"><result status="valid" time="0.08"/></proof>
+  </goal>
+  <goal name="VC div_sb_qr.37" expl="assertion" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC div_sb_qr.37.0" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.03"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.37.1" expl="VC for div_sb_qr" proved="true">
+   <proof prover="1"><result status="valid" time="0.08"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div_sb_qr.38" expl="assertion" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC div_sb_qr.38.0" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.06"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.38.1" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.38.2" expl="VC for div_sb_qr" proved="true">
+   <proof prover="5"><result status="valid" time="0.07" steps="189"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.38.3" expl="VC for div_sb_qr" proved="true">
+   <proof prover="5"><result status="valid" time="0.04" steps="54"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div_sb_qr.39" expl="precondition" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC div_sb_qr.39.0" expl="VC for div_sb_qr" proved="true">
+   <transf name="introduce_premises" proved="true" >
+    <goal name="VC div_sb_qr.39.0.0" expl="VC for div_sb_qr" proved="true">
+    <transf name="inline_goal" proved="true" >
+     <goal name="VC div_sb_qr.39.0.0.0" expl="VC for div_sb_qr" proved="true">
+     <proof prover="5"><result status="valid" time="0.08" steps="97"/></proof>
+     </goal>
+    </transf>
+    </goal>
+   </transf>
+   </goal>
+   <goal name="VC div_sb_qr.39.1" expl="VC for div_sb_qr" proved="true">
+   <transf name="split_goal_right" proved="true" >
+    <goal name="VC div_sb_qr.39.1.0" expl="VC for div_sb_qr" proved="true">
+    <proof prover="3"><result status="valid" time="0.06"/></proof>
+    </goal>
+    <goal name="VC div_sb_qr.39.1.1" expl="VC for div_sb_qr" proved="true">
+    <proof prover="3"><result status="valid" time="0.08"/></proof>
+    </goal>
+   </transf>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div_sb_qr.40" expl="precondition" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC div_sb_qr.40.0" expl="precondition" proved="true">
+   <proof prover="2" memlimit="2000"><result status="valid" time="0.14"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.40.1" expl="precondition" proved="true">
+   <transf name="inline_all" proved="true" >
+    <goal name="VC div_sb_qr.40.1.0" expl="precondition" proved="true">
+    <proof prover="1"><result status="valid" time="0.13"/></proof>
+    </goal>
+   </transf>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div_sb_qr.41" expl="precondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.10"/></proof>
+  <proof prover="4"><result status="valid" time="0.04"/></proof>
+  </goal>
+  <goal name="VC div_sb_qr.42" expl="precondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.13"/></proof>
+  <proof prover="4"><result status="valid" time="0.05"/></proof>
+  </goal>
+  <goal name="VC div_sb_qr.43" expl="precondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.10"/></proof>
+  <proof prover="4"><result status="valid" time="0.07"/></proof>
+  </goal>
+  <goal name="VC div_sb_qr.44" expl="assertion" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC div_sb_qr.44.0" expl="VC for div_sb_qr" proved="true">
+   <proof prover="5"><result status="valid" time="0.06" steps="106"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.44.1" expl="VC for div_sb_qr" proved="true">
+   <proof prover="1"><result status="valid" time="0.92"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.44.2" expl="VC for div_sb_qr" proved="true">
+   <proof prover="1"><result status="valid" time="0.74"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.44.3" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.44.4" expl="VC for div_sb_qr" proved="true">
+   <proof prover="5"><result status="valid" time="0.04" steps="95"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.44.5" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.08"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.44.6" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.11"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.44.7" expl="VC for div_sb_qr" proved="true">
+   <proof prover="0"><result status="valid" time="0.12"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.44.8" expl="VC for div_sb_qr" proved="true">
+   <proof prover="1"><result status="valid" time="3.14"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.44.9" expl="VC for div_sb_qr" proved="true">
+   <proof prover="1"><result status="valid" time="3.17"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.44.10" expl="VC for div_sb_qr" proved="true">
+   <proof prover="1"><result status="valid" time="0.33"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.44.11" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.04"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.44.12" expl="VC for div_sb_qr" proved="true">
+   <proof prover="1"><result status="valid" time="0.47"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.44.13" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.04"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div_sb_qr.45" expl="precondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.12"/></proof>
+  </goal>
+  <goal name="VC div_sb_qr.46" expl="precondition" proved="true">
+  <transf name="inline_all" proved="true" >
+   <goal name="VC div_sb_qr.46.0" expl="precondition" proved="true">
+   <proof prover="1" timelimit="20"><result status="valid" time="0.13"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div_sb_qr.47" expl="precondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.20"/></proof>
+  </goal>
+  <goal name="VC div_sb_qr.48" expl="assertion" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC div_sb_qr.48.0" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.07"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.48.1" expl="VC for div_sb_qr" proved="true">
+   <proof prover="0"><result status="valid" time="0.18"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.48.2" expl="VC for div_sb_qr" proved="true">
+   <proof prover="5"><result status="valid" time="0.07" steps="57"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.48.3" expl="VC for div_sb_qr" proved="true">
+   <proof prover="1"><result status="valid" time="0.14"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.48.4" expl="VC for div_sb_qr" proved="true">
+   <proof prover="5"><result status="valid" time="0.20" steps="108"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.48.5" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.04"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div_sb_qr.49" expl="assertion" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC div_sb_qr.49.0" expl="VC for div_sb_qr" proved="true">
+   <proof prover="2" timelimit="1"><result status="valid" time="0.12"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.49.1" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.03"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.49.2" expl="VC for div_sb_qr" proved="true">
+   <proof prover="5"><result status="valid" time="0.11" steps="102"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.49.3" expl="VC for div_sb_qr" proved="true">
+   <proof prover="0"><result status="valid" time="0.03"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.49.4" expl="VC for div_sb_qr" proved="true">
+   <proof prover="0"><result status="valid" time="0.06"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.49.5" expl="VC for div_sb_qr" proved="true">
+   <proof prover="2" timelimit="1"><result status="valid" time="1.39"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.49.6" expl="VC for div_sb_qr" proved="true">
+   <proof prover="5"><result status="valid" time="0.20" steps="62"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.49.7" expl="VC for div_sb_qr" proved="true">
+   <proof prover="5"><result status="valid" time="0.12" steps="64"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.49.8" expl="VC for div_sb_qr" proved="true">
+   <proof prover="5"><result status="valid" time="0.13" steps="65"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div_sb_qr.50" expl="postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.12"/></proof>
+  </goal>
+  <goal name="VC div_sb_qr.51" expl="postcondition" proved="true">
+  <proof prover="5" timelimit="5"><result status="valid" time="0.03" steps="58"/></proof>
+  </goal>
+  <goal name="VC div_sb_qr.52" expl="postcondition" proved="true">
+  <proof prover="4"><result status="valid" time="0.10"/></proof>
+  </goal>
+  <goal name="VC div_sb_qr.53" expl="loop invariant init" proved="true">
+  <proof prover="4"><result status="valid" time="0.11"/></proof>
+  </goal>
+  <goal name="VC div_sb_qr.54" expl="loop invariant init" proved="true">
+  <proof prover="5"><result status="valid" time="0.02" steps="64"/></proof>
+  </goal>
+  <goal name="VC div_sb_qr.55" expl="loop invariant init" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC div_sb_qr.55.0" expl="loop invariant init" proved="true">
+   <proof prover="2"><result status="valid" time="0.14"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.55.1" expl="loop invariant init" proved="true">
+   <proof prover="5" timelimit="5"><result status="valid" time="0.04" steps="67"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div_sb_qr.56" expl="loop invariant init" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC div_sb_qr.56.0" expl="loop invariant init" proved="true">
+   <proof prover="4" memlimit="2000"><result status="valid" time="0.03"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.56.1" expl="loop invariant init" proved="true">
+   <proof prover="4" memlimit="2000"><result status="valid" time="0.02"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div_sb_qr.57" expl="loop invariant init" proved="true">
+  <proof prover="3"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC div_sb_qr.58" expl="loop invariant init" proved="true">
+  <proof prover="3"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC div_sb_qr.59" expl="loop invariant init" proved="true">
+  <proof prover="2" memlimit="2000"><result status="valid" time="0.14"/></proof>
+  </goal>
+  <goal name="VC div_sb_qr.60" expl="loop invariant init" proved="true">
+  <proof prover="3"><result status="valid" time="0.04"/></proof>
+  </goal>
+  <goal name="VC div_sb_qr.61" expl="loop invariant init" proved="true">
+  <proof prover="3"><result status="valid" time="0.04"/></proof>
+  </goal>
+  <goal name="VC div_sb_qr.62" expl="loop invariant init" proved="true">
+  <proof prover="2"><result status="valid" time="0.18"/></proof>
+  <proof prover="4"><result status="valid" time="0.06"/></proof>
+  </goal>
+  <goal name="VC div_sb_qr.63" expl="loop invariant init" proved="true">
+  <proof prover="2" memlimit="2000"><result status="valid" time="0.16"/></proof>
+  </goal>
+  <goal name="VC div_sb_qr.64" expl="loop invariant init" proved="true">
+  <proof prover="2" memlimit="2000"><result status="valid" time="0.11"/></proof>
+  </goal>
+  <goal name="VC div_sb_qr.65" expl="loop invariant init" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC div_sb_qr.65.0" expl="loop invariant init" proved="true">
+   <proof prover="4"><result status="valid" time="0.03"/></proof>
+   <proof prover="5" timelimit="5" memlimit="2000"><result status="valid" time="0.02" steps="72"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.65.1" expl="loop invariant init" proved="true">
+   <proof prover="2"><result status="valid" time="0.08"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div_sb_qr.66" expl="loop invariant init" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC div_sb_qr.66.0" expl="loop invariant init" proved="true">
+   <proof prover="3"><result status="valid" time="0.05"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.66.1" expl="loop invariant init" proved="true">
+   <proof prover="4"><result status="valid" time="0.03"/></proof>
+   <proof prover="5" timelimit="5"><result status="valid" time="0.03" steps="72"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div_sb_qr.67" expl="integer overflow" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC div_sb_qr.67.0" expl="integer overflow" proved="true">
+   <proof prover="4"><result status="valid" time="0.09"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.67.1" expl="integer overflow" proved="true">
+   <proof prover="4"><result status="valid" time="0.09"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div_sb_qr.68" expl="precondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.26"/></proof>
+  </goal>
+  <goal name="VC div_sb_qr.69" expl="precondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.22"/></proof>
+  </goal>
+  <goal name="VC div_sb_qr.70" expl="precondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.24"/></proof>
+  </goal>
+  <goal name="VC div_sb_qr.71" expl="integer overflow" proved="true">
+  <proof prover="2" memlimit="2000"><result status="valid" time="0.16"/></proof>
+  </goal>
+  <goal name="VC div_sb_qr.72" expl="precondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.10"/></proof>
+  </goal>
+  <goal name="VC div_sb_qr.73" expl="precondition" proved="true">
+  <proof prover="5" timelimit="5" memlimit="2000"><result status="valid" time="0.29" steps="110"/></proof>
+  </goal>
+  <goal name="VC div_sb_qr.74" expl="assertion" proved="true">
+  <proof prover="1"><result status="valid" time="0.95"/></proof>
+  </goal>
+  <goal name="VC div_sb_qr.75" expl="precondition" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC div_sb_qr.75.0" expl="precondition" proved="true">
+   <proof prover="4"><result status="valid" time="0.09"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.75.1" expl="precondition" proved="true">
+   <proof prover="4"><result status="valid" time="0.07"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div_sb_qr.76" expl="precondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.14"/></proof>
+  </goal>
+  <goal name="VC div_sb_qr.77" expl="assertion" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC div_sb_qr.77.0" expl="VC for div_sb_qr" proved="true">
+   <proof prover="0"><result status="valid" time="0.04"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.77.1" expl="VC for div_sb_qr" proved="true">
+   <proof prover="0"><result status="valid" time="4.66"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.77.2" expl="VC for div_sb_qr" proved="true">
+   <proof prover="1" memlimit="1000"><result status="valid" time="0.94"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.77.3" expl="VC for div_sb_qr" proved="true">
+   <proof prover="1"><result status="valid" time="0.98"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.77.4" expl="VC for div_sb_qr" proved="true">
+   <proof prover="0"><result status="valid" time="0.03"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div_sb_qr.78" expl="precondition" proved="true">
+  <proof prover="2" memlimit="2000"><result status="valid" time="0.15"/></proof>
+  </goal>
+  <goal name="VC div_sb_qr.79" expl="assertion" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC div_sb_qr.79.0" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.07"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.79.1" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.17"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.79.2" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.79.3" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.21"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.79.4" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.06"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.79.5" expl="VC for div_sb_qr" proved="true">
+   <proof prover="0"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.79.6" expl="VC for div_sb_qr" proved="true">
+   <proof prover="0"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.79.7" expl="VC for div_sb_qr" proved="true">
+   <proof prover="5"><result status="valid" time="1.18" steps="122"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.79.8" expl="VC for div_sb_qr" proved="true">
+   <proof prover="2" timelimit="1"><result status="valid" time="0.41"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.79.9" expl="VC for div_sb_qr" proved="true">
+   <proof prover="0"><result status="valid" time="0.03"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.79.10" expl="VC for div_sb_qr" proved="true">
+   <proof prover="0"><result status="valid" time="0.03"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div_sb_qr.80" expl="assertion" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC div_sb_qr.80.0" expl="assertion" proved="true">
+   <proof prover="1"><result status="valid" time="0.14"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.80.1" expl="assertion" proved="true">
+   <proof prover="5" timelimit="5" memlimit="2000"><result status="valid" time="0.26" steps="109"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div_sb_qr.81" expl="postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.24"/></proof>
+  </goal>
+  <goal name="VC div_sb_qr.82" expl="precondition" proved="true">
+  <transf name="introduce_premises" proved="true" >
+   <goal name="VC div_sb_qr.82.0" expl="precondition" proved="true">
+   <transf name="inline_goal" proved="true" >
+    <goal name="VC div_sb_qr.82.0.0" expl="precondition" proved="true">
+    <transf name="introduce_premises" proved="true" >
+     <goal name="VC div_sb_qr.82.0.0.0" expl="precondition" proved="true">
+     <transf name="inline_goal" proved="true" >
+      <goal name="VC div_sb_qr.82.0.0.0.0" expl="precondition" proved="true">
+      <transf name="split_all_full" proved="true" >
+       <goal name="VC div_sb_qr.82.0.0.0.0.0" expl="precondition" proved="true">
+       <proof prover="3" timelimit="10" memlimit="4000"><result status="valid" time="6.84"/></proof>
+       </goal>
+      </transf>
+      </goal>
+     </transf>
+     </goal>
+    </transf>
+    </goal>
+   </transf>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div_sb_qr.83" expl="precondition" proved="true">
+  <transf name="introduce_premises" proved="true" >
+   <goal name="VC div_sb_qr.83.0" expl="precondition" proved="true">
+   <transf name="inline_goal" proved="true" >
+    <goal name="VC div_sb_qr.83.0.0" expl="precondition" proved="true">
+    <proof prover="0" memlimit="1000"><result status="valid" time="0.25"/></proof>
+    </goal>
+   </transf>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div_sb_qr.84" expl="precondition" proved="true">
+  <transf name="split_vc" proved="true" >
+   <goal name="VC div_sb_qr.84.0" expl="precondition" proved="true">
+   <proof prover="2" timelimit="1"><result status="valid" time="0.44"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.84.1" expl="precondition" proved="true">
+   <proof prover="2" timelimit="1"><result status="valid" time="0.04"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div_sb_qr.85" expl="assertion" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC div_sb_qr.85.0" expl="assertion" proved="true">
+   <proof prover="2" memlimit="2000"><result status="valid" time="0.64"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.85.1" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.08"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.85.2" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.21"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.85.3" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.23"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.85.4" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.06"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div_sb_qr.86" expl="precondition" proved="true">
+  <proof prover="2"><result status="valid" time="2.15"/></proof>
+  </goal>
+  <goal name="VC div_sb_qr.87" expl="postcondition" proved="true">
+  <proof prover="5" timelimit="5" memlimit="2000"><result status="valid" time="2.52" steps="178"/></proof>
+  </goal>
+  <goal name="VC div_sb_qr.88" expl="precondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.28"/></proof>
+  </goal>
+  <goal name="VC div_sb_qr.89" expl="precondition" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC div_sb_qr.89.0" expl="precondition" proved="true">
+   <transf name="introduce_premises" proved="true" >
+    <goal name="VC div_sb_qr.89.0.0" expl="precondition" proved="true">
+    <transf name="inline_goal" proved="true" >
+     <goal name="VC div_sb_qr.89.0.0.0" expl="precondition" proved="true">
+     <proof prover="3"><result status="valid" time="0.08"/></proof>
+     </goal>
+    </transf>
+    </goal>
+   </transf>
+   </goal>
+   <goal name="VC div_sb_qr.89.1" expl="precondition" proved="true">
+   <transf name="split_goal_right" proved="true" >
+    <goal name="VC div_sb_qr.89.1.0" expl="precondition" proved="true">
+    <proof prover="3"><result status="valid" time="0.10"/></proof>
+    </goal>
+    <goal name="VC div_sb_qr.89.1.1" expl="precondition" proved="true">
+    <proof prover="3"><result status="valid" time="0.08"/></proof>
+    </goal>
+   </transf>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div_sb_qr.90" expl="assertion" proved="true">
+  <transf name="introduce_premises" proved="true" >
+   <goal name="VC div_sb_qr.90.0" expl="assertion" proved="true">
+   <transf name="inline_goal" proved="true" >
+    <goal name="VC div_sb_qr.90.0.0" expl="assertion" proved="true">
+    <transf name="split_goal_right" proved="true" >
+     <goal name="VC div_sb_qr.90.0.0.0" expl="VC for div_sb_qr" proved="true">
+     <proof prover="0"><result status="valid" time="0.03"/></proof>
+     </goal>
+     <goal name="VC div_sb_qr.90.0.0.1" expl="VC for div_sb_qr" proved="true">
+     <proof prover="2" timelimit="1"><result status="valid" time="0.20"/></proof>
+     </goal>
+     <goal name="VC div_sb_qr.90.0.0.2" expl="VC for div_sb_qr" proved="true">
+     <proof prover="2" memlimit="2000"><result status="valid" time="0.36"/></proof>
+     </goal>
+     <goal name="VC div_sb_qr.90.0.0.3" expl="VC for div_sb_qr" proved="true">
+     <proof prover="4" timelimit="30" memlimit="2000"><result status="valid" time="0.07"/></proof>
+     </goal>
+     <goal name="VC div_sb_qr.90.0.0.4" expl="VC for div_sb_qr" proved="true">
+     <proof prover="3"><result status="valid" time="0.03"/></proof>
+     </goal>
+     <goal name="VC div_sb_qr.90.0.0.5" expl="VC for div_sb_qr" proved="true">
+     <proof prover="3"><result status="valid" time="0.04"/></proof>
+     </goal>
+     <goal name="VC div_sb_qr.90.0.0.6" expl="VC for div_sb_qr" proved="true">
+     <transf name="cut" proved="true" arg1="(plength xd = plength x)">
+      <goal name="VC div_sb_qr.90.0.0.6.0" expl="VC for div_sb_qr" proved="true">
+      <proof prover="0"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.90.0.0.6.1" proved="true">
+      <proof prover="0" timelimit="10"><result status="valid" time="0.02"/></proof>
+      </goal>
+     </transf>
+     </goal>
+     <goal name="VC div_sb_qr.90.0.0.7" expl="VC for div_sb_qr" proved="true">
+     <proof prover="2" memlimit="2000"><result status="valid" time="0.12"/></proof>
+     </goal>
+     <goal name="VC div_sb_qr.90.0.0.8" expl="VC for div_sb_qr" proved="true">
+     <proof prover="3"><result status="valid" time="0.06"/></proof>
+     </goal>
+     <goal name="VC div_sb_qr.90.0.0.9" expl="VC for div_sb_qr" proved="true">
+     <proof prover="3"><result status="valid" time="0.02"/></proof>
+     </goal>
+     <goal name="VC div_sb_qr.90.0.0.10" expl="VC for div_sb_qr" proved="true">
+     <proof prover="3"><result status="valid" time="0.05"/></proof>
+     </goal>
+    </transf>
+    </goal>
+   </transf>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div_sb_qr.91" expl="assertion" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC div_sb_qr.91.0" expl="VC for div_sb_qr" proved="true">
+   <proof prover="0"><result status="valid" time="0.03"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.91.1" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.04"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.91.2" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.08"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.91.3" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.10"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.91.4" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.10"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.91.5" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.08"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.91.6" expl="VC for div_sb_qr" proved="true">
+   <proof prover="0"><result status="valid" time="0.04"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.91.7" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.03"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.91.8" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.91.9" expl="VC for div_sb_qr" proved="true">
+   <proof prover="0"><result status="valid" time="0.04"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.91.10" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.91.11" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.91.12" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.04"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.91.13" expl="VC for div_sb_qr" proved="true">
+   <proof prover="1"><result status="valid" time="0.13"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.91.14" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.10"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.91.15" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.16"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.91.16" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.04"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.91.17" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.03"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.91.18" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.91.19" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.91.20" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.04"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.91.21" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.05"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.91.22" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.05"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.91.23" expl="VC for div_sb_qr" proved="true">
+   <proof prover="1"><result status="valid" time="0.76"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.91.24" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.03"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.91.25" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.06"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.91.26" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.06"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.91.27" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.22"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.91.28" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.91.29" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.07"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.91.30" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.06"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.91.31" expl="VC for div_sb_qr" proved="true">
+   <proof prover="1"><result status="valid" time="0.30"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.91.32" expl="VC for div_sb_qr" proved="true">
+   <proof prover="1"><result status="valid" time="0.28"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.91.33" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.09"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div_sb_qr.92" expl="precondition" proved="true">
+  <proof prover="2" memlimit="2000"><result status="valid" time="0.18"/></proof>
+  </goal>
+  <goal name="VC div_sb_qr.93" expl="precondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.45"/></proof>
+  </goal>
+  <goal name="VC div_sb_qr.94" expl="precondition" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC div_sb_qr.94.0" expl="VC for div_sb_qr" proved="true">
+   <proof prover="4"><result status="valid" time="0.16"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.94.1" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.19"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div_sb_qr.95" expl="precondition" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC div_sb_qr.95.0" expl="precondition" proved="true">
+   <proof prover="1" memlimit="1000"><result status="valid" time="0.17"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.95.1" expl="precondition" proved="true">
+   <proof prover="4"><result status="valid" time="0.02"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div_sb_qr.96" expl="precondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.07"/></proof>
+  </goal>
+  <goal name="VC div_sb_qr.97" expl="precondition" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC div_sb_qr.97.0" expl="VC for div_sb_qr" proved="true">
+   <proof prover="1"><result status="valid" time="0.16"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.97.1" expl="VC for div_sb_qr" proved="true">
+   <transf name="inline_all" proved="true" >
+    <goal name="VC div_sb_qr.97.1.0" expl="VC for div_sb_qr" proved="true">
+    <proof prover="1" memlimit="1000"><result status="valid" time="1.46"/></proof>
+    </goal>
+   </transf>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div_sb_qr.98" expl="assertion" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC div_sb_qr.98.0" expl="VC for div_sb_qr" proved="true">
+   <transf name="introduce_premises" proved="true" >
+    <goal name="VC div_sb_qr.98.0.0" expl="VC for div_sb_qr" proved="true">
+    <proof prover="0"><result status="valid" time="0.02"/></proof>
+    </goal>
+   </transf>
+   </goal>
+   <goal name="VC div_sb_qr.98.1" expl="VC for div_sb_qr" proved="true">
+   <transf name="split_goal_right" proved="true" >
+    <goal name="VC div_sb_qr.98.1.0" expl="VC for div_sb_qr" proved="true">
+    <transf name="introduce_premises" proved="true" >
+     <goal name="VC div_sb_qr.98.1.0.0" expl="VC for div_sb_qr" proved="true">
+     <transf name="inline_goal" proved="true" >
+      <goal name="VC div_sb_qr.98.1.0.0.0" expl="VC for div_sb_qr" proved="true">
+      <proof prover="0"><result status="valid" time="0.60"/></proof>
+      </goal>
+     </transf>
+     </goal>
+    </transf>
+    </goal>
+    <goal name="VC div_sb_qr.98.1.1" expl="VC for div_sb_qr" proved="true">
+    <proof prover="1"><result status="valid" time="0.15"/></proof>
+    </goal>
+   </transf>
+   </goal>
+   <goal name="VC div_sb_qr.98.2" expl="VC for div_sb_qr" proved="true">
+   <proof prover="0"><result status="valid" time="0.04"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div_sb_qr.99" expl="precondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.29"/></proof>
+  </goal>
+  <goal name="VC div_sb_qr.100" expl="precondition" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC div_sb_qr.100.0" expl="precondition" proved="true">
+   <proof prover="2"><result status="valid" time="0.29"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.100.1" expl="precondition" proved="true">
+   <proof prover="3"><result status="valid" time="0.11"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div_sb_qr.101" expl="assertion" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC div_sb_qr.101.0" expl="VC for div_sb_qr" proved="true">
+   <proof prover="2" timelimit="1"><result status="valid" time="0.28"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.101.1" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.06"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.101.2" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.06"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.101.3" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.08"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.101.4" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.09"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.101.5" expl="VC for div_sb_qr" proved="true">
+   <proof prover="2" timelimit="1"><result status="valid" time="0.33"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.101.6" expl="VC for div_sb_qr" proved="true">
+   <proof prover="2" timelimit="1"><result status="valid" time="0.52"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.101.7" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.27"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.101.8" expl="VC for div_sb_qr" proved="true">
+   <proof prover="0"><result status="valid" time="0.03"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.101.9" expl="VC for div_sb_qr" proved="true">
+   <proof prover="0"><result status="valid" time="0.03"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.101.10" expl="VC for div_sb_qr" proved="true">
+   <proof prover="0"><result status="valid" time="0.03"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.101.11" expl="VC for div_sb_qr" proved="true">
+   <proof prover="2" timelimit="1"><result status="valid" time="0.64"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.101.12" expl="VC for div_sb_qr" proved="true">
+   <proof prover="0"><result status="valid" time="0.04"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.101.13" expl="VC for div_sb_qr" proved="true">
+   <proof prover="2" timelimit="1"><result status="valid" time="0.36"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div_sb_qr.102" expl="assertion" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC div_sb_qr.102.0" expl="VC for div_sb_qr" proved="true">
+   <proof prover="2" timelimit="1"><result status="valid" time="0.46"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.102.1" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.12"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.102.2" expl="VC for div_sb_qr" proved="true">
+   <proof prover="2" timelimit="1"><result status="valid" time="0.26"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.102.3" expl="VC for div_sb_qr" proved="true">
+   <proof prover="2" timelimit="1"><result status="valid" time="0.07"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.102.4" expl="VC for div_sb_qr" proved="true">
+   <proof prover="2" timelimit="1"><result status="valid" time="0.30"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.102.5" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.03"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.102.6" expl="VC for div_sb_qr" proved="true">
+   <transf name="introduce_premises" proved="true" >
+    <goal name="VC div_sb_qr.102.6.0" expl="VC for div_sb_qr" proved="true">
+    <transf name="inline_goal" proved="true" >
+     <goal name="VC div_sb_qr.102.6.0.0" expl="VC for div_sb_qr" proved="true">
+     <proof prover="0"><result status="valid" time="0.04"/></proof>
+     </goal>
+    </transf>
+    </goal>
+   </transf>
+   </goal>
+   <goal name="VC div_sb_qr.102.7" expl="VC for div_sb_qr" proved="true">
+   <proof prover="0"><result status="valid" time="2.57"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.102.8" expl="VC for div_sb_qr" proved="true">
+   <proof prover="0"><result status="valid" time="0.05"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.102.9" expl="VC for div_sb_qr" proved="true">
+   <proof prover="2" timelimit="1"><result status="valid" time="0.30"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.102.10" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.102.11" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.10"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.102.12" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.06"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.102.13" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.03"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.102.14" expl="VC for div_sb_qr" proved="true">
+   <proof prover="0"><result status="valid" time="0.04"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.102.15" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.03"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.102.16" expl="VC for div_sb_qr" proved="true">
+   <proof prover="0"><result status="valid" time="0.04"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.102.17" expl="VC for div_sb_qr" proved="true">
+   <proof prover="1"><result status="valid" time="0.21"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.102.18" expl="VC for div_sb_qr" proved="true">
+   <proof prover="1"><result status="valid" time="0.21"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.102.19" expl="VC for div_sb_qr" proved="true">
+   <proof prover="2" timelimit="1"><result status="valid" time="0.33"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.102.20" expl="VC for div_sb_qr" proved="true">
+   <proof prover="2" timelimit="1"><result status="valid" time="0.24"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.102.21" expl="VC for div_sb_qr" proved="true">
+   <proof prover="2" timelimit="1"><result status="valid" time="0.36"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.102.22" expl="VC for div_sb_qr" proved="true">
+   <proof prover="1"><result status="valid" time="1.19"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.102.23" expl="VC for div_sb_qr" proved="true">
+   <proof prover="0"><result status="valid" time="0.05"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.102.24" expl="VC for div_sb_qr" proved="true">
+   <proof prover="0"><result status="valid" time="0.04"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.102.25" expl="VC for div_sb_qr" proved="true">
+   <proof prover="0"><result status="valid" time="0.03"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.102.26" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.05"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.102.27" expl="VC for div_sb_qr" proved="true">
+   <proof prover="2" timelimit="1"><result status="valid" time="0.33"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.102.28" expl="VC for div_sb_qr" proved="true">
+   <proof prover="1"><result status="valid" time="0.28"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.102.29" expl="VC for div_sb_qr" proved="true">
+   <proof prover="0"><result status="valid" time="0.04"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.102.30" expl="VC for div_sb_qr" proved="true">
+   <proof prover="0"><result status="valid" time="0.11"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.102.31" expl="VC for div_sb_qr" proved="true">
+   <proof prover="0"><result status="valid" time="0.03"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.102.32" expl="VC for div_sb_qr" proved="true">
+   <proof prover="2" timelimit="1"><result status="valid" time="0.24"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.102.33" expl="VC for div_sb_qr" proved="true">
+   <proof prover="0"><result status="valid" time="0.05"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.102.34" expl="VC for div_sb_qr" proved="true">
+   <proof prover="0"><result status="valid" time="1.16"/></proof>
+   <proof prover="2" memlimit="2000"><result status="valid" time="3.90"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.102.35" expl="VC for div_sb_qr" proved="true">
+   <proof prover="0"><result status="valid" time="0.44"/></proof>
+   <proof prover="2" memlimit="2000"><result status="valid" time="3.86"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.102.36" expl="VC for div_sb_qr" proved="true">
+   <proof prover="2" timelimit="1"><result status="valid" time="0.45"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.102.37" expl="VC for div_sb_qr" proved="true">
+   <proof prover="0"><result status="valid" time="0.13"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.102.38" expl="VC for div_sb_qr" proved="true">
+   <proof prover="2" timelimit="1"><result status="valid" time="0.53"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.102.39" expl="VC for div_sb_qr" proved="true">
+   <proof prover="0"><result status="valid" time="0.04"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.102.40" expl="VC for div_sb_qr" proved="true">
+   <proof prover="0"><result status="valid" time="0.11"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.102.41" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.10"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.102.42" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.102.43" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.03"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.102.44" expl="VC for div_sb_qr" proved="true">
+   <proof prover="0"><result status="valid" time="0.40"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.102.45" expl="VC for div_sb_qr" proved="true">
+   <proof prover="2" timelimit="1"><result status="valid" time="0.40"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.102.46" expl="VC for div_sb_qr" proved="true">
+   <proof prover="2" timelimit="1"><result status="valid" time="0.10"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.102.47" expl="VC for div_sb_qr" proved="true">
+   <proof prover="0"><result status="valid" time="0.04"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.102.48" expl="VC for div_sb_qr" proved="true">
+   <proof prover="0"><result status="valid" time="0.05"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.102.49" expl="VC for div_sb_qr" proved="true">
+   <proof prover="2" timelimit="1"><result status="valid" time="0.35"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div_sb_qr.103" expl="assertion" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC div_sb_qr.103.0" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.10"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.103.1" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.27"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.103.2" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.03"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.103.3" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.08"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.103.4" expl="VC for div_sb_qr" proved="true">
+   <proof prover="0"><result status="valid" time="0.03"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.103.5" expl="VC for div_sb_qr" proved="true">
+   <proof prover="2" timelimit="1"><result status="valid" time="0.36"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.103.6" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.08"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.103.7" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.07"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.103.8" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.08"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.103.9" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.08"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.103.10" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.08"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.103.11" expl="VC for div_sb_qr" proved="true">
+   <proof prover="2" timelimit="1"><result status="valid" time="0.29"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.103.12" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.103.13" expl="VC for div_sb_qr" proved="true">
+   <proof prover="0"><result status="valid" time="0.04"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.103.14" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.103.15" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.05"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.103.16" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.07"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.103.17" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.07"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.103.18" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.12"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.103.19" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.103.20" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.05"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div_sb_qr.104" expl="precondition" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC div_sb_qr.104.0" expl="precondition" proved="true">
+   <transf name="split_goal_right" proved="true" >
+    <goal name="VC div_sb_qr.104.0.0" expl="precondition" proved="true">
+    <proof prover="3"><result status="valid" time="0.10"/></proof>
+    </goal>
+    <goal name="VC div_sb_qr.104.0.1" expl="precondition" proved="true">
+    <proof prover="3"><result status="valid" time="0.08"/></proof>
+    </goal>
+   </transf>
+   </goal>
+   <goal name="VC div_sb_qr.104.1" expl="precondition" proved="true">
+   <proof prover="4"><result status="valid" time="0.03"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div_sb_qr.105" expl="precondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.34"/></proof>
+  </goal>
+  <goal name="VC div_sb_qr.106" expl="assertion" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC div_sb_qr.106.0" expl="VC for div_sb_qr" proved="true">
+   <proof prover="1"><result status="valid" time="1.08"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.106.1" expl="VC for div_sb_qr" proved="true">
+   <proof prover="1"><result status="valid" time="0.31"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.106.2" expl="VC for div_sb_qr" proved="true">
+   <proof prover="1"><result status="valid" time="0.30"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.106.3" expl="VC for div_sb_qr" proved="true">
+   <proof prover="1"><result status="valid" time="0.74"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.106.4" expl="VC for div_sb_qr" proved="true">
+   <transf name="introduce_premises" proved="true" >
+    <goal name="VC div_sb_qr.106.4.0" expl="VC for div_sb_qr" proved="true">
+    <proof prover="1" timelimit="15"><result status="valid" time="0.42"/></proof>
+    </goal>
+   </transf>
+   </goal>
+   <goal name="VC div_sb_qr.106.5" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.01"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.106.6" expl="VC for div_sb_qr" proved="true">
+   <transf name="inline_all" proved="true" >
+    <goal name="VC div_sb_qr.106.6.0" expl="VC for div_sb_qr" proved="true">
+    <proof prover="1" memlimit="1000"><result status="valid" time="0.22"/></proof>
+    </goal>
+   </transf>
+   </goal>
+   <goal name="VC div_sb_qr.106.7" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.01"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.106.8" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.10"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.106.9" expl="VC for div_sb_qr" proved="true">
+   <proof prover="0"><result status="valid" time="0.04"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.106.10" expl="VC for div_sb_qr" proved="true">
+   <proof prover="1"><result status="valid" time="0.28"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.106.11" expl="VC for div_sb_qr" proved="true">
+   <proof prover="1"><result status="valid" time="0.27"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.106.12" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.20"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.106.13" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.06"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.106.14" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.106.15" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.04"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.106.16" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.01"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.106.17" expl="VC for div_sb_qr" proved="true">
+   <proof prover="1"><result status="valid" time="1.32"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.106.18" expl="VC for div_sb_qr" proved="true">
+   <transf name="inline_all" proved="true" >
+    <goal name="VC div_sb_qr.106.18.0" expl="VC for div_sb_qr" proved="true">
+    <proof prover="1" memlimit="1000"><result status="valid" time="0.31"/></proof>
+    </goal>
+   </transf>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div_sb_qr.107" expl="loop variant decrease" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC div_sb_qr.107.0" expl="VC for div_sb_qr" proved="true">
+   <proof prover="0"><result status="valid" time="0.03"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.107.1" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.10"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div_sb_qr.108" expl="loop invariant preservation" proved="true">
+  <proof prover="2" timelimit="1"><result status="valid" time="0.38"/></proof>
+  </goal>
+  <goal name="VC div_sb_qr.109" expl="loop invariant preservation" proved="true">
+  <proof prover="2" timelimit="1"><result status="valid" time="0.23"/></proof>
+  </goal>
+  <goal name="VC div_sb_qr.110" expl="loop invariant preservation" proved="true">
+  <proof prover="2" timelimit="1"><result status="valid" time="0.49"/></proof>
+  </goal>
+  <goal name="VC div_sb_qr.111" expl="loop invariant preservation" proved="true">
+  <proof prover="2" memlimit="2000"><result status="valid" time="0.77"/></proof>
+  </goal>
+  <goal name="VC div_sb_qr.112" expl="loop invariant preservation" proved="true">
+  <proof prover="3"><result status="valid" time="0.05"/></proof>
+  </goal>
+  <goal name="VC div_sb_qr.113" expl="loop invariant preservation" proved="true">
+  <proof prover="3"><result status="valid" time="0.06"/></proof>
+  </goal>
+  <goal name="VC div_sb_qr.114" expl="loop invariant preservation" proved="true">
+  <proof prover="2"><result status="valid" time="0.70"/></proof>
+  </goal>
+  <goal name="VC div_sb_qr.115" expl="loop invariant preservation" proved="true">
+  <proof prover="3"><result status="valid" time="0.08"/></proof>
+  </goal>
+  <goal name="VC div_sb_qr.116" expl="loop invariant preservation" proved="true">
+  <proof prover="3"><result status="valid" time="0.08"/></proof>
+  </goal>
+  <goal name="VC div_sb_qr.117" expl="loop invariant preservation" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC div_sb_qr.117.0" expl="loop invariant preservation" proved="true">
+   <proof prover="3"><result status="valid" time="0.16"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.117.1" expl="loop invariant preservation" proved="true">
+   <transf name="introduce_premises" proved="true" >
+    <goal name="VC div_sb_qr.117.1.0" expl="loop invariant preservation" proved="true">
+    <transf name="inline_goal" proved="true" >
+     <goal name="VC div_sb_qr.117.1.0.0" expl="loop invariant preservation" proved="true">
+     <proof prover="3"><result status="valid" time="0.05"/></proof>
+     </goal>
+    </transf>
+    </goal>
+   </transf>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div_sb_qr.118" expl="loop invariant preservation" proved="true">
+  <proof prover="2" memlimit="2000"><result status="valid" time="0.82"/></proof>
+  </goal>
+  <goal name="VC div_sb_qr.119" expl="loop invariant preservation" proved="true">
+  <proof prover="2" memlimit="2000"><result status="valid" time="0.28"/></proof>
+  </goal>
+  <goal name="VC div_sb_qr.120" expl="loop invariant preservation" proved="true">
+  <proof prover="2"><result status="valid" time="0.35"/></proof>
+  <proof prover="4"><result status="valid" time="0.10"/></proof>
+  </goal>
+  <goal name="VC div_sb_qr.121" expl="loop invariant preservation" proved="true">
+  <proof prover="2" memlimit="2000"><result status="valid" time="0.23"/></proof>
+  </goal>
+  <goal name="VC div_sb_qr.122" expl="assertion" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC div_sb_qr.122.0" expl="VC for div_sb_qr" proved="true">
+   <proof prover="5"><result status="valid" time="0.28" steps="107"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.122.1" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.05"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.122.2" expl="VC for div_sb_qr" proved="true">
+   <proof prover="5"><result status="valid" time="0.39" steps="152"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.122.3" expl="VC for div_sb_qr" proved="true">
+   <proof prover="5"><result status="valid" time="0.41" steps="158"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.122.4" expl="VC for div_sb_qr" proved="true">
+   <proof prover="2" timelimit="1"><result status="valid" time="0.20"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div_sb_qr.123" expl="precondition" proved="true">
+  <proof prover="4"><result status="valid" time="1.83"/></proof>
+  </goal>
+  <goal name="VC div_sb_qr.124" expl="precondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.20"/></proof>
+  <proof prover="4"><result status="valid" time="1.76"/></proof>
+  </goal>
+  <goal name="VC div_sb_qr.125" expl="precondition" proved="true">
+  <proof prover="2" memlimit="2000"><result status="valid" time="0.10"/></proof>
+  </goal>
+  <goal name="VC div_sb_qr.126" expl="precondition" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC div_sb_qr.126.0" expl="precondition" proved="true">
+   <proof prover="2"><result status="valid" time="0.16"/></proof>
+   <proof prover="4"><result status="valid" time="0.04"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.126.1" expl="precondition" proved="true">
+   <proof prover="2"><result status="valid" time="0.13"/></proof>
+   <proof prover="4"><result status="valid" time="0.04"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div_sb_qr.127" expl="precondition" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC div_sb_qr.127.0" expl="precondition" proved="true">
+   <proof prover="1" memlimit="1000"><result status="valid" time="0.22"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.127.1" expl="precondition" proved="true">
+   <proof prover="1" memlimit="1000"><result status="valid" time="0.14"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div_sb_qr.128" expl="assertion" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC div_sb_qr.128.0" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.22"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.128.1" expl="VC for div_sb_qr" proved="true">
+   <proof prover="5"><result status="valid" time="0.37" steps="112"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.128.2" expl="VC for div_sb_qr" proved="true">
+   <proof prover="5"><result status="valid" time="0.40" steps="113"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.128.3" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.06"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.128.4" expl="VC for div_sb_qr" proved="true">
+   <proof prover="5"><result status="valid" time="0.45" steps="155"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.128.5" expl="VC for div_sb_qr" proved="true">
+   <proof prover="5"><result status="valid" time="0.44" steps="155"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.128.6" expl="VC for div_sb_qr" proved="true">
+   <proof prover="5"><result status="valid" time="0.38" steps="114"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.128.7" expl="VC for div_sb_qr" proved="true">
+   <proof prover="5"><result status="valid" time="0.44" steps="162"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.128.8" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.01"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.128.9" expl="VC for div_sb_qr" proved="true">
+   <proof prover="2" timelimit="1"><result status="valid" time="0.15"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div_sb_qr.129" expl="postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.17"/></proof>
+  </goal>
+  <goal name="VC div_sb_qr.130" expl="precondition" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC div_sb_qr.130.0" expl="precondition" proved="true">
+   <proof prover="2" memlimit="2000"><result status="valid" time="0.20"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.130.1" expl="precondition" proved="true">
+   <proof prover="3"><result status="valid" time="0.04"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div_sb_qr.131" expl="precondition" proved="true">
+  <proof prover="2" memlimit="2000"><result status="valid" time="0.14"/></proof>
+  </goal>
+  <goal name="VC div_sb_qr.132" expl="precondition" proved="true">
+  <proof prover="5"><result status="valid" time="0.26" steps="109"/></proof>
+  </goal>
+  <goal name="VC div_sb_qr.133" expl="precondition" proved="true">
+  <transf name="introduce_premises" proved="true" >
+   <goal name="VC div_sb_qr.133.0" expl="precondition" proved="true">
+   <transf name="inline_goal" proved="true" >
+    <goal name="VC div_sb_qr.133.0.0" expl="precondition" proved="true">
+    <proof prover="2" memlimit="2000"><result status="valid" time="0.06"/></proof>
+    </goal>
+   </transf>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div_sb_qr.134" expl="precondition" proved="true">
+  <transf name="introduce_premises" proved="true" >
+   <goal name="VC div_sb_qr.134.0" expl="precondition" proved="true">
+   <transf name="inline_goal" proved="true" >
+    <goal name="VC div_sb_qr.134.0.0" expl="precondition" proved="true">
+    <transf name="introduce_premises" proved="true" >
+     <goal name="VC div_sb_qr.134.0.0.0" expl="precondition" proved="true">
+     <transf name="inline_goal" proved="true" >
+      <goal name="VC div_sb_qr.134.0.0.0.0" expl="precondition" proved="true">
+      <transf name="split_all_full" proved="true" >
+       <goal name="VC div_sb_qr.134.0.0.0.0.0" expl="precondition" proved="true">
+       <proof prover="3" timelimit="10" memlimit="4000"><result status="valid" time="4.36"/></proof>
+       </goal>
+      </transf>
+      </goal>
+     </transf>
+     </goal>
+    </transf>
+    </goal>
+   </transf>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div_sb_qr.135" expl="integer overflow" proved="true">
+  <proof prover="2" memlimit="2000"><result status="valid" time="0.33"/></proof>
+  </goal>
+  <goal name="VC div_sb_qr.136" expl="precondition" proved="true">
+  <transf name="introduce_premises" proved="true" >
+   <goal name="VC div_sb_qr.136.0" expl="precondition" proved="true">
+   <transf name="inline_goal" proved="true" >
+    <goal name="VC div_sb_qr.136.0.0" expl="precondition" proved="true">
+    <proof prover="2" timelimit="1"><result status="valid" time="0.26"/></proof>
+    </goal>
+   </transf>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div_sb_qr.137" expl="precondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.44"/></proof>
+  </goal>
+  <goal name="VC div_sb_qr.138" expl="assertion" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC div_sb_qr.138.0" expl="assertion" proved="true">
+   <proof prover="2" memlimit="2000"><result status="valid" time="0.92"/></proof>
+   <proof prover="3" timelimit="5" memlimit="2000"><result status="valid" time="0.12"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.138.1" expl="VC for div_sb_qr" proved="true">
+   <proof prover="4"><result status="valid" time="0.04"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.138.2" expl="VC for div_sb_qr" proved="true">
+   <proof prover="2" timelimit="1"><result status="valid" time="0.36"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.138.3" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.15"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.138.4" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.04"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div_sb_qr.139" expl="precondition" proved="true">
+  <proof prover="2" memlimit="2000"><result status="valid" time="2.63"/></proof>
+  </goal>
+  <goal name="VC div_sb_qr.140" expl="postcondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC div_sb_qr.141" expl="assertion" proved="true">
+  <proof prover="2" timelimit="1"><result status="valid" time="0.24"/></proof>
+  </goal>
+  <goal name="VC div_sb_qr.142" expl="precondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.18"/></proof>
+  </goal>
+  <goal name="VC div_sb_qr.143" expl="precondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.29"/></proof>
+  </goal>
+  <goal name="VC div_sb_qr.144" expl="precondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.24"/></proof>
+  </goal>
+  <goal name="VC div_sb_qr.145" expl="precondition" proved="true">
+  <proof prover="4"><result status="valid" time="0.04"/></proof>
+  </goal>
+  <goal name="VC div_sb_qr.146" expl="precondition" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC div_sb_qr.146.0" expl="precondition" proved="true">
+   <proof prover="4" memlimit="2000"><result status="valid" time="0.04"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.146.1" expl="precondition" proved="true">
+   <proof prover="4" memlimit="2000"><result status="valid" time="0.06"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div_sb_qr.147" expl="precondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.50"/></proof>
+  </goal>
+  <goal name="VC div_sb_qr.148" expl="assertion" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC div_sb_qr.148.0" expl="VC for div_sb_qr" proved="true">
+   <proof prover="0"><result status="valid" time="0.03"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.148.1" expl="VC for div_sb_qr" proved="true">
+   <proof prover="2" timelimit="1"><result status="valid" time="0.30"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.148.2" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.10"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div_sb_qr.149" expl="precondition" proved="true">
+  <proof prover="2" memlimit="2000"><result status="valid" time="0.25"/></proof>
+  <proof prover="4" memlimit="2000"><result status="valid" time="0.04"/></proof>
+  </goal>
+  <goal name="VC div_sb_qr.150" expl="assertion" proved="true">
+  <proof prover="0"><result status="valid" time="0.04"/></proof>
+  </goal>
+  <goal name="VC div_sb_qr.151" expl="precondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.24"/></proof>
+  </goal>
+  <goal name="VC div_sb_qr.152" expl="precondition" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC div_sb_qr.152.0" expl="precondition" proved="true">
+   <proof prover="3"><result status="valid" time="0.04"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.152.1" expl="precondition" proved="true">
+   <transf name="introduce_premises" proved="true" >
+    <goal name="VC div_sb_qr.152.1.0" expl="precondition" proved="true">
+    <transf name="inline_goal" proved="true" >
+     <goal name="VC div_sb_qr.152.1.0.0" expl="precondition" proved="true">
+     <proof prover="3"><result status="valid" time="0.03"/></proof>
+     </goal>
+    </transf>
+    </goal>
+   </transf>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div_sb_qr.153" expl="assertion" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC div_sb_qr.153.0" expl="VC for div_sb_qr" proved="true">
+   <proof prover="0"><result status="valid" time="0.04"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.153.1" expl="VC for div_sb_qr" proved="true">
+   <proof prover="0"><result status="valid" time="0.03"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.153.2" expl="VC for div_sb_qr" proved="true">
+   <transf name="introduce_premises" proved="true" >
+    <goal name="VC div_sb_qr.153.2.0" expl="VC for div_sb_qr" proved="true">
+    <proof prover="0"><result status="valid" time="0.06"/></proof>
+    </goal>
+   </transf>
+   </goal>
+   <goal name="VC div_sb_qr.153.3" expl="VC for div_sb_qr" proved="true">
+   <proof prover="1"><result status="valid" time="3.30"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.153.4" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.10"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.153.5" expl="VC for div_sb_qr" proved="true">
+   <proof prover="1"><result status="valid" time="0.30"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div_sb_qr.154" expl="assertion" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC div_sb_qr.154.0" expl="VC for div_sb_qr" proved="true">
+   <proof prover="2" timelimit="1"><result status="valid" time="0.34"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.154.1" expl="VC for div_sb_qr" proved="true">
+   <proof prover="0"><result status="valid" time="0.03"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.154.2" expl="VC for div_sb_qr" proved="true">
+   <proof prover="2" timelimit="1"><result status="valid" time="0.35"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div_sb_qr.155" expl="assertion" proved="true">
+  <proof prover="2" memlimit="2000"><result status="valid" time="0.66"/></proof>
+  </goal>
+  <goal name="VC div_sb_qr.156" expl="assertion" proved="true">
+  <proof prover="2" timelimit="1"><result status="valid" time="0.36"/></proof>
+  </goal>
+  <goal name="VC div_sb_qr.157" expl="assertion" proved="true">
+  <transf name="introduce_premises" proved="true" >
+   <goal name="VC div_sb_qr.157.0" expl="assertion" proved="true">
+   <transf name="use_th" proved="true" arg1="lineardecision.EqPropMP">
+    <goal name="VC div_sb_qr.157.0.0" expl="assertion" proved="true">
+    <transf name="reflection_f" proved="true" arg1="mp_decision">
+     <goal name="VC div_sb_qr.157.0.0.0" expl="assertion" proved="true">
+     <transf name="apply" proved="true" arg1="HR">
+      <goal name="VC div_sb_qr.157.0.0.0.0" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.157.0.0.0.1" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.157.0.0.0.2" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.157.0.0.0.3" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.157.0.0.0.4" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.157.0.0.0.5" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.157.0.0.0.6" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.157.0.0.0.7" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.157.0.0.0.8" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.157.0.0.0.9" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.157.0.0.0.10" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.157.0.0.0.11" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.157.0.0.0.12" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.157.0.0.0.13" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.157.0.0.0.14" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.157.0.0.0.15" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.157.0.0.0.16" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.157.0.0.0.17" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.157.0.0.0.18" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.157.0.0.0.19" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.157.0.0.0.20" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.157.0.0.0.21" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.157.0.0.0.22" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.157.0.0.0.23" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.157.0.0.0.24" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.157.0.0.0.25" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.157.0.0.0.26" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.157.0.0.0.27" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.157.0.0.0.28" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.157.0.0.0.29" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.157.0.0.0.30" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.157.0.0.0.31" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.157.0.0.0.32" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.157.0.0.0.33" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.157.0.0.0.34" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.157.0.0.0.35" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.157.0.0.0.36" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.157.0.0.0.37" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.157.0.0.0.38" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.157.0.0.0.39" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.157.0.0.0.40" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.157.0.0.0.41" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.157.0.0.0.42" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.157.0.0.0.43" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.157.0.0.0.44" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.157.0.0.0.45" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.157.0.0.0.46" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.157.0.0.0.47" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.157.0.0.0.48" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.157.0.0.0.49" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.157.0.0.0.50" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.157.0.0.0.51" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.157.0.0.0.52" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.157.0.0.0.53" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.157.0.0.0.54" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.157.0.0.0.55" proved="true">
+      <proof prover="3"><result status="valid" time="0.30"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.157.0.0.0.56" proved="true">
+      <proof prover="3"><result status="valid" time="0.04"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.157.0.0.0.57" proved="true">
+      <proof prover="3"><result status="valid" time="0.30"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.157.0.0.0.58" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.157.0.0.0.59" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.157.0.0.0.60" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.157.0.0.0.61" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.157.0.0.0.62" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.157.0.0.0.63" proved="true">
+      <proof prover="3"><result status="valid" time="0.03"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.157.0.0.0.64" proved="true">
+      <proof prover="3"><result status="valid" time="0.03"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.157.0.0.0.65" proved="true">
+      <proof prover="3"><result status="valid" time="0.03"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.157.0.0.0.66" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.157.0.0.0.67" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.157.0.0.0.68" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.157.0.0.0.69" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.157.0.0.0.70" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.157.0.0.0.71" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.157.0.0.0.72" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.157.0.0.0.73" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.157.0.0.0.74" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.157.0.0.0.75" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.157.0.0.0.76" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.157.0.0.0.77" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.157.0.0.0.78" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.157.0.0.0.79" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.157.0.0.0.80" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.157.0.0.0.81" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.157.0.0.0.82" proved="true">
+      <proof prover="3"><result status="valid" time="0.32"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.157.0.0.0.83" proved="true">
+      <proof prover="3"><result status="valid" time="0.38"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.157.0.0.0.84" proved="true">
+      <proof prover="3"><result status="valid" time="0.29"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.157.0.0.0.85" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.157.0.0.0.86" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.157.0.0.0.87" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.157.0.0.0.88" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.157.0.0.0.89" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.157.0.0.0.90" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.157.0.0.0.91" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.157.0.0.0.92" proved="true">
+      <proof prover="3"><result status="valid" time="0.03"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.157.0.0.0.93" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.157.0.0.0.94" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.157.0.0.0.95" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.157.0.0.0.96" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.157.0.0.0.97" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.157.0.0.0.98" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.157.0.0.0.99" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.157.0.0.0.100" proved="true">
+      <proof prover="3"><result status="valid" time="0.34"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.157.0.0.0.101" proved="true">
+      <proof prover="3"><result status="valid" time="0.04"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.157.0.0.0.102" proved="true">
+      <proof prover="3"><result status="valid" time="0.04"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.157.0.0.0.103" proved="true">
+      <proof prover="3"><result status="valid" time="0.04"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.157.0.0.0.104" proved="true">
+      <proof prover="3"><result status="valid" time="0.04"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.157.0.0.0.105" proved="true">
+      <proof prover="3"><result status="valid" time="0.03"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.157.0.0.0.106" proved="true">
+      <proof prover="3"><result status="valid" time="0.04"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.157.0.0.0.107" proved="true">
+      <proof prover="3"><result status="valid" time="0.04"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.157.0.0.0.108" proved="true">
+      <proof prover="3"><result status="valid" time="0.04"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.157.0.0.0.109" proved="true">
+      <proof prover="3"><result status="valid" time="0.04"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.157.0.0.0.110" proved="true">
+      <proof prover="3"><result status="valid" time="0.03"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.157.0.0.0.111" proved="true">
+      <proof prover="3"><result status="valid" time="0.03"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.157.0.0.0.112" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.157.0.0.0.113" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.157.0.0.0.114" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.157.0.0.0.115" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.157.0.0.0.116" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.157.0.0.0.117" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.157.0.0.0.118" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.157.0.0.0.119" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.157.0.0.0.120" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.157.0.0.0.121" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.157.0.0.0.122" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.157.0.0.0.123" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.157.0.0.0.124" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.157.0.0.0.125" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.157.0.0.0.126" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.157.0.0.0.127" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.157.0.0.0.128" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.157.0.0.0.129" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.157.0.0.0.130" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.157.0.0.0.131" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.157.0.0.0.132" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.157.0.0.0.133" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.157.0.0.0.134" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.157.0.0.0.135" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.157.0.0.0.136" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.157.0.0.0.137" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.157.0.0.0.138" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.157.0.0.0.139" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.157.0.0.0.140" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.157.0.0.0.141" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.157.0.0.0.142" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.157.0.0.0.143" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.157.0.0.0.144" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.157.0.0.0.145" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.157.0.0.0.146" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.157.0.0.0.147" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.157.0.0.0.148" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.157.0.0.0.149" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.157.0.0.0.150" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.157.0.0.0.151" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.157.0.0.0.152" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.157.0.0.0.153" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.157.0.0.0.154" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.157.0.0.0.155" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.157.0.0.0.156" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.157.0.0.0.157" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.157.0.0.0.158" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.157.0.0.0.159" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.157.0.0.0.160" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.157.0.0.0.161" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.157.0.0.0.162" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.157.0.0.0.163" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.157.0.0.0.164" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.157.0.0.0.165" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.157.0.0.0.166" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.157.0.0.0.167" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.157.0.0.0.168" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.157.0.0.0.169" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.157.0.0.0.170" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.157.0.0.0.171" proved="true">
+      <proof prover="3"><result status="valid" time="0.01"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.157.0.0.0.172" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.157.0.0.0.173" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.157.0.0.0.174" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.157.0.0.0.175" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.157.0.0.0.176" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.157.0.0.0.177" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.157.0.0.0.178" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.157.0.0.0.179" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+     </transf>
+     </goal>
+     <goal name="VC div_sb_qr.157.0.0.1" proved="true">
+     <proof prover="2" timelimit="1"><result status="valid" time="0.38"/></proof>
+     </goal>
+     <goal name="VC div_sb_qr.157.0.0.2" proved="true">
+     <proof prover="2" timelimit="1"><result status="valid" time="0.46"/></proof>
+     </goal>
+    </transf>
+    </goal>
+   </transf>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div_sb_qr.158" expl="assertion" proved="true">
+  <proof prover="1" timelimit="10"><result status="valid" time="0.19"/></proof>
+  </goal>
+  <goal name="VC div_sb_qr.159" expl="postcondition" proved="true">
+  <transf name="introduce_premises" proved="true" >
+   <goal name="VC div_sb_qr.159.0" expl="postcondition" proved="true">
+   <transf name="use_th" proved="true" arg1="lineardecision.LinearDecisionIntMP">
+    <goal name="VC div_sb_qr.159.0.0" expl="postcondition" proved="true">
+    <transf name="reflection_f" proved="true" arg1="mp_decision">
+     <goal name="VC div_sb_qr.159.0.0.0" expl="postcondition" proved="true">
+     <proof prover="0"><result status="valid" time="3.50"/></proof>
+     </goal>
+     <goal name="VC div_sb_qr.159.0.0.1" proved="true">
+     <proof prover="2" timelimit="1"><result status="valid" time="0.44"/></proof>
+     </goal>
+     <goal name="VC div_sb_qr.159.0.0.2" proved="true">
+     <proof prover="2" timelimit="1"><result status="valid" time="0.39"/></proof>
+     </goal>
+    </transf>
+    </goal>
+   </transf>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div_sb_qr.160" expl="precondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.36"/></proof>
+  <proof prover="4"><result status="valid" time="0.04"/></proof>
+  </goal>
+  <goal name="VC div_sb_qr.161" expl="assertion" proved="true">
+  <proof prover="1" timelimit="10"><result status="valid" time="4.99"/></proof>
+  </goal>
+  <goal name="VC div_sb_qr.162" expl="assertion" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC div_sb_qr.162.0" expl="VC for div_sb_qr" proved="true">
+   <proof prover="2" timelimit="1"><result status="valid" time="0.25"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.162.1" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.06"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.162.2" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.14"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.162.3" expl="VC for div_sb_qr" proved="true">
+   <proof prover="2" timelimit="1"><result status="valid" time="0.25"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.162.4" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.07"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.162.5" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.07"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.162.6" expl="VC for div_sb_qr" proved="true">
+   <proof prover="2" timelimit="1"><result status="valid" time="0.28"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.162.7" expl="VC for div_sb_qr" proved="true">
+   <transf name="introduce_premises" proved="true" >
+    <goal name="VC div_sb_qr.162.7.0" expl="VC for div_sb_qr" proved="true">
+    <transf name="split_all_full" proved="true" >
+     <goal name="VC div_sb_qr.162.7.0.0" expl="VC for div_sb_qr" proved="true">
+     <proof prover="2" timelimit="10" memlimit="4000"><result status="valid" time="3.45"/></proof>
+     </goal>
+    </transf>
+    </goal>
+   </transf>
+   </goal>
+   <goal name="VC div_sb_qr.162.8" expl="VC for div_sb_qr" proved="true">
+   <proof prover="2" timelimit="1"><result status="valid" time="0.43"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.162.9" expl="VC for div_sb_qr" proved="true">
+   <proof prover="2" memlimit="2000"><result status="valid" time="0.40"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.162.10" expl="VC for div_sb_qr" proved="true">
+   <proof prover="2" timelimit="1"><result status="valid" time="0.38"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.162.11" expl="VC for div_sb_qr" proved="true">
+   <proof prover="2" timelimit="1"><result status="valid" time="0.42"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.162.12" expl="VC for div_sb_qr" proved="true">
+   <proof prover="2" timelimit="1"><result status="valid" time="0.28"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.162.13" expl="VC for div_sb_qr" proved="true">
+   <transf name="replace" proved="true" arg1="(power radix2 2)" arg2="(radix2 * radix2)">
+    <goal name="VC div_sb_qr.162.13.0" expl="VC for div_sb_qr" proved="true">
+    <proof prover="2" memlimit="2000"><result status="valid" time="4.43"/></proof>
+    </goal>
+    <goal name="VC div_sb_qr.162.13.1" proved="true">
+    <proof prover="3" timelimit="5" memlimit="2000"><result status="valid" time="0.04"/></proof>
+    </goal>
+   </transf>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div_sb_qr.163" expl="postcondition" proved="true">
+  <transf name="introduce_premises" proved="true" >
+   <goal name="VC div_sb_qr.163.0" expl="postcondition" proved="true">
+   <transf name="use_th" proved="true" arg1="lineardecision.LinearDecisionIntMP">
+    <goal name="VC div_sb_qr.163.0.0" expl="postcondition" proved="true">
+    <transf name="reflection_f" proved="true" arg1="mp_decision">
+     <goal name="VC div_sb_qr.163.0.0.0" expl="postcondition" proved="true">
+     <transf name="apply" proved="true" arg1="HR">
+      <goal name="VC div_sb_qr.163.0.0.0.0" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.163.0.0.0.1" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.163.0.0.0.2" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.163.0.0.0.3" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.163.0.0.0.4" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.163.0.0.0.5" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.163.0.0.0.6" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.163.0.0.0.7" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.163.0.0.0.8" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.163.0.0.0.9" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.163.0.0.0.10" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.163.0.0.0.11" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.163.0.0.0.12" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.163.0.0.0.13" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.163.0.0.0.14" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.163.0.0.0.15" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.163.0.0.0.16" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.163.0.0.0.17" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.163.0.0.0.18" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.163.0.0.0.19" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.163.0.0.0.20" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.163.0.0.0.21" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.163.0.0.0.22" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.163.0.0.0.23" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.163.0.0.0.24" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.163.0.0.0.25" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.163.0.0.0.26" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.163.0.0.0.27" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.163.0.0.0.28" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.163.0.0.0.29" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.163.0.0.0.30" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.163.0.0.0.31" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.163.0.0.0.32" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.163.0.0.0.33" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.163.0.0.0.34" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.163.0.0.0.35" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.163.0.0.0.36" proved="true">
+      <proof prover="3"><result status="valid" time="0.01"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.163.0.0.0.37" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.163.0.0.0.38" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.163.0.0.0.39" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.163.0.0.0.40" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.163.0.0.0.41" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.163.0.0.0.42" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.163.0.0.0.43" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.163.0.0.0.44" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.163.0.0.0.45" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.163.0.0.0.46" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.163.0.0.0.47" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.163.0.0.0.48" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.163.0.0.0.49" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.163.0.0.0.50" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.163.0.0.0.51" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.163.0.0.0.52" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.163.0.0.0.53" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.163.0.0.0.54" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.163.0.0.0.55" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.163.0.0.0.56" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.163.0.0.0.57" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.163.0.0.0.58" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.163.0.0.0.59" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.163.0.0.0.60" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.163.0.0.0.61" proved="true">
+      <proof prover="3"><result status="valid" time="0.27"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.163.0.0.0.62" proved="true">
+      <proof prover="3"><result status="valid" time="0.04"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.163.0.0.0.63" proved="true">
+      <proof prover="3"><result status="valid" time="0.33"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.163.0.0.0.64" proved="true">
+      <proof prover="3"><result status="valid" time="0.04"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.163.0.0.0.65" proved="true">
+      <proof prover="3"><result status="valid" time="0.04"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.163.0.0.0.66" proved="true">
+      <proof prover="3"><result status="valid" time="0.04"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.163.0.0.0.67" proved="true">
+      <proof prover="3"><result status="valid" time="0.04"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.163.0.0.0.68" proved="true">
+      <proof prover="3"><result status="valid" time="0.04"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.163.0.0.0.69" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.163.0.0.0.70" proved="true">
+      <proof prover="3"><result status="valid" time="0.03"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.163.0.0.0.71" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.163.0.0.0.72" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.163.0.0.0.73" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.163.0.0.0.74" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.163.0.0.0.75" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.163.0.0.0.76" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.163.0.0.0.77" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.163.0.0.0.78" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.163.0.0.0.79" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.163.0.0.0.80" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.163.0.0.0.81" proved="true">
+      <proof prover="3"><result status="valid" time="0.03"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.163.0.0.0.82" proved="true">
+      <proof prover="3"><result status="valid" time="0.04"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.163.0.0.0.83" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.163.0.0.0.84" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.163.0.0.0.85" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.163.0.0.0.86" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.163.0.0.0.87" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.163.0.0.0.88" proved="true">
+      <proof prover="3"><result status="valid" time="0.30"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.163.0.0.0.89" proved="true">
+      <proof prover="3"><result status="valid" time="0.22"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.163.0.0.0.90" proved="true">
+      <proof prover="3"><result status="valid" time="0.26"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.163.0.0.0.91" proved="true">
+      <proof prover="3"><result status="valid" time="0.03"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.163.0.0.0.92" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.163.0.0.0.93" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.163.0.0.0.94" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.163.0.0.0.95" proved="true">
+      <proof prover="3"><result status="valid" time="0.04"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.163.0.0.0.96" proved="true">
+      <proof prover="3"><result status="valid" time="0.04"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.163.0.0.0.97" proved="true">
+      <proof prover="3"><result status="valid" time="0.04"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.163.0.0.0.98" proved="true">
+      <proof prover="3"><result status="valid" time="0.03"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.163.0.0.0.99" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.163.0.0.0.100" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.163.0.0.0.101" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.163.0.0.0.102" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.163.0.0.0.103" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.163.0.0.0.104" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.163.0.0.0.105" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.163.0.0.0.106" proved="true">
+      <proof prover="3"><result status="valid" time="0.21"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.163.0.0.0.107" proved="true">
+      <proof prover="3"><result status="valid" time="0.04"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.163.0.0.0.108" proved="true">
+      <proof prover="3"><result status="valid" time="0.04"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.163.0.0.0.109" proved="true">
+      <proof prover="3"><result status="valid" time="0.04"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.163.0.0.0.110" proved="true">
+      <proof prover="3"><result status="valid" time="0.04"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.163.0.0.0.111" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.163.0.0.0.112" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.163.0.0.0.113" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.163.0.0.0.114" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.163.0.0.0.115" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.163.0.0.0.116" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.163.0.0.0.117" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.163.0.0.0.118" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.163.0.0.0.119" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.163.0.0.0.120" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.163.0.0.0.121" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.163.0.0.0.122" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.163.0.0.0.123" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.163.0.0.0.124" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.163.0.0.0.125" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.163.0.0.0.126" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.163.0.0.0.127" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.163.0.0.0.128" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.163.0.0.0.129" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.163.0.0.0.130" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.163.0.0.0.131" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.163.0.0.0.132" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.163.0.0.0.133" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.163.0.0.0.134" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.163.0.0.0.135" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.163.0.0.0.136" proved="true">
+      <proof prover="3"><result status="valid" time="0.03"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.163.0.0.0.137" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.163.0.0.0.138" proved="true">
+      <proof prover="3"><result status="valid" time="0.03"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.163.0.0.0.139" proved="true">
+      <proof prover="3"><result status="valid" time="0.03"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.163.0.0.0.140" proved="true">
+      <proof prover="3"><result status="valid" time="0.03"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.163.0.0.0.141" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.163.0.0.0.142" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.163.0.0.0.143" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.163.0.0.0.144" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.163.0.0.0.145" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.163.0.0.0.146" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.163.0.0.0.147" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.163.0.0.0.148" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.163.0.0.0.149" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.163.0.0.0.150" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.163.0.0.0.151" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.163.0.0.0.152" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.163.0.0.0.153" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.163.0.0.0.154" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.163.0.0.0.155" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.163.0.0.0.156" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.163.0.0.0.157" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.163.0.0.0.158" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.163.0.0.0.159" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.163.0.0.0.160" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.163.0.0.0.161" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.163.0.0.0.162" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.163.0.0.0.163" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.163.0.0.0.164" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.163.0.0.0.165" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.163.0.0.0.166" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.163.0.0.0.167" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.163.0.0.0.168" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.163.0.0.0.169" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.163.0.0.0.170" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.163.0.0.0.171" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.163.0.0.0.172" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.163.0.0.0.173" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.163.0.0.0.174" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.163.0.0.0.175" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.163.0.0.0.176" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.163.0.0.0.177" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.163.0.0.0.178" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.163.0.0.0.179" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.163.0.0.0.180" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.163.0.0.0.181" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.163.0.0.0.182" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.163.0.0.0.183" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.163.0.0.0.184" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.163.0.0.0.185" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+     </transf>
+     </goal>
+     <goal name="VC div_sb_qr.163.0.0.1" proved="true">
+     <proof prover="2" timelimit="1"><result status="valid" time="0.44"/></proof>
+     </goal>
+     <goal name="VC div_sb_qr.163.0.0.2" proved="true">
+     <proof prover="2" timelimit="1"><result status="valid" time="0.46"/></proof>
+     </goal>
+    </transf>
+    </goal>
+   </transf>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div_sb_qr.164" expl="postcondition" proved="true">
+  <proof prover="2" timelimit="1"><result status="valid" time="0.42"/></proof>
+  </goal>
+  <goal name="VC div_sb_qr.165" expl="assertion" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC div_sb_qr.165.0" expl="assertion" proved="true">
+   <transf name="inline_all" proved="true" >
+    <goal name="VC div_sb_qr.165.0.0" expl="assertion" proved="true">
+    <proof prover="0"><result status="valid" time="0.05"/></proof>
+    <proof prover="1"><result status="valid" time="0.21"/></proof>
+    </goal>
+   </transf>
+   </goal>
+   <goal name="VC div_sb_qr.165.1" expl="assertion" proved="true">
+   <proof prover="3"><result status="valid" time="0.05"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div_sb_qr.166" expl="precondition" proved="true">
+  <proof prover="4"><result status="valid" time="0.04"/></proof>
+  </goal>
+  <goal name="VC div_sb_qr.167" expl="precondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.38"/></proof>
+  </goal>
+  <goal name="VC div_sb_qr.168" expl="assertion" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC div_sb_qr.168.0" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.07"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.168.1" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.09"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.168.2" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.168.3" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.168.4" expl="VC for div_sb_qr" proved="true">
+   <transf name="introduce_premises" proved="true" >
+    <goal name="VC div_sb_qr.168.4.0" expl="VC for div_sb_qr" proved="true">
+    <transf name="apply" proved="true" arg1="prod_compat_r">
+     <goal name="VC div_sb_qr.168.4.0.0" proved="true">
+     <proof prover="3"><result status="valid" time="0.07"/></proof>
+     </goal>
+     <goal name="VC div_sb_qr.168.4.0.1" proved="true">
+     <proof prover="3"><result status="valid" time="0.06"/></proof>
+     </goal>
+    </transf>
+    </goal>
+   </transf>
+   </goal>
+   <goal name="VC div_sb_qr.168.5" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.07"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.168.6" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.06"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.168.7" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.25"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.168.8" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.06"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.168.9" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.06"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.168.10" expl="VC for div_sb_qr" proved="true">
+   <transf name="introduce_premises" proved="true" >
+    <goal name="VC div_sb_qr.168.10.0" expl="VC for div_sb_qr" proved="true">
+    <transf name="inline_goal" proved="true" >
+     <goal name="VC div_sb_qr.168.10.0.0" expl="VC for div_sb_qr" proved="true">
+     <transf name="unfold" proved="true" arg1="value">
+      <goal name="VC div_sb_qr.168.10.0.0.0" expl="VC for div_sb_qr" proved="true">
+      <transf name="apply" proved="true" arg1="value_sub_lower_bound">
+      </transf>
+      </goal>
+     </transf>
+     </goal>
+    </transf>
+    </goal>
+   </transf>
+   </goal>
+   <goal name="VC div_sb_qr.168.11" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.12"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.168.12" expl="VC for div_sb_qr" proved="true">
+   <transf name="introduce_premises" proved="true" >
+    <goal name="VC div_sb_qr.168.12.0" expl="VC for div_sb_qr" proved="true">
+    <transf name="inline_goal" proved="true" >
+     <goal name="VC div_sb_qr.168.12.0.0" expl="VC for div_sb_qr" proved="true">
+     <transf name="cut" proved="true" arg1="(0 &lt;= x12 /\ 0 &lt;= power radix2 sy)">
+      <goal name="VC div_sb_qr.168.12.0.0.0" expl="VC for div_sb_qr" proved="true">
+      <proof prover="1"><result status="valid" time="0.65"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.168.12.0.0.1" proved="true">
+      <proof prover="3" timelimit="5" memlimit="2000"><result status="valid" time="0.05"/></proof>
+      </goal>
+     </transf>
+     </goal>
+    </transf>
+    </goal>
+   </transf>
+   </goal>
+   <goal name="VC div_sb_qr.168.13" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.04"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.168.14" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.04"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.168.15" expl="VC for div_sb_qr" proved="true">
+   <proof prover="0"><result status="valid" time="4.02"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.168.16" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.04"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.168.17" expl="VC for div_sb_qr" proved="true">
+   <proof prover="0"><result status="valid" time="0.74"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.168.18" expl="VC for div_sb_qr" proved="true">
+   <proof prover="0"><result status="valid" time="0.58"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div_sb_qr.169" expl="postcondition" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC div_sb_qr.169.0" expl="postcondition" proved="true">
+   <proof prover="1" memlimit="1000"><result status="valid" time="0.28"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.169.1" expl="postcondition" proved="true">
+   <proof prover="1" memlimit="1000"><result status="valid" time="0.30"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div_sb_qr.170" expl="precondition" proved="true">
+  <proof prover="4"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC div_sb_qr.171" expl="precondition" proved="true">
+  <proof prover="4"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC div_sb_qr.172" expl="assertion" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC div_sb_qr.172.0" expl="VC for div_sb_qr" proved="true">
+   <transf name="inline_all" proved="true" >
+    <goal name="VC div_sb_qr.172.0.0" expl="VC for div_sb_qr" proved="true">
+    <proof prover="1"><result status="valid" time="0.32"/></proof>
+    </goal>
+   </transf>
+   </goal>
+   <goal name="VC div_sb_qr.172.1" expl="VC for div_sb_qr" proved="true">
+   <proof prover="1" memlimit="1000"><result status="valid" time="0.17"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.172.2" expl="VC for div_sb_qr" proved="true">
+   <proof prover="1"><result status="valid" time="2.10"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.172.3" expl="VC for div_sb_qr" proved="true">
+   <proof prover="1"><result status="valid" time="2.31"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.172.4" expl="VC for div_sb_qr" proved="true">
+   <proof prover="1" memlimit="1000"><result status="valid" time="0.19"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div_sb_qr.173" expl="assertion" proved="true">
+  <proof prover="3"><result status="valid" time="0.25"/></proof>
+  </goal>
+  <goal name="VC div_sb_qr.174" expl="assertion" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC div_sb_qr.174.0" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.05"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.174.1" expl="VC for div_sb_qr" proved="true">
+   <proof prover="2" timelimit="1"><result status="valid" time="0.32"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.174.2" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.13"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.174.3" expl="VC for div_sb_qr" proved="true">
+   <proof prover="1"><result status="valid" time="0.26"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.174.4" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.10"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.174.5" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.10"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.174.6" expl="VC for div_sb_qr" proved="true">
+   <proof prover="0"><result status="valid" time="0.05"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.174.7" expl="VC for div_sb_qr" proved="true">
+   <proof prover="1"><result status="valid" time="0.92"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.174.8" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.174.9" expl="VC for div_sb_qr" proved="true">
+   <proof prover="1"><result status="valid" time="0.30"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.174.10" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.11"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.174.11" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.174.12" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.11"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.174.13" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.06"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.174.14" expl="VC for div_sb_qr" proved="true">
+   <proof prover="0"><result status="valid" time="3.06"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.174.15" expl="VC for div_sb_qr" proved="true">
+   <proof prover="1"><result status="valid" time="0.25"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.174.16" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.174.17" expl="VC for div_sb_qr" proved="true">
+   <proof prover="1"><result status="valid" time="0.31"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.174.18" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.174.19" expl="VC for div_sb_qr" proved="true">
+   <proof prover="0"><result status="valid" time="0.04"/></proof>
+   <proof prover="2" memlimit="2000"><result status="valid" time="3.89"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.174.20" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.31"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.174.21" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.174.22" expl="VC for div_sb_qr" proved="true">
+   <proof prover="0"><result status="valid" time="0.04"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.174.23" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.174.24" expl="VC for div_sb_qr" proved="true">
+   <proof prover="0"><result status="valid" time="0.06"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.174.25" expl="VC for div_sb_qr" proved="true">
+   <proof prover="0"><result status="valid" time="0.06"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.174.26" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.174.27" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.01"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.174.28" expl="VC for div_sb_qr" proved="true">
+   <proof prover="1"><result status="valid" time="0.91"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.174.29" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.04"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.174.30" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.08"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div_sb_qr.175" expl="postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.36"/></proof>
+  </goal>
+  <goal name="VC div_sb_qr.176" expl="assertion" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC div_sb_qr.176.0" expl="assertion" proved="true">
+   <proof prover="3"><result status="valid" time="0.10"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.176.1" expl="assertion" proved="true">
+   <proof prover="3"><result status="valid" time="0.06"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.176.2" expl="assertion" proved="true">
+   <proof prover="3"><result status="valid" time="0.07"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.176.3" expl="assertion" proved="true">
+   <proof prover="3"><result status="valid" time="0.32"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.176.4" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.08"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.176.5" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.08"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.176.6" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.29"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div_sb_qr.177" expl="precondition" proved="true">
+  <proof prover="2" memlimit="2000"><result status="valid" time="3.62"/></proof>
+  </goal>
+  <goal name="VC div_sb_qr.178" expl="integer overflow" proved="true">
+  <proof prover="4"><result status="valid" time="0.25"/></proof>
+  </goal>
+  <goal name="VC div_sb_qr.179" expl="integer overflow" proved="true">
+  <proof prover="2"><result status="valid" time="0.52"/></proof>
+  </goal>
+  <goal name="VC div_sb_qr.180" expl="precondition" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC div_sb_qr.180.0" expl="VC for div_sb_qr" proved="true">
+   <proof prover="4"><result status="valid" time="0.08"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.180.1" expl="VC for div_sb_qr" proved="true">
+   <proof prover="4"><result status="valid" time="0.05"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div_sb_qr.181" expl="precondition" proved="true">
+  <proof prover="2" memlimit="2000"><result status="valid" time="5.16"/></proof>
+  </goal>
+  <goal name="VC div_sb_qr.182" expl="precondition" proved="true">
+  <transf name="introduce_premises" proved="true" >
+   <goal name="VC div_sb_qr.182.0" expl="precondition" proved="true">
+   <transf name="inline_goal" proved="true" >
+    <goal name="VC div_sb_qr.182.0.0" expl="precondition" proved="true">
+    <proof prover="2" timelimit="20" memlimit="1500"><result status="valid" time="0.28"/></proof>
+    </goal>
+   </transf>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div_sb_qr.183" expl="assertion" proved="true">
+  <transf name="introduce_premises" proved="true" >
+   <goal name="VC div_sb_qr.183.0" expl="assertion" proved="true">
+   <transf name="inline_goal" proved="true" >
+    <goal name="VC div_sb_qr.183.0.0" expl="assertion" proved="true">
+    <proof prover="1"><result status="valid" time="0.26"/></proof>
+    </goal>
+   </transf>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div_sb_qr.184" expl="precondition" proved="true">
+  <proof prover="2" memlimit="2000"><result status="valid" time="4.72"/></proof>
+  </goal>
+  <goal name="VC div_sb_qr.185" expl="postcondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.04"/></proof>
+  </goal>
+  <goal name="VC div_sb_qr.186" expl="assertion" proved="true">
+  <proof prover="3"><result status="valid" time="0.08"/></proof>
+  </goal>
+  <goal name="VC div_sb_qr.187" expl="precondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.07"/></proof>
+  <proof prover="4"><result status="valid" time="0.05"/></proof>
+  </goal>
+  <goal name="VC div_sb_qr.188" expl="assertion" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC div_sb_qr.188.0" expl="VC for div_sb_qr" proved="true">
+   <proof prover="0"><result status="valid" time="0.04"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.188.1" expl="VC for div_sb_qr" proved="true">
+   <proof prover="0"><result status="valid" time="4.36"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.188.2" expl="VC for div_sb_qr" proved="true">
+   <proof prover="0"><result status="valid" time="0.04"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.188.3" expl="VC for div_sb_qr" proved="true">
+   <proof prover="0"><result status="valid" time="0.68"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.188.4" expl="VC for div_sb_qr" proved="true">
+   <proof prover="2" timelimit="1"><result status="valid" time="0.32"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.188.5" expl="VC for div_sb_qr" proved="true">
+   <proof prover="2" timelimit="1"><result status="valid" time="0.64"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.188.6" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.04"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.188.7" expl="VC for div_sb_qr" proved="true">
+   <proof prover="2" timelimit="1"><result status="valid" time="0.38"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div_sb_qr.189" expl="assertion" proved="true">
+  <proof prover="2" timelimit="1"><result status="valid" time="0.76"/></proof>
+  </goal>
+  <goal name="VC div_sb_qr.190" expl="precondition" proved="true">
+  <proof prover="4"><result status="valid" time="0.14"/></proof>
+  </goal>
+  <goal name="VC div_sb_qr.191" expl="assertion" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC div_sb_qr.191.0" expl="VC for div_sb_qr" proved="true">
+   <proof prover="0"><result status="valid" time="0.04"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.191.1" expl="VC for div_sb_qr" proved="true">
+   <transf name="introduce_premises" proved="true" >
+    <goal name="VC div_sb_qr.191.1.0" expl="VC for div_sb_qr" proved="true">
+    <proof prover="0"><result status="valid" time="0.07"/></proof>
+    </goal>
+   </transf>
+   </goal>
+   <goal name="VC div_sb_qr.191.2" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.191.3" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.191.4" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.191.5" expl="VC for div_sb_qr" proved="true">
+   <proof prover="0"><result status="valid" time="0.05"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.191.6" expl="VC for div_sb_qr" proved="true">
+   <transf name="introduce_premises" proved="true" >
+    <goal name="VC div_sb_qr.191.6.0" expl="VC for div_sb_qr" proved="true">
+    <transf name="cut" proved="true" arg1="((power radix2 (int32&#39;int sy - 1) * (uint64&#39;int x1 + radix2 * c&#39;))=(power radix2 (int32&#39;int sy - 1) * uint64&#39;int x1) + (power radix2 (int32&#39;int sy) * c&#39;))">
+     <goal name="VC div_sb_qr.191.6.0.0" expl="VC for div_sb_qr" proved="true">
+     <proof prover="3" timelimit="5" memlimit="2000"><result status="valid" time="0.01"/></proof>
+     </goal>
+     <goal name="VC div_sb_qr.191.6.0.1" proved="true">
+     <proof prover="1"><result status="valid" time="0.53"/></proof>
+     </goal>
+    </transf>
+    </goal>
+   </transf>
+   </goal>
+   <goal name="VC div_sb_qr.191.7" expl="VC for div_sb_qr" proved="true">
+   <proof prover="2" timelimit="1"><result status="valid" time="0.53"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.191.8" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.10"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.191.9" expl="VC for div_sb_qr" proved="true">
+   <proof prover="2" memlimit="2000"><result status="valid" time="6.70"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.191.10" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.07"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.191.11" expl="VC for div_sb_qr" proved="true">
+   <proof prover="0"><result status="valid" time="1.24"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.191.12" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.191.13" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.191.14" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.16"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.191.15" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.16"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.191.16" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.08"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.191.17" expl="VC for div_sb_qr" proved="true">
+   <proof prover="1"><result status="valid" time="0.34"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div_sb_qr.192" expl="postcondition" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC div_sb_qr.192.0" expl="postcondition" proved="true">
+   <proof prover="2"><result status="valid" time="0.34"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.192.1" expl="postcondition" proved="true">
+   <proof prover="2"><result status="valid" time="0.30"/></proof>
+   <proof prover="4"><result status="valid" time="0.12"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div_sb_qr.193" expl="integer overflow" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC div_sb_qr.193.0" expl="integer overflow" proved="true">
+   <proof prover="2" timelimit="1"><result status="valid" time="0.60"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.193.1" expl="integer overflow" proved="true">
+   <transf name="split_goal_right" proved="true" >
+    <goal name="VC div_sb_qr.193.1.0" expl="integer overflow" proved="true">
+    <proof prover="3"><result status="valid" time="0.10"/></proof>
+    </goal>
+    <goal name="VC div_sb_qr.193.1.1" expl="integer overflow" proved="true">
+    <proof prover="3"><result status="valid" time="0.06"/></proof>
+    </goal>
+   </transf>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div_sb_qr.194" expl="assertion" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC div_sb_qr.194.0" expl="VC for div_sb_qr" proved="true">
+   <proof prover="1"><result status="valid" time="0.28"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.194.1" expl="VC for div_sb_qr" proved="true">
+   <proof prover="1"><result status="valid" time="0.31"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.194.2" expl="VC for div_sb_qr" proved="true">
+   <transf name="introduce_premises" proved="true" >
+    <goal name="VC div_sb_qr.194.2.0" expl="VC for div_sb_qr" proved="true">
+    <transf name="replace" proved="true" arg1="(uint64&#39;int ql1)" arg2="(uint64&#39;int ql+1)">
+     <goal name="VC div_sb_qr.194.2.0.0" expl="VC for div_sb_qr" proved="true">
+     <proof prover="3"><result status="valid" time="0.01"/></proof>
+     </goal>
+     <goal name="VC div_sb_qr.194.2.0.1" proved="true">
+     <proof prover="2" timelimit="1"><result status="valid" time="0.07"/></proof>
+     </goal>
+    </transf>
+    </goal>
+   </transf>
+   </goal>
+   <goal name="VC div_sb_qr.194.3" expl="VC for div_sb_qr" proved="true">
+   <proof prover="2" timelimit="1"><result status="valid" time="0.10"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.194.4" expl="VC for div_sb_qr" proved="true">
+   <proof prover="0"><result status="valid" time="0.03"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div_sb_qr.195" expl="precondition" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC div_sb_qr.195.0" expl="VC for div_sb_qr" proved="true">
+   <proof prover="2"><result status="valid" time="0.91"/></proof>
+   <proof prover="4"><result status="valid" time="0.24"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.195.1" expl="VC for div_sb_qr" proved="true">
+   <proof prover="2"><result status="valid" time="0.70"/></proof>
+   <proof prover="4"><result status="valid" time="0.33"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div_sb_qr.196" expl="precondition" proved="true">
+  <proof prover="2" memlimit="2000"><result status="valid" time="0.44"/></proof>
+  </goal>
+  <goal name="VC div_sb_qr.197" expl="precondition" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC div_sb_qr.197.0" expl="precondition" proved="true">
+   <proof prover="4"><result status="valid" time="0.09"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.197.1" expl="precondition" proved="true">
+   <proof prover="4"><result status="valid" time="0.06"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div_sb_qr.198" expl="precondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.83"/></proof>
+  </goal>
+  <goal name="VC div_sb_qr.199" expl="precondition" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC div_sb_qr.199.0" expl="precondition" proved="true">
+   <proof prover="1" memlimit="1000"><result status="valid" time="0.30"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.199.1" expl="precondition" proved="true">
+   <proof prover="3"><result status="valid" time="0.08"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div_sb_qr.200" expl="precondition" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC div_sb_qr.200.0" expl="precondition" proved="true">
+   <proof prover="2"><result status="valid" time="0.50"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.200.1" expl="precondition" proved="true">
+   <proof prover="4"><result status="valid" time="0.13"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div_sb_qr.201" expl="precondition" proved="true">
+  <proof prover="2" memlimit="2000"><result status="valid" time="0.40"/></proof>
+  </goal>
+  <goal name="VC div_sb_qr.202" expl="assertion" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC div_sb_qr.202.0" expl="VC for div_sb_qr" proved="true">
+   <proof prover="2" timelimit="1"><result status="valid" time="0.86"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.202.1" expl="VC for div_sb_qr" proved="true">
+   <proof prover="2" timelimit="1"><result status="valid" time="0.87"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.202.2" expl="VC for div_sb_qr" proved="true">
+   <proof prover="2" timelimit="1"><result status="valid" time="0.92"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.202.3" expl="VC for div_sb_qr" proved="true">
+   <transf name="introduce_premises" proved="true" >
+    <goal name="VC div_sb_qr.202.3.0" expl="VC for div_sb_qr" proved="true">
+    <transf name="inline_goal" proved="true" >
+     <goal name="VC div_sb_qr.202.3.0.0" expl="VC for div_sb_qr" proved="true">
+     <proof prover="0"><result status="valid" time="0.38"/></proof>
+     </goal>
+    </transf>
+    </goal>
+   </transf>
+   </goal>
+   <goal name="VC div_sb_qr.202.4" expl="VC for div_sb_qr" proved="true">
+   <proof prover="2" timelimit="1"><result status="valid" time="0.49"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.202.5" expl="VC for div_sb_qr" proved="true">
+   <proof prover="2" timelimit="1"><result status="valid" time="0.64"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.202.6" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.202.7" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.11"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.202.8" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.03"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.202.9" expl="VC for div_sb_qr" proved="true">
+   <proof prover="0"><result status="valid" time="0.03"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.202.10" expl="VC for div_sb_qr" proved="true">
+   <proof prover="0"><result status="valid" time="3.77"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.202.11" expl="VC for div_sb_qr" proved="true">
+   <proof prover="0"><result status="valid" time="0.03"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.202.12" expl="VC for div_sb_qr" proved="true">
+   <proof prover="2" timelimit="1"><result status="valid" time="0.61"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.202.13" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.04"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.202.14" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.15"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.202.15" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.06"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.202.16" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.202.17" expl="VC for div_sb_qr" proved="true">
+   <proof prover="0"><result status="valid" time="0.07"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.202.18" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.03"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.202.19" expl="VC for div_sb_qr" proved="true">
+   <proof prover="0"><result status="valid" time="0.05"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.202.20" expl="VC for div_sb_qr" proved="true">
+   <proof prover="2" timelimit="1"><result status="valid" time="0.41"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.202.21" expl="VC for div_sb_qr" proved="true">
+   <proof prover="0"><result status="valid" time="0.04"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.202.22" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.202.23" expl="VC for div_sb_qr" proved="true">
+   <proof prover="0"><result status="valid" time="0.04"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.202.24" expl="VC for div_sb_qr" proved="true">
+   <proof prover="2" timelimit="1"><result status="valid" time="0.47"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.202.25" expl="VC for div_sb_qr" proved="true">
+   <proof prover="0"><result status="valid" time="0.04"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.202.26" expl="VC for div_sb_qr" proved="true">
+   <proof prover="0"><result status="valid" time="0.03"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.202.27" expl="VC for div_sb_qr" proved="true">
+   <proof prover="2" timelimit="1"><result status="valid" time="0.50"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.202.28" expl="VC for div_sb_qr" proved="true">
+   <proof prover="2" timelimit="1"><result status="valid" time="0.52"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.202.29" expl="VC for div_sb_qr" proved="true">
+   <proof prover="1"><result status="valid" time="4.67"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.202.30" expl="VC for div_sb_qr" proved="true">
+   <proof prover="2" timelimit="1"><result status="valid" time="0.44"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.202.31" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.40"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.202.32" expl="VC for div_sb_qr" proved="true">
+   <transf name="introduce_premises" proved="true" >
+    <goal name="VC div_sb_qr.202.32.0" expl="VC for div_sb_qr" proved="true">
+    <transf name="inline_goal" proved="true" >
+     <goal name="VC div_sb_qr.202.32.0.0" expl="VC for div_sb_qr" proved="true">
+     <proof prover="0"><result status="valid" time="0.30"/></proof>
+     </goal>
+    </transf>
+    </goal>
+   </transf>
+   </goal>
+   <goal name="VC div_sb_qr.202.33" expl="VC for div_sb_qr" proved="true">
+   <proof prover="0"><result status="valid" time="0.04"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.202.34" expl="VC for div_sb_qr" proved="true">
+   <proof prover="2" timelimit="1"><result status="valid" time="0.57"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.202.35" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.07"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.202.36" expl="VC for div_sb_qr" proved="true">
+   <proof prover="0"><result status="valid" time="0.04"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.202.37" expl="VC for div_sb_qr" proved="true">
+   <proof prover="0"><result status="valid" time="0.17"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.202.38" expl="VC for div_sb_qr" proved="true">
+   <proof prover="2" timelimit="1"><result status="valid" time="0.58"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.202.39" expl="VC for div_sb_qr" proved="true">
+   <proof prover="2" timelimit="1"><result status="valid" time="0.42"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.202.40" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.202.41" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.202.42" expl="VC for div_sb_qr" proved="true">
+   <proof prover="0"><result status="valid" time="0.06"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.202.43" expl="VC for div_sb_qr" proved="true">
+   <proof prover="0"><result status="valid" time="0.06"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.202.44" expl="VC for div_sb_qr" proved="true">
+   <proof prover="2" timelimit="1"><result status="valid" time="0.66"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.202.45" expl="VC for div_sb_qr" proved="true">
+   <proof prover="0"><result status="valid" time="1.14"/></proof>
+   <proof prover="2" memlimit="2000"><result status="valid" time="7.18"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.202.46" expl="VC for div_sb_qr" proved="true">
+   <proof prover="0"><result status="valid" time="0.43"/></proof>
+   <proof prover="2" memlimit="2000"><result status="valid" time="7.50"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.202.47" expl="VC for div_sb_qr" proved="true">
+   <proof prover="0"><result status="valid" time="0.05"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.202.48" expl="VC for div_sb_qr" proved="true">
+   <proof prover="0"><result status="valid" time="0.05"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.202.49" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.03"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.202.50" expl="VC for div_sb_qr" proved="true">
+   <proof prover="0"><result status="valid" time="0.48"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.202.51" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.04"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.202.52" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.202.53" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.01"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.202.54" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.07"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.202.55" expl="VC for div_sb_qr" proved="true">
+   <proof prover="2" timelimit="1"><result status="valid" time="0.74"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div_sb_qr.203" expl="assertion" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC div_sb_qr.203.0" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.08"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.203.1" expl="VC for div_sb_qr" proved="true">
+   <proof prover="2" timelimit="1"><result status="valid" time="0.96"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.203.2" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.12"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.203.3" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.203.4" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.03"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.203.5" expl="VC for div_sb_qr" proved="true">
+   <proof prover="1"><result status="valid" time="1.01"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.203.6" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.18"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.203.7" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.10"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.203.8" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.17"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.203.9" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.28"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.203.10" expl="VC for div_sb_qr" proved="true">
+   <proof prover="0"><result status="valid" time="0.03"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.203.11" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.11"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div_sb_qr.204" expl="assertion" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC div_sb_qr.204.0" expl="VC for div_sb_qr" proved="true">
+   <proof prover="1"><result status="valid" time="1.56"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.204.1" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.204.2" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.32"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.204.3" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.15"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.204.4" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.04"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.204.5" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.204.6" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.16"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.204.7" expl="VC for div_sb_qr" proved="true">
+   <proof prover="2" timelimit="1"><result status="valid" time="0.84"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.204.8" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.16"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.204.9" expl="VC for div_sb_qr" proved="true">
+   <proof prover="0"><result status="valid" time="0.05"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.204.10" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.204.11" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.32"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.204.12" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.16"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.204.13" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.09"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.204.14" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.204.15" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.16"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.204.16" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.04"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.204.17" expl="VC for div_sb_qr" proved="true">
+   <proof prover="1"><result status="valid" time="1.29"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.204.18" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.10"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div_sb_qr.205" expl="loop variant decrease" proved="true">
+  <proof prover="4" memlimit="2000"><result status="valid" time="0.12"/></proof>
+  </goal>
+  <goal name="VC div_sb_qr.206" expl="loop invariant preservation" proved="true">
+  <proof prover="2"><result status="valid" time="0.57"/></proof>
+  </goal>
+  <goal name="VC div_sb_qr.207" expl="loop invariant preservation" proved="true">
+  <proof prover="2" memlimit="2000"><result status="valid" time="0.48"/></proof>
+  </goal>
+  <goal name="VC div_sb_qr.208" expl="loop invariant preservation" proved="true">
+  <proof prover="2" memlimit="2000"><result status="valid" time="1.01"/></proof>
+  </goal>
+  <goal name="VC div_sb_qr.209" expl="loop invariant preservation" proved="true">
+  <transf name="introduce_premises" proved="true" >
+   <goal name="VC div_sb_qr.209.0" expl="loop invariant preservation" proved="true">
+   <transf name="inline_goal" proved="true" >
+    <goal name="VC div_sb_qr.209.0.0" expl="loop invariant preservation" proved="true">
+    <proof prover="0"><result status="valid" time="0.11"/></proof>
+    </goal>
+   </transf>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div_sb_qr.210" expl="loop invariant preservation" proved="true">
+  <proof prover="3"><result status="valid" time="0.07"/></proof>
+  </goal>
+  <goal name="VC div_sb_qr.211" expl="loop invariant preservation" proved="true">
+  <proof prover="3"><result status="valid" time="0.07"/></proof>
+  </goal>
+  <goal name="VC div_sb_qr.212" expl="loop invariant preservation" proved="true">
+  <proof prover="2" memlimit="2000"><result status="valid" time="0.80"/></proof>
+  </goal>
+  <goal name="VC div_sb_qr.213" expl="loop invariant preservation" proved="true">
+  <proof prover="3"><result status="valid" time="0.07"/></proof>
+  </goal>
+  <goal name="VC div_sb_qr.214" expl="loop invariant preservation" proved="true">
+  <proof prover="3"><result status="valid" time="0.11"/></proof>
+  </goal>
+  <goal name="VC div_sb_qr.215" expl="loop invariant preservation" proved="true">
+  <proof prover="2" memlimit="2000"><result status="valid" time="0.76"/></proof>
+  </goal>
+  <goal name="VC div_sb_qr.216" expl="loop invariant preservation" proved="true">
+  <proof prover="2" memlimit="2000"><result status="valid" time="0.82"/></proof>
+  </goal>
+  <goal name="VC div_sb_qr.217" expl="loop invariant preservation" proved="true">
+  <proof prover="2" memlimit="2000"><result status="valid" time="0.42"/></proof>
+  </goal>
+  <goal name="VC div_sb_qr.218" expl="loop invariant preservation" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC div_sb_qr.218.0" expl="loop invariant preservation" proved="true">
+   <proof prover="0"><result status="valid" time="0.04"/></proof>
+   <proof prover="2" memlimit="2000"><result status="valid" time="0.45"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.218.1" expl="loop invariant preservation" proved="true">
+   <proof prover="2" memlimit="2000"><result status="valid" time="0.42"/></proof>
+   <proof prover="4" memlimit="2000"><result status="valid" time="0.02"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div_sb_qr.219" expl="loop invariant preservation" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC div_sb_qr.219.0" expl="loop invariant preservation" proved="true">
+   <proof prover="4"><result status="valid" time="0.01"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.219.1" expl="loop invariant preservation" proved="true">
+   <proof prover="4"><result status="valid" time="0.01"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div_sb_qr.220" expl="precondition" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC div_sb_qr.220.0" expl="VC for div_sb_qr" proved="true">
+   <proof prover="4" memlimit="2000"><result status="valid" time="0.26"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.220.1" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.22"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div_sb_qr.221" expl="precondition" proved="true">
+  <proof prover="4"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC div_sb_qr.222" expl="precondition" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC div_sb_qr.222.0" expl="precondition" proved="true">
+   <proof prover="2" memlimit="2000"><result status="valid" time="0.07"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.222.1" expl="precondition" proved="true">
+   <transf name="introduce_premises" proved="true" >
+    <goal name="VC div_sb_qr.222.1.0" expl="precondition" proved="true">
+    <transf name="inline_goal" proved="true" >
+     <goal name="VC div_sb_qr.222.1.0.0" expl="precondition" proved="true">
+     <proof prover="3"><result status="valid" time="0.03"/></proof>
+     </goal>
+    </transf>
+    </goal>
+   </transf>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div_sb_qr.223" expl="precondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.53"/></proof>
+  </goal>
+  <goal name="VC div_sb_qr.224" expl="precondition" proved="true">
+  <proof prover="4"><result status="valid" time="0.12"/></proof>
+  </goal>
+  <goal name="VC div_sb_qr.225" expl="assertion" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC div_sb_qr.225.0" expl="assertion" proved="true">
+   <transf name="introduce_premises" proved="true" >
+    <goal name="VC div_sb_qr.225.0.0" expl="assertion" proved="true">
+    <transf name="replace" proved="true" arg1="(value qp ((int32&#39;int sx - int32&#39;int sy) - int32&#39;int i))" arg2="(uint64&#39;int ql+ radix2 *value_sub (pelts q) (offset qp + 1) (((offset qp + int32&#39;int sx) - int32&#39;int sy) - int32&#39;int i))">
+     <goal name="VC div_sb_qr.225.0.0.0" expl="assertion" proved="true">
+     <proof prover="3" timelimit="5" memlimit="2000"><result status="valid" time="0.01"/></proof>
+     </goal>
+     <goal name="VC div_sb_qr.225.0.0.1" proved="true">
+     <proof prover="0"><result status="valid" time="0.02"/></proof>
+     </goal>
+    </transf>
+    </goal>
+   </transf>
+   </goal>
+   <goal name="VC div_sb_qr.225.1" expl="assertion" proved="true">
+   <transf name="introduce_premises" proved="true" >
+    <goal name="VC div_sb_qr.225.1.0" expl="assertion" proved="true">
+    <proof prover="0"><result status="valid" time="1.10"/></proof>
+    </goal>
+   </transf>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div_sb_qr.226" expl="assertion" proved="true">
+  <transf name="introduce_premises" proved="true" >
+   <goal name="VC div_sb_qr.226.0" expl="assertion" proved="true">
+   <transf name="replace" proved="true" arg1="(value_sub (pelts q) (offset qp + 1) (((offset qp + int32&#39;int sx) - int32&#39;int sy) - int32&#39;int i))" arg2="(value qp2 ((int32&#39;int sx - int32&#39;int sy) - int32&#39;int i1))">
+    <goal name="VC div_sb_qr.226.0.0" expl="assertion" proved="true">
+    <proof prover="3"><result status="valid" time="0.02"/></proof>
+    </goal>
+    <goal name="VC div_sb_qr.226.0.1" proved="true">
+    <proof prover="0"><result status="valid" time="0.51"/></proof>
+    </goal>
+   </transf>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div_sb_qr.227" expl="integer overflow" proved="true">
+  <proof prover="2" timelimit="1"><result status="valid" time="0.68"/></proof>
+  </goal>
+  <goal name="VC div_sb_qr.228" expl="integer overflow" proved="true">
+  <proof prover="3"><result status="valid" time="0.10"/></proof>
+  </goal>
+  <goal name="VC div_sb_qr.229" expl="precondition" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC div_sb_qr.229.0" expl="precondition" proved="true">
+   <proof prover="2" memlimit="2000"><result status="valid" time="0.27"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.229.1" expl="precondition" proved="true">
+   <proof prover="1"><result status="valid" time="0.28"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div_sb_qr.230" expl="precondition" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC div_sb_qr.230.0" expl="VC for div_sb_qr" proved="true">
+   <proof prover="1"><result status="valid" time="0.20"/></proof>
+   <proof prover="2" memlimit="2000"><result status="valid" time="0.42"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.230.1" expl="VC for div_sb_qr" proved="true">
+   <proof prover="2" memlimit="2000"><result status="valid" time="0.31"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div_sb_qr.231" expl="assertion" proved="true">
+  <proof prover="3"><result status="valid" time="0.04"/></proof>
+  </goal>
+  <goal name="VC div_sb_qr.232" expl="assertion" proved="true">
+  <proof prover="0"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC div_sb_qr.233" expl="assertion" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC div_sb_qr.233.0" expl="VC for div_sb_qr" proved="true">
+   <proof prover="2" timelimit="1"><result status="valid" time="0.44"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.233.1" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.233.2" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.14"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.233.3" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.03"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.233.4" expl="VC for div_sb_qr" proved="true">
+   <proof prover="0"><result status="valid" time="0.04"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.233.5" expl="VC for div_sb_qr" proved="true">
+   <proof prover="0"><result status="valid" time="1.58"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.233.6" expl="VC for div_sb_qr" proved="true">
+   <proof prover="0"><result status="valid" time="0.05"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.233.7" expl="VC for div_sb_qr" proved="true">
+   <proof prover="2" timelimit="1"><result status="valid" time="0.55"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div_sb_qr.234" expl="assertion" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC div_sb_qr.234.0" expl="assertion" proved="true">
+   <proof prover="0"><result status="valid" time="0.04"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.234.1" expl="assertion" proved="true">
+   <proof prover="2" memlimit="2000"><result status="valid" time="0.07"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div_sb_qr.235" expl="assertion" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC div_sb_qr.235.0" expl="assertion" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.235.1" expl="assertion" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div_sb_qr.236" expl="assertion" proved="true">
+  <proof prover="3"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC div_sb_qr.237" expl="assertion" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC div_sb_qr.237.0" expl="assertion" proved="true">
+   <proof prover="1"><result status="valid" time="0.30"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.237.1" expl="assertion" proved="true">
+   <transf name="introduce_premises" proved="true" >
+    <goal name="VC div_sb_qr.237.1.0" expl="assertion" proved="true">
+    <proof prover="1"><result status="valid" time="0.42"/></proof>
+    </goal>
+   </transf>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div_sb_qr.238" expl="assertion" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC div_sb_qr.238.0" expl="assertion" proved="true">
+   <transf name="introduce_premises" proved="true" >
+    <goal name="VC div_sb_qr.238.0.0" expl="assertion" proved="true">
+    <proof prover="0"><result status="valid" time="0.02"/></proof>
+    </goal>
+   </transf>
+   </goal>
+   <goal name="VC div_sb_qr.238.1" expl="assertion" proved="true">
+   <transf name="introduce_premises" proved="true" >
+    <goal name="VC div_sb_qr.238.1.0" expl="assertion" proved="true">
+    <proof prover="0"><result status="valid" time="3.15"/></proof>
+    </goal>
+   </transf>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div_sb_qr.239" expl="assertion" proved="true">
+  <transf name="introduce_premises" proved="true" >
+   <goal name="VC div_sb_qr.239.0" expl="assertion" proved="true">
+   <transf name="use_th" proved="true" arg1="lineardecision.EqPropMP">
+    <goal name="VC div_sb_qr.239.0.0" expl="assertion" proved="true">
+    <transf name="reflection_f" proved="true" arg1="prop_mp_decision">
+     <goal name="VC div_sb_qr.239.0.0.0" expl="assertion" proved="true">
+     <transf name="apply" proved="true" arg1="HR">
+      <goal name="VC div_sb_qr.239.0.0.0.0" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.1" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.2" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.3" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.4" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.5" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.6" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.7" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.8" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.9" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.10" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.11" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.12" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.13" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.14" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.15" proved="true">
+      <proof prover="3"><result status="valid" time="0.01"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.16" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.17" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.18" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.19" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.20" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.21" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.22" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.23" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.24" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.25" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.26" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.27" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.28" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.29" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.30" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.31" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.32" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.33" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.34" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.35" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.36" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.37" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.38" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.39" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.40" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.41" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.42" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.43" proved="true">
+      <proof prover="3"><result status="valid" time="0.01"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.44" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.45" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.46" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.47" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.48" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.49" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.50" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.51" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.52" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.53" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.54" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.55" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.56" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.57" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.58" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.59" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.60" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.61" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.62" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.63" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.64" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.65" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.66" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.67" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.68" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.69" proved="true">
+      <proof prover="3"><result status="valid" time="0.03"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.70" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.71" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.72" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.73" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.74" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.75" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.76" proved="true">
+      <proof prover="3"><result status="valid" time="0.03"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.77" proved="true">
+      <proof prover="3"><result status="valid" time="0.04"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.78" proved="true">
+      <proof prover="3"><result status="valid" time="0.03"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.79" proved="true">
+      <proof prover="3"><result status="valid" time="0.04"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.80" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.81" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.82" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.83" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.84" proved="true">
+      <proof prover="3"><result status="valid" time="0.38"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.85" proved="true">
+      <proof prover="3"><result status="valid" time="0.03"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.86" proved="true">
+      <proof prover="3"><result status="valid" time="0.32"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.87" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.88" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.89" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.90" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.91" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.92" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.93" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.94" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.95" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.96" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.97" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.98" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.99" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.100" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.101" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.102" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.103" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.104" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.105" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.106" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.107" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.108" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.109" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.110" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.111" proved="true">
+      <proof prover="3"><result status="valid" time="0.24"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.112" proved="true">
+      <proof prover="3"><result status="valid" time="0.34"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.113" proved="true">
+      <proof prover="3"><result status="valid" time="0.24"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.114" proved="true">
+      <proof prover="3"><result status="valid" time="0.04"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.115" proved="true">
+      <proof prover="3"><result status="valid" time="0.03"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.116" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.117" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.118" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.119" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.120" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.121" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.122" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.123" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.124" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.125" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.126" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.127" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.128" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.129" proved="true">
+      <proof prover="3"><result status="valid" time="0.34"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.130" proved="true">
+      <proof prover="3"><result status="valid" time="0.04"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.131" proved="true">
+      <proof prover="3"><result status="valid" time="0.04"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.132" proved="true">
+      <proof prover="3"><result status="valid" time="0.04"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.133" proved="true">
+      <proof prover="3"><result status="valid" time="0.04"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.134" proved="true">
+      <proof prover="3"><result status="valid" time="0.04"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.135" proved="true">
+      <proof prover="3"><result status="valid" time="0.04"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.136" proved="true">
+      <proof prover="3"><result status="valid" time="0.04"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.137" proved="true">
+      <proof prover="3"><result status="valid" time="0.04"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.138" proved="true">
+      <proof prover="3"><result status="valid" time="0.04"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.139" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.140" proved="true">
+      <proof prover="3"><result status="valid" time="0.03"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.141" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.142" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.143" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.144" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.145" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.146" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.147" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.148" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.149" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.150" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.151" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.152" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.153" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.154" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.155" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.156" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.157" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.158" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.159" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.160" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.161" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.162" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.163" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.164" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.165" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.166" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.167" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.168" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.169" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.170" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.171" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.172" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.173" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.174" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.175" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.176" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.177" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.178" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.179" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.180" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.181" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.182" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.183" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.184" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.185" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.186" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.187" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.188" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.189" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.190" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.191" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.192" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.193" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.194" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.195" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.196" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.197" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.198" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.199" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.200" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.201" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.202" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.203" proved="true">
+      <proof prover="3"><result status="valid" time="0.03"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.204" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.205" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.206" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.207" proved="true">
+      <proof prover="3"><result status="valid" time="0.02"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.239.0.0.0.208" proved="true">
+      <proof prover="3"><result status="valid" time="0.03"/></proof>
+      </goal>
+     </transf>
+     </goal>
+     <goal name="VC div_sb_qr.239.0.0.1" proved="true">
+     <proof prover="3"><result status="valid" time="0.22"/></proof>
+     </goal>
+     <goal name="VC div_sb_qr.239.0.0.2" proved="true">
+     <proof prover="2" timelimit="1"><result status="valid" time="0.50"/></proof>
+     </goal>
+     <goal name="VC div_sb_qr.239.0.0.3" proved="true">
+     <proof prover="2" timelimit="1"><result status="valid" time="0.50"/></proof>
+     </goal>
+    </transf>
+    </goal>
+   </transf>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div_sb_qr.240" expl="precondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.40"/></proof>
+  </goal>
+  <goal name="VC div_sb_qr.241" expl="precondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.35"/></proof>
+  </goal>
+  <goal name="VC div_sb_qr.242" expl="assertion" proved="true">
+  <transf name="introduce_premises" proved="true" >
+   <goal name="VC div_sb_qr.242.0" expl="assertion" proved="true">
+   <transf name="inline_goal" proved="true" >
+    <goal name="VC div_sb_qr.242.0.0" expl="assertion" proved="true">
+    <transf name="split_goal_right" proved="true" >
+     <goal name="VC div_sb_qr.242.0.0.0" expl="VC for div_sb_qr" proved="true">
+     <proof prover="0"><result status="valid" time="0.02"/></proof>
+     </goal>
+     <goal name="VC div_sb_qr.242.0.0.1" expl="VC for div_sb_qr" proved="true">
+     <proof prover="0"><result status="valid" time="0.02"/></proof>
+     </goal>
+     <goal name="VC div_sb_qr.242.0.0.2" expl="VC for div_sb_qr" proved="true">
+     <proof prover="0"><result status="valid" time="0.10"/></proof>
+     </goal>
+     <goal name="VC div_sb_qr.242.0.0.3" expl="VC for div_sb_qr" proved="true">
+     <transf name="cut" proved="true" arg1="(value y (sy - 1) = vly + (power radix2 (sy-2) * dl))">
+      <goal name="VC div_sb_qr.242.0.0.3.0" expl="VC for div_sb_qr" proved="true">
+      <proof prover="3" timelimit="5" memlimit="2000"><result status="valid" time="0.01"/></proof>
+      </goal>
+      <goal name="VC div_sb_qr.242.0.0.3.1" proved="true">
+      <transf name="replace" proved="true" arg1="(sy - 1)" arg2="((sy - 2) + 1)">
+       <goal name="VC div_sb_qr.242.0.0.3.1.0" proved="true">
+       <transf name="unfold" proved="true" arg1="vly">
+        <goal name="VC div_sb_qr.242.0.0.3.1.0.0" proved="true">
+        <transf name="unfold" proved="true" arg1="value">
+         <goal name="VC div_sb_qr.242.0.0.3.1.0.0.0" proved="true">
+         <proof prover="0"><result status="valid" time="0.06"/></proof>
+         </goal>
+        </transf>
+        </goal>
+       </transf>
+       </goal>
+       <goal name="VC div_sb_qr.242.0.0.3.1.1" proved="true">
+       <proof prover="3"><result status="valid" time="0.02"/></proof>
+       </goal>
+      </transf>
+      </goal>
+     </transf>
+     </goal>
+     <goal name="VC div_sb_qr.242.0.0.4" expl="VC for div_sb_qr" proved="true">
+     <proof prover="0"><result status="valid" time="0.10"/></proof>
+     </goal>
+    </transf>
+    </goal>
+   </transf>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div_sb_qr.243" expl="assertion" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC div_sb_qr.243.0" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.15"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.243.1" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.37"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.243.2" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.04"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.243.3" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.14"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.243.4" expl="VC for div_sb_qr" proved="true">
+   <proof prover="0"><result status="valid" time="0.05"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.243.5" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.08"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.243.6" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.08"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.243.7" expl="VC for div_sb_qr" proved="true">
+   <proof prover="0"><result status="valid" time="0.31"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.243.8" expl="VC for div_sb_qr" proved="true">
+   <proof prover="2" timelimit="1"><result status="valid" time="0.54"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.243.9" expl="VC for div_sb_qr" proved="true">
+   <proof prover="1"><result status="valid" time="1.33"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.243.10" expl="VC for div_sb_qr" proved="true">
+   <proof prover="1"><result status="valid" time="0.30"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.243.11" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.06"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.243.12" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.37"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.243.13" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.14"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.243.14" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.13"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.243.15" expl="VC for div_sb_qr" proved="true">
+   <proof prover="1"><result status="valid" time="0.36"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.243.16" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.05"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.243.17" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.14"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.243.18" expl="VC for div_sb_qr" proved="true">
+   <proof prover="0"><result status="valid" time="0.10"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.243.19" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.243.20" expl="VC for div_sb_qr" proved="true">
+   <proof prover="0"><result status="valid" time="0.06"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.243.21" expl="VC for div_sb_qr" proved="true">
+   <proof prover="2" memlimit="2000"><result status="valid" time="7.58"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.243.22" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.01"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.243.23" expl="VC for div_sb_qr" proved="true">
+   <proof prover="1"><result status="valid" time="0.35"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.243.24" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.01"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.243.25" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.243.26" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.243.27" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.243.28" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.04"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.243.29" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.243.30" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.04"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.243.31" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.14"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.243.32" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.14"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.243.33" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.08"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.243.34" expl="VC for div_sb_qr" proved="true">
+   <proof prover="0"><result status="valid" time="0.04"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.243.35" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.10"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.243.36" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.15"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div_sb_qr.244" expl="precondition" proved="true">
+  <proof prover="4"><result status="valid" time="0.15"/></proof>
+  </goal>
+  <goal name="VC div_sb_qr.245" expl="precondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.56"/></proof>
+  </goal>
+  <goal name="VC div_sb_qr.246" expl="assertion" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC div_sb_qr.246.0" expl="VC for div_sb_qr" proved="true">
+   <proof prover="1"><result status="valid" time="1.37"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.246.1" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.01"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.246.2" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.25"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.246.3" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.16"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.246.4" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.246.5" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.01"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.246.6" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.10"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.246.7" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.12"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.246.8" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.16"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.246.9" expl="VC for div_sb_qr" proved="true">
+   <proof prover="0"><result status="valid" time="0.04"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.246.10" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.12"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.246.11" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.246.12" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.14"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.246.13" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.08"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.246.14" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.03"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.246.15" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.15"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.246.16" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.04"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.246.17" expl="VC for div_sb_qr" proved="true">
+   <proof prover="1"><result status="valid" time="0.97"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.246.18" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.07"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div_sb_qr.247" expl="loop variant decrease" proved="true">
+  <proof prover="4"><result status="valid" time="0.13"/></proof>
+  </goal>
+  <goal name="VC div_sb_qr.248" expl="loop invariant preservation" proved="true">
+  <proof prover="2" memlimit="2000"><result status="valid" time="0.51"/></proof>
+  </goal>
+  <goal name="VC div_sb_qr.249" expl="loop invariant preservation" proved="true">
+  <proof prover="2" timelimit="1"><result status="valid" time="0.40"/></proof>
+  </goal>
+  <goal name="VC div_sb_qr.250" expl="loop invariant preservation" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC div_sb_qr.250.0" expl="loop invariant preservation" proved="true">
+   <proof prover="2"><result status="valid" time="0.38"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.250.1" expl="loop invariant preservation" proved="true">
+   <proof prover="2"><result status="valid" time="0.77"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div_sb_qr.251" expl="loop invariant preservation" proved="true">
+  <proof prover="2"><result status="valid" time="0.71"/></proof>
+  </goal>
+  <goal name="VC div_sb_qr.252" expl="loop invariant preservation" proved="true">
+  <proof prover="3"><result status="valid" time="0.06"/></proof>
+  </goal>
+  <goal name="VC div_sb_qr.253" expl="loop invariant preservation" proved="true">
+  <proof prover="3"><result status="valid" time="0.06"/></proof>
+  </goal>
+  <goal name="VC div_sb_qr.254" expl="loop invariant preservation" proved="true">
+  <proof prover="2"><result status="valid" time="0.96"/></proof>
+  </goal>
+  <goal name="VC div_sb_qr.255" expl="loop invariant preservation" proved="true">
+  <proof prover="3"><result status="valid" time="0.06"/></proof>
+  </goal>
+  <goal name="VC div_sb_qr.256" expl="loop invariant preservation" proved="true">
+  <proof prover="3"><result status="valid" time="0.07"/></proof>
+  </goal>
+  <goal name="VC div_sb_qr.257" expl="loop invariant preservation" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC div_sb_qr.257.0" expl="loop invariant preservation" proved="true">
+   <proof prover="2"><result status="valid" time="0.60"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.257.1" expl="loop invariant preservation" proved="true">
+   <proof prover="2"><result status="valid" time="0.70"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div_sb_qr.258" expl="loop invariant preservation" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC div_sb_qr.258.0" expl="loop invariant preservation" proved="true">
+   <proof prover="2"><result status="valid" time="0.41"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.258.1" expl="loop invariant preservation" proved="true">
+   <proof prover="2"><result status="valid" time="0.77"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div_sb_qr.259" expl="loop invariant preservation" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC div_sb_qr.259.0" expl="loop invariant preservation" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.259.1" expl="loop invariant preservation" proved="true">
+   <proof prover="0"><result status="valid" time="0.08"/></proof>
+   <proof prover="2" memlimit="2000"><result status="valid" time="0.58"/></proof>
+   <proof prover="4" memlimit="2000"><result status="valid" time="0.04"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div_sb_qr.260" expl="loop invariant preservation" proved="true">
+  <proof prover="4" memlimit="2000"><result status="valid" time="0.01"/></proof>
+  </goal>
+  <goal name="VC div_sb_qr.261" expl="loop invariant preservation" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC div_sb_qr.261.0" expl="loop invariant preservation" proved="true">
+   <proof prover="1"><result status="valid" time="0.36"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.261.1" expl="loop invariant preservation" proved="true">
+   <proof prover="4"><result status="valid" time="0.02"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div_sb_qr.262" expl="assertion" proved="true">
+  <proof prover="2"><result status="valid" time="0.18"/></proof>
+  </goal>
+  <goal name="VC div_sb_qr.263" expl="assertion" proved="true">
+  <proof prover="2"><result status="valid" time="0.24"/></proof>
+  </goal>
+  <goal name="VC div_sb_qr.264" expl="precondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.20"/></proof>
+  </goal>
+  <goal name="VC div_sb_qr.265" expl="precondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.04"/></proof>
+  </goal>
+  <goal name="VC div_sb_qr.266" expl="precondition" proved="true">
+  <proof prover="2" memlimit="2000"><result status="valid" time="0.30"/></proof>
+  </goal>
+  <goal name="VC div_sb_qr.267" expl="assertion" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC div_sb_qr.267.0" expl="VC for div_sb_qr" proved="true">
+   <proof prover="5"><result status="valid" time="0.67" steps="157"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.267.1" expl="VC for div_sb_qr" proved="true">
+   <proof prover="0"><result status="valid" time="5.54"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div_sb_qr.268" expl="precondition" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC div_sb_qr.268.0" expl="precondition" proved="true">
+   <proof prover="1"><result status="valid" time="0.08"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.268.1" expl="precondition" proved="true">
+   <proof prover="3"><result status="valid" time="0.04"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div_sb_qr.269" expl="assertion" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC div_sb_qr.269.0" expl="VC for div_sb_qr" proved="true">
+   <proof prover="5"><result status="valid" time="0.59" steps="157"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.269.1" expl="VC for div_sb_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.01"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.269.2" expl="VC for div_sb_qr" proved="true">
+   <proof prover="5"><result status="valid" time="0.35" steps="108"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.269.3" expl="VC for div_sb_qr" proved="true">
+   <proof prover="0"><result status="valid" time="0.05"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.269.4" expl="VC for div_sb_qr" proved="true">
+   <proof prover="0"><result status="valid" time="1.15"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.269.5" expl="VC for div_sb_qr" proved="true">
+   <proof prover="0"><result status="valid" time="0.02"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div_sb_qr.270" expl="postcondition" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC div_sb_qr.270.0" expl="postcondition" proved="true">
+   <proof prover="0"><result status="valid" time="0.03"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.270.1" expl="postcondition" proved="true">
+   <proof prover="0"><result status="valid" time="0.05"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div_sb_qr.271" expl="postcondition" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC div_sb_qr.271.0" expl="postcondition" proved="true">
+   <proof prover="5"><result status="valid" time="0.51" steps="157"/></proof>
+   </goal>
+   <goal name="VC div_sb_qr.271.1" expl="postcondition" proved="true">
+   <proof prover="5"><result status="valid" time="0.23" steps="157"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div_sb_qr.272" expl="postcondition" proved="true">
+  <proof prover="1"><result status="valid" time="0.13"/></proof>
+  <proof prover="2" memlimit="2000"><result status="valid" time="0.13"/></proof>
+  </goal>
+ </transf>
+ </goal>
+ <goal name="VC divmod_2" expl="VC for divmod_2" proved="true">
+ <transf name="split_goal_right" proved="true" >
+  <goal name="VC divmod_2.0" expl="integer overflow" proved="true">
+  <proof prover="5" timelimit="5"><result status="valid" time="0.06" steps="31"/></proof>
+  </goal>
+  <goal name="VC divmod_2.1" expl="integer overflow" proved="true">
+  <proof prover="5" timelimit="5"><result status="valid" time="0.04" steps="32"/></proof>
+  </goal>
+  <goal name="VC divmod_2.2" expl="integer overflow" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC divmod_2.2.0" expl="integer overflow" proved="true">
+   <proof prover="1"><result status="valid" time="0.03"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC divmod_2.3" expl="integer overflow" proved="true">
+  <proof prover="4"><result status="valid" time="0.04"/></proof>
+  </goal>
+  <goal name="VC divmod_2.4" expl="integer overflow" proved="true">
+  <proof prover="4"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC divmod_2.5" expl="integer overflow" proved="true">
+  <proof prover="4"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC divmod_2.6" expl="precondition" proved="true">
+  <proof prover="5" timelimit="5"><result status="valid" time="0.01" steps="36"/></proof>
+  </goal>
+  <goal name="VC divmod_2.7" expl="precondition" proved="true">
+  <proof prover="5" timelimit="5"><result status="valid" time="0.06" steps="43"/></proof>
+  </goal>
+  <goal name="VC divmod_2.8" expl="precondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.07"/></proof>
+  </goal>
+  <goal name="VC divmod_2.9" expl="precondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.07"/></proof>
+  </goal>
+  <goal name="VC divmod_2.10" expl="precondition" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC divmod_2.10.0" expl="VC for divmod_2" proved="true">
+   <proof prover="0" memlimit="1000"><result status="valid" time="0.13"/></proof>
+   <proof prover="1" memlimit="1000"><result status="valid" time="0.06"/></proof>
+   <proof prover="2"><result status="valid" time="0.15"/></proof>
+   <proof prover="4"><result status="valid" time="0.04"/></proof>
+   </goal>
+   <goal name="VC divmod_2.10.1" expl="VC for divmod_2" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC divmod_2.11" expl="assertion" proved="true">
+  <proof prover="1"><result status="valid" time="0.33"/></proof>
+  </goal>
+  <goal name="VC divmod_2.12" expl="integer overflow" proved="true">
+  <proof prover="4"><result status="valid" time="0.05"/></proof>
+  </goal>
+  <goal name="VC divmod_2.13" expl="precondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.46"/></proof>
+  </goal>
+  <goal name="VC divmod_2.14" expl="precondition" proved="true">
+  <proof prover="4"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC divmod_2.15" expl="precondition" proved="true">
+  <proof prover="4"><result status="valid" time="0.04"/></proof>
+  </goal>
+  <goal name="VC divmod_2.16" expl="assertion" proved="true">
+  <proof prover="5" timelimit="5"><result status="valid" time="0.16" steps="292"/></proof>
+  </goal>
+  <goal name="VC divmod_2.17" expl="assertion" proved="true">
+  <proof prover="2"><result status="valid" time="0.07"/></proof>
+  </goal>
+  <goal name="VC divmod_2.18" expl="precondition" proved="true">
+  <proof prover="4"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC divmod_2.19" expl="precondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.08"/></proof>
+  </goal>
+  <goal name="VC divmod_2.20" expl="assertion" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC divmod_2.20.0" expl="VC for divmod_2" proved="true">
+   <proof prover="3"><result status="valid" time="0.04"/></proof>
+   </goal>
+   <goal name="VC divmod_2.20.1" expl="VC for divmod_2" proved="true">
+   <proof prover="5"><result status="valid" time="0.18" steps="82"/></proof>
+   </goal>
+   <goal name="VC divmod_2.20.2" expl="VC for divmod_2" proved="true">
+   <proof prover="5"><result status="valid" time="0.02" steps="43"/></proof>
+   </goal>
+   <goal name="VC divmod_2.20.3" expl="VC for divmod_2" proved="true">
+   <proof prover="5"><result status="valid" time="0.05" steps="43"/></proof>
+   </goal>
+   <goal name="VC divmod_2.20.4" expl="VC for divmod_2" proved="true">
+   <proof prover="5"><result status="valid" time="0.26" steps="83"/></proof>
+   </goal>
+   <goal name="VC divmod_2.20.5" expl="VC for divmod_2" proved="true">
+   <proof prover="5"><result status="valid" time="0.23" steps="82"/></proof>
+   </goal>
+   <goal name="VC divmod_2.20.6" expl="VC for divmod_2" proved="true">
+   <proof prover="2" timelimit="1"><result status="valid" time="0.09"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC divmod_2.21" expl="postcondition" proved="true">
+  <proof prover="3"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC divmod_2.22" expl="postcondition" proved="true">
+  <proof prover="4"><result status="valid" time="0.20"/></proof>
+  </goal>
+  <goal name="VC divmod_2.23" expl="postcondition" proved="true">
+  <proof prover="4"><result status="valid" time="0.05"/></proof>
+  </goal>
+  <goal name="VC divmod_2.24" expl="precondition" proved="true">
+  <proof prover="1" memlimit="1000"><result status="valid" time="0.12"/></proof>
+  </goal>
+  <goal name="VC divmod_2.25" expl="precondition" proved="true">
+  <proof prover="4"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC divmod_2.26" expl="postcondition" proved="true">
+  <proof prover="5"><result status="valid" time="0.07" steps="81"/></proof>
+  </goal>
+  <goal name="VC divmod_2.27" expl="postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.10"/></proof>
+  </goal>
+  <goal name="VC divmod_2.28" expl="postcondition" proved="true">
+  <proof prover="4"><result status="valid" time="0.05"/></proof>
+  </goal>
+  <goal name="VC divmod_2.29" expl="loop invariant init" proved="true">
+  <proof prover="5"><result status="valid" time="0.02" steps="28"/></proof>
+  </goal>
+  <goal name="VC divmod_2.30" expl="loop invariant init" proved="true">
+  <proof prover="2"><result status="valid" time="0.06"/></proof>
+  </goal>
+  <goal name="VC divmod_2.31" expl="loop invariant init" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC divmod_2.31.0" expl="loop invariant init" proved="true">
+   <proof prover="4"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC divmod_2.31.1" expl="loop invariant init" proved="true">
+   <proof prover="4"><result status="valid" time="0.05"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC divmod_2.32" expl="loop invariant init" proved="true">
+  <proof prover="3"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC divmod_2.33" expl="loop invariant init" proved="true">
+  <proof prover="3"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC divmod_2.34" expl="loop invariant init" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC divmod_2.34.0" expl="loop invariant init" proved="true">
+   <proof prover="3"><result status="valid" time="0.03"/></proof>
+   </goal>
+   <goal name="VC divmod_2.34.1" expl="loop invariant init" proved="true">
+   <proof prover="0"><result status="valid" time="0.02"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC divmod_2.35" expl="loop invariant init" proved="true">
+  <proof prover="5" timelimit="5"><result status="valid" time="0.44" steps="135"/></proof>
+  </goal>
+  <goal name="VC divmod_2.36" expl="loop invariant init" proved="true">
+  <proof prover="4"><result status="valid" time="0.05"/></proof>
+  </goal>
+  <goal name="VC divmod_2.37" expl="precondition" proved="true">
+  <proof prover="4"><result status="valid" time="0.23"/></proof>
+  </goal>
+  <goal name="VC divmod_2.38" expl="precondition" proved="true">
+  <proof prover="5"><result status="valid" time="0.05" steps="71"/></proof>
+  </goal>
+  <goal name="VC divmod_2.39" expl="precondition" proved="true">
+  <proof prover="4"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC divmod_2.40" expl="precondition" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC divmod_2.40.0" expl="precondition" proved="true">
+   <transf name="introduce_premises" proved="true" >
+    <goal name="VC divmod_2.40.0.0" expl="precondition" proved="true">
+    <transf name="inline_goal" proved="true" >
+     <goal name="VC divmod_2.40.0.0.0" expl="precondition" proved="true">
+     <proof prover="0"><result status="valid" time="1.38"/></proof>
+     </goal>
+    </transf>
+    </goal>
+   </transf>
+   </goal>
+   <goal name="VC divmod_2.40.1" expl="precondition" proved="true">
+   <transf name="split_goal_right" proved="true" >
+    <goal name="VC divmod_2.40.1.0" expl="precondition" proved="true">
+    <proof prover="0"><result status="valid" time="0.03"/></proof>
+    </goal>
+    <goal name="VC divmod_2.40.1.1" expl="precondition" proved="true">
+    <proof prover="0"><result status="valid" time="0.04"/></proof>
+    </goal>
+   </transf>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC divmod_2.41" expl="precondition" proved="true">
+  <proof prover="4"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC divmod_2.42" expl="integer overflow" proved="true">
+  <proof prover="2"><result status="valid" time="0.13"/></proof>
+  </goal>
+  <goal name="VC divmod_2.43" expl="precondition" proved="true">
+  <proof prover="2" timelimit="1"><result status="valid" time="0.26"/></proof>
+  </goal>
+  <goal name="VC divmod_2.44" expl="assertion" proved="true">
+  <proof prover="4"><result status="valid" time="0.04"/></proof>
+  </goal>
+  <goal name="VC divmod_2.45" expl="precondition" proved="true">
+  <proof prover="4"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC divmod_2.46" expl="precondition" proved="true">
+  <proof prover="3"><result status="valid" time="0.05"/></proof>
+  </goal>
+  <goal name="VC divmod_2.47" expl="assertion" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC divmod_2.47.0" expl="VC for divmod_2" proved="true">
+   <proof prover="0"><result status="valid" time="1.96"/></proof>
+   </goal>
+   <goal name="VC divmod_2.47.1" expl="VC for divmod_2" proved="true">
+   <proof prover="1"><result status="valid" time="0.22"/></proof>
+   </goal>
+   <goal name="VC divmod_2.47.2" expl="VC for divmod_2" proved="true">
+   <proof prover="2" timelimit="1"><result status="valid" time="0.94"/></proof>
+   </goal>
+   <goal name="VC divmod_2.47.3" expl="VC for divmod_2" proved="true">
+   <proof prover="0"><result status="valid" time="4.48"/></proof>
+   </goal>
+   <goal name="VC divmod_2.47.4" expl="VC for divmod_2" proved="true">
+   <proof prover="2" timelimit="1"><result status="valid" time="1.07"/></proof>
+   </goal>
+   <goal name="VC divmod_2.47.5" expl="VC for divmod_2" proved="true">
+   <proof prover="0"><result status="valid" time="0.05"/></proof>
+   </goal>
+   <goal name="VC divmod_2.47.6" expl="VC for divmod_2" proved="true">
+   <proof prover="1"><result status="valid" time="0.21"/></proof>
+   </goal>
+   <goal name="VC divmod_2.47.7" expl="VC for divmod_2" proved="true">
+   <proof prover="0"><result status="valid" time="0.34"/></proof>
+   </goal>
+   <goal name="VC divmod_2.47.8" expl="VC for divmod_2" proved="true">
+   <proof prover="0"><result status="valid" time="0.03"/></proof>
+   </goal>
+   <goal name="VC divmod_2.47.9" expl="VC for divmod_2" proved="true">
+   <transf name="introduce_premises" proved="true" >
+    <goal name="VC divmod_2.47.9.0" expl="VC for divmod_2" proved="true">
+    <transf name="inline_goal" proved="true" >
+     <goal name="VC divmod_2.47.9.0.0" expl="VC for divmod_2" proved="true">
+     <proof prover="1"><result status="valid" time="0.20"/></proof>
+     </goal>
+    </transf>
+    </goal>
+   </transf>
+   </goal>
+   <goal name="VC divmod_2.47.10" expl="VC for divmod_2" proved="true">
+   <proof prover="4"><result status="valid" time="0.04"/></proof>
+   </goal>
+   <goal name="VC divmod_2.47.11" expl="VC for divmod_2" proved="true">
+   <proof prover="0"><result status="valid" time="0.04"/></proof>
+   <transf name="introduce_premises" proved="true" >
+    <goal name="VC divmod_2.47.11.0" expl="VC for divmod_2" proved="true">
+    <transf name="revert" proved="true" arg1="H26">
+     <goal name="VC divmod_2.47.11.0.0" expl="VC for divmod_2" proved="true">
+     <proof prover="1" timelimit="10"><result status="valid" time="0.13"/></proof>
+     </goal>
+    </transf>
+    </goal>
+   </transf>
+   </goal>
+   <goal name="VC divmod_2.47.12" expl="VC for divmod_2" proved="true">
+   <transf name="introduce_premises" proved="true" >
+    <goal name="VC divmod_2.47.12.0" expl="VC for divmod_2" proved="true">
+    <transf name="revert" proved="true" arg1="H26">
+     <goal name="VC divmod_2.47.12.0.0" expl="VC for divmod_2" proved="true">
+     <proof prover="1" timelimit="10"><result status="valid" time="0.13"/></proof>
+     </goal>
+    </transf>
+    </goal>
+   </transf>
+   </goal>
+   <goal name="VC divmod_2.47.13" expl="VC for divmod_2" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC divmod_2.47.14" expl="VC for divmod_2" proved="true">
+   <transf name="introduce_premises" proved="true" >
+    <goal name="VC divmod_2.47.14.0" expl="VC for divmod_2" proved="true">
+    <transf name="replace" proved="true" arg1="(value_sub (pelts q) (offset q + k) ((offset q + int32&#39;int sx) - 2) + (uint64&#39;int qh * power radix2 ((int32&#39;int sx - 2) - k)))" arg2="(value_sub (pelts q1) (offset q1 + k) ((offset q1 + int32&#39;int sx) - 2) + (uint64&#39;int qh * power radix2 ((int32&#39;int sx - 2) - k)))">
+     <goal name="VC divmod_2.47.14.0.0" expl="VC for divmod_2" proved="true">
+     <proof prover="0"><result status="valid" time="0.06"/></proof>
+     </goal>
+     <goal name="VC divmod_2.47.14.0.1" proved="true">
+     <proof prover="1"><result status="valid" time="0.11"/></proof>
+     </goal>
+    </transf>
+    </goal>
+   </transf>
+   </goal>
+   <goal name="VC divmod_2.47.15" expl="VC for divmod_2" proved="true">
+   <transf name="introduce_premises" proved="true" >
+    <goal name="VC divmod_2.47.15.0" expl="VC for divmod_2" proved="true">
+    <proof prover="1"><result status="valid" time="0.14"/></proof>
+    </goal>
+   </transf>
+   </goal>
+   <goal name="VC divmod_2.47.16" expl="VC for divmod_2" proved="true">
+   <proof prover="2" timelimit="1"><result status="valid" time="0.14"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC divmod_2.48" expl="loop variant decrease" proved="true">
+  <proof prover="2"><result status="valid" time="0.11"/></proof>
+  <proof prover="4"><result status="valid" time="0.04"/></proof>
+  </goal>
+  <goal name="VC divmod_2.49" expl="loop invariant preservation" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC divmod_2.49.0" expl="VC for divmod_2" proved="true">
+   <proof prover="2"><result status="valid" time="0.15"/></proof>
+   <proof prover="4"><result status="valid" time="0.05"/></proof>
+   </goal>
+   <goal name="VC divmod_2.49.1" expl="VC for divmod_2" proved="true">
+   <proof prover="2"><result status="valid" time="0.12"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC divmod_2.50" expl="loop invariant preservation" proved="true">
+  <proof prover="2"><result status="valid" time="0.10"/></proof>
+  </goal>
+  <goal name="VC divmod_2.51" expl="loop invariant preservation" proved="true">
+  <proof prover="4"><result status="valid" time="0.05"/></proof>
+  </goal>
+  <goal name="VC divmod_2.52" expl="loop invariant preservation" proved="true">
+  <proof prover="3"><result status="valid" time="0.05"/></proof>
+  </goal>
+  <goal name="VC divmod_2.53" expl="loop invariant preservation" proved="true">
+  <proof prover="3"><result status="valid" time="0.04"/></proof>
+  </goal>
+  <goal name="VC divmod_2.54" expl="loop invariant preservation" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC divmod_2.54.0" expl="loop invariant preservation" proved="true">
+   <proof prover="3"><result status="valid" time="0.05"/></proof>
+   </goal>
+   <goal name="VC divmod_2.54.1" expl="loop invariant preservation" proved="true">
+   <proof prover="3"><result status="valid" time="0.06"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC divmod_2.55" expl="loop invariant preservation" proved="true">
+  <proof prover="4"><result status="valid" time="0.04"/></proof>
+  </goal>
+  <goal name="VC divmod_2.56" expl="loop invariant preservation" proved="true">
+  <proof prover="2"><result status="valid" time="0.22"/></proof>
+  </goal>
+  <goal name="VC divmod_2.57" expl="assertion" proved="true">
+  <proof prover="2"><result status="valid" time="0.06"/></proof>
+  </goal>
+  <goal name="VC divmod_2.58" expl="assertion" proved="true">
+  <proof prover="0"><result status="valid" time="0.06"/></proof>
+  </goal>
+  <goal name="VC divmod_2.59" expl="precondition" proved="true">
+  <proof prover="4"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC divmod_2.60" expl="precondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.24"/></proof>
+  </goal>
+  <goal name="VC divmod_2.61" expl="assertion" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC divmod_2.61.0" expl="VC for divmod_2" proved="true">
+   <proof prover="5"><result status="valid" time="0.20" steps="58"/></proof>
+   </goal>
+   <goal name="VC divmod_2.61.1" expl="VC for divmod_2" proved="true">
+   <proof prover="5"><result status="valid" time="0.22" steps="58"/></proof>
+   </goal>
+   <goal name="VC divmod_2.61.2" expl="VC for divmod_2" proved="true">
+   <transf name="introduce_premises" proved="true" >
+    <goal name="VC divmod_2.61.2.0" expl="VC for divmod_2" proved="true">
+    <transf name="split_all_full" proved="true" >
+     <goal name="VC divmod_2.61.2.0.0" expl="VC for divmod_2" proved="true">
+     <proof prover="2" timelimit="10" memlimit="4000"><result status="valid" time="2.73"/></proof>
+     </goal>
+    </transf>
+    </goal>
+   </transf>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC divmod_2.62" expl="postcondition" proved="true">
+  <proof prover="5"><result status="valid" time="0.17" steps="98"/></proof>
+  </goal>
+  <goal name="VC divmod_2.63" expl="postcondition" proved="true">
+  <proof prover="4"><result status="valid" time="0.04"/></proof>
+  </goal>
+  <goal name="VC divmod_2.64" expl="postcondition" proved="true">
+  <proof prover="4"><result status="valid" time="0.03"/></proof>
+  </goal>
+ </transf>
+ </goal>
+ <goal name="VC div_qr" expl="VC for div_qr" proved="true">
+ <transf name="split_goal_right" proved="true" >
+  <goal name="VC div_qr.0" expl="integer overflow" proved="true">
+  <proof prover="4"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC div_qr.1" expl="integer overflow" proved="true">
+  <proof prover="5"><result status="valid" time="0.02" steps="51"/></proof>
+  </goal>
+  <goal name="VC div_qr.2" expl="integer overflow" proved="true">
+  <proof prover="2"><result status="valid" time="0.10"/></proof>
+  </goal>
+  <goal name="VC div_qr.3" expl="integer overflow" proved="true">
+  <proof prover="2" memlimit="2000"><result status="valid" time="0.10"/></proof>
+  </goal>
+  <goal name="VC div_qr.4" expl="precondition" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC div_qr.4.0" expl="precondition" proved="true">
+   <proof prover="4"><result status="valid" time="0.03"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div_qr.5" expl="assertion" proved="true">
+  <proof prover="1"><result status="valid" time="0.06"/></proof>
+  </goal>
+  <goal name="VC div_qr.6" expl="precondition" proved="true">
+  <proof prover="4"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC div_qr.7" expl="precondition" proved="true">
+  <proof prover="0" memlimit="1000"><result status="valid" time="0.10"/></proof>
+  <proof prover="5" timelimit="5"><result status="valid" time="0.05" steps="26"/></proof>
+  </goal>
+  <goal name="VC div_qr.8" expl="precondition" proved="true">
+  <proof prover="3"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC div_qr.9" expl="precondition" proved="true">
+  <transf name="introduce_premises" proved="true" >
+   <goal name="VC div_qr.9.0" expl="precondition" proved="true">
+   <transf name="inline_goal" proved="true" >
+    <goal name="VC div_qr.9.0.0" expl="precondition" proved="true">
+    <proof prover="4"><result status="valid" time="0.04"/></proof>
+    </goal>
+   </transf>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div_qr.10" expl="precondition" proved="true">
+  <proof prover="5" timelimit="5" memlimit="2000"><result status="valid" time="0.07" steps="28"/></proof>
+  </goal>
+  <goal name="VC div_qr.11" expl="precondition" proved="true">
+  <proof prover="4"><result status="valid" time="0.04"/></proof>
+  </goal>
+  <goal name="VC div_qr.12" expl="postcondition" proved="true">
+  <proof prover="5"><result status="valid" time="0.27" steps="171"/></proof>
+  </goal>
+  <goal name="VC div_qr.13" expl="postcondition" proved="true">
+  <proof prover="4"><result status="valid" time="0.14"/></proof>
+  </goal>
+  <goal name="VC div_qr.14" expl="integer overflow" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC div_qr.14.0" expl="integer overflow" proved="true">
+   <proof prover="4"><result status="valid" time="0.05"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div_qr.15" expl="precondition" proved="true">
+  <proof prover="5"><result status="valid" time="0.02" steps="61"/></proof>
+  </goal>
+  <goal name="VC div_qr.16" expl="precondition" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC div_qr.16.0" expl="precondition" proved="true">
+   <proof prover="0"><result status="valid" time="0.02"/></proof>
+   <proof prover="4" memlimit="2000"><result status="valid" time="0.08"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div_qr.17" expl="precondition" proved="true">
+  <proof prover="4"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC div_qr.18" expl="precondition" proved="true">
+  <proof prover="5" timelimit="20" memlimit="2000"><result status="valid" time="0.06" steps="69"/></proof>
+  </goal>
+  <goal name="VC div_qr.19" expl="precondition" proved="true">
+  <proof prover="5"><result status="valid" time="0.02" steps="42"/></proof>
+  </goal>
+  <goal name="VC div_qr.20" expl="precondition" proved="true">
+  <proof prover="4"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC div_qr.21" expl="precondition" proved="true">
+  <proof prover="5"><result status="valid" time="0.06" steps="75"/></proof>
+  </goal>
+  <goal name="VC div_qr.22" expl="precondition" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC div_qr.22.0" expl="precondition" proved="true">
+   <proof prover="5"><result status="valid" time="0.04" steps="131"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div_qr.23" expl="integer overflow" proved="true">
+  <proof prover="1" memlimit="1000"><result status="valid" time="0.30"/></proof>
+  <proof prover="5" timelimit="5"><result status="valid" time="0.06" steps="84"/></proof>
+  </goal>
+  <goal name="VC div_qr.24" expl="precondition" proved="true">
+  <transf name="introduce_premises" proved="true" >
+   <goal name="VC div_qr.24.0" expl="precondition" proved="true">
+   <transf name="inline_goal" proved="true" >
+    <goal name="VC div_qr.24.0.0" expl="precondition" proved="true">
+    <transf name="split_goal_right" proved="true" >
+     <goal name="VC div_qr.24.0.0.0" expl="precondition" proved="true">
+     <proof prover="4"><result status="valid" time="0.03"/></proof>
+     </goal>
+    </transf>
+    </goal>
+   </transf>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div_qr.25" expl="precondition" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC div_qr.25.0" expl="precondition" proved="true">
+   <proof prover="5" timelimit="5" memlimit="2000"><result status="valid" time="0.07" steps="141"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div_qr.26" expl="precondition" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC div_qr.26.0" expl="precondition" proved="true">
+   <proof prover="3"><result status="valid" time="0.01"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div_qr.27" expl="precondition" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC div_qr.27.0" expl="precondition" proved="true">
+   <proof prover="5"><result status="valid" time="0.06" steps="55"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div_qr.28" expl="precondition" proved="true">
+  <proof prover="5"><result status="valid" time="0.14" steps="167"/></proof>
+  </goal>
+  <goal name="VC div_qr.29" expl="precondition" proved="true">
+  <proof prover="5" timelimit="5" memlimit="2000"><result status="valid" time="0.06" steps="151"/></proof>
+  </goal>
+  <goal name="VC div_qr.30" expl="precondition" proved="true">
+  <transf name="introduce_premises" proved="true" >
+   <goal name="VC div_qr.30.0" expl="precondition" proved="true">
+   <transf name="inline_goal" proved="true" >
+    <goal name="VC div_qr.30.0.0" expl="precondition" proved="true">
+    <transf name="split_goal_right" proved="true" >
+     <goal name="VC div_qr.30.0.0.0" expl="VC for div_qr" proved="true">
+     <proof prover="3"><result status="valid" time="0.03"/></proof>
+     </goal>
+     <goal name="VC div_qr.30.0.0.1" expl="VC for div_qr" proved="true">
+     <proof prover="4"><result status="valid" time="0.07"/></proof>
+     </goal>
+     <goal name="VC div_qr.30.0.0.2" expl="VC for div_qr" proved="true">
+     <proof prover="4"><result status="valid" time="0.04"/></proof>
+     </goal>
+     <goal name="VC div_qr.30.0.0.3" expl="VC for div_qr" proved="true">
+     <proof prover="3"><result status="valid" time="0.05"/></proof>
+     </goal>
+     <goal name="VC div_qr.30.0.0.4" expl="VC for div_qr" proved="true">
+     <proof prover="3"><result status="valid" time="0.08"/></proof>
+     </goal>
+     <goal name="VC div_qr.30.0.0.5" expl="VC for div_qr" proved="true">
+     <proof prover="2" timelimit="1"><result status="valid" time="0.10"/></proof>
+     </goal>
+    </transf>
+    </goal>
+   </transf>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div_qr.31" expl="assertion" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC div_qr.31.0" expl="VC for div_qr" proved="true">
+   <proof prover="5"><result status="valid" time="0.48" steps="227"/></proof>
+   </goal>
+   <goal name="VC div_qr.31.1" expl="VC for div_qr" proved="true">
+   <proof prover="5"><result status="valid" time="0.57" steps="237"/></proof>
+   </goal>
+   <goal name="VC div_qr.31.2" expl="VC for div_qr" proved="true">
+   <proof prover="5"><result status="valid" time="0.35" steps="227"/></proof>
+   </goal>
+   <goal name="VC div_qr.31.3" expl="VC for div_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div_qr.31.4" expl="VC for div_qr" proved="true">
+   <proof prover="5"><result status="valid" time="0.05" steps="75"/></proof>
+   </goal>
+   <goal name="VC div_qr.31.5" expl="VC for div_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.32"/></proof>
+   </goal>
+   <goal name="VC div_qr.31.6" expl="VC for div_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.46"/></proof>
+   </goal>
+   <goal name="VC div_qr.31.7" expl="VC for div_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.44"/></proof>
+   </goal>
+   <goal name="VC div_qr.31.8" expl="VC for div_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.03"/></proof>
+   </goal>
+   <goal name="VC div_qr.31.9" expl="VC for div_qr" proved="true">
+   <proof prover="1"><result status="valid" time="0.33"/></proof>
+   </goal>
+   <goal name="VC div_qr.31.10" expl="VC for div_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div_qr.31.11" expl="VC for div_qr" proved="true">
+   <proof prover="5"><result status="valid" time="0.10" steps="146"/></proof>
+   </goal>
+   <goal name="VC div_qr.31.12" expl="VC for div_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div_qr.31.13" expl="VC for div_qr" proved="true">
+   <proof prover="5"><result status="valid" time="0.37" steps="240"/></proof>
+   </goal>
+   <goal name="VC div_qr.31.14" expl="VC for div_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.03"/></proof>
+   </goal>
+   <goal name="VC div_qr.31.15" expl="VC for div_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.06"/></proof>
+   </goal>
+   <goal name="VC div_qr.31.16" expl="VC for div_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.03"/></proof>
+   </goal>
+   <goal name="VC div_qr.31.17" expl="VC for div_qr" proved="true">
+   <proof prover="5"><result status="valid" time="0.04" steps="77"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div_qr.32" expl="postcondition" proved="true">
+  <proof prover="4"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC div_qr.33" expl="postcondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.82"/></proof>
+  </goal>
+  <goal name="VC div_qr.34" expl="precondition" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC div_qr.34.0" expl="precondition" proved="true">
+   <proof prover="5"><result status="valid" time="0.10" steps="36"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div_qr.35" expl="precondition" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC div_qr.35.0" expl="VC for div_qr" proved="true">
+   <proof prover="5" timelimit="5" memlimit="2000"><result status="valid" time="0.10" steps="37"/></proof>
+   </goal>
+   <goal name="VC div_qr.35.1" expl="VC for div_qr" proved="true">
+   <proof prover="5" timelimit="5" memlimit="2000"><result status="valid" time="0.02" steps="37"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div_qr.36" expl="precondition" proved="true">
+  <proof prover="4"><result status="valid" time="0.05"/></proof>
+  </goal>
+  <goal name="VC div_qr.37" expl="precondition" proved="true">
+  <proof prover="4"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC div_qr.38" expl="precondition" proved="true">
+  <proof prover="1"><result status="valid" time="0.15"/></proof>
+  </goal>
+  <goal name="VC div_qr.39" expl="assertion" proved="true">
+  <proof prover="5"><result status="valid" time="0.08" steps="123"/></proof>
+  </goal>
+  <goal name="VC div_qr.40" expl="precondition" proved="true">
+  <proof prover="3"><result status="valid" time="0.04"/></proof>
+  </goal>
+  <goal name="VC div_qr.41" expl="precondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.15"/></proof>
+  </goal>
+  <goal name="VC div_qr.42" expl="precondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.07"/></proof>
+  </goal>
+  <goal name="VC div_qr.43" expl="assertion" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC div_qr.43.0" expl="VC for div_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.04"/></proof>
+   </goal>
+   <goal name="VC div_qr.43.1" expl="VC for div_qr" proved="true">
+   <proof prover="5"><result status="valid" time="0.03" steps="48"/></proof>
+   </goal>
+   <goal name="VC div_qr.43.2" expl="VC for div_qr" proved="true">
+   <proof prover="5"><result status="valid" time="0.03" steps="48"/></proof>
+   </goal>
+   <goal name="VC div_qr.43.3" expl="VC for div_qr" proved="true">
+   <proof prover="5"><result status="valid" time="0.02" steps="50"/></proof>
+   </goal>
+   <goal name="VC div_qr.43.4" expl="VC for div_qr" proved="true">
+   <proof prover="5"><result status="valid" time="0.03" steps="51"/></proof>
+   </goal>
+   <goal name="VC div_qr.43.5" expl="VC for div_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.25"/></proof>
+   </goal>
+   <goal name="VC div_qr.43.6" expl="VC for div_qr" proved="true">
+   <proof prover="5"><result status="valid" time="0.06" steps="118"/></proof>
+   </goal>
+   <goal name="VC div_qr.43.7" expl="VC for div_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div_qr.43.8" expl="VC for div_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.04"/></proof>
+   </goal>
+   <goal name="VC div_qr.43.9" expl="VC for div_qr" proved="true">
+   <proof prover="1" timelimit="20"><result status="valid" time="0.29"/></proof>
+   </goal>
+   <goal name="VC div_qr.43.10" expl="VC for div_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.06"/></proof>
+   </goal>
+   <goal name="VC div_qr.43.11" expl="VC for div_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.03"/></proof>
+   </goal>
+   <goal name="VC div_qr.43.12" expl="VC for div_qr" proved="true">
+   <proof prover="5"><result status="valid" time="0.10" steps="132"/></proof>
+   </goal>
+   <goal name="VC div_qr.43.13" expl="VC for div_qr" proved="true">
+   <proof prover="5"><result status="valid" time="0.10" steps="136"/></proof>
+   </goal>
+   <goal name="VC div_qr.43.14" expl="VC for div_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.04"/></proof>
+   </goal>
+   <goal name="VC div_qr.43.15" expl="VC for div_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div_qr.43.16" expl="VC for div_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.03"/></proof>
+   </goal>
+   <goal name="VC div_qr.43.17" expl="VC for div_qr" proved="true">
+   <proof prover="5"><result status="valid" time="0.16" steps="138"/></proof>
+   </goal>
+   <goal name="VC div_qr.43.18" expl="VC for div_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.03"/></proof>
+   </goal>
+   <goal name="VC div_qr.43.19" expl="VC for div_qr" proved="true">
+   <proof prover="5"><result status="valid" time="0.05" steps="66"/></proof>
+   </goal>
+   <goal name="VC div_qr.43.20" expl="VC for div_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.03"/></proof>
+   </goal>
+   <goal name="VC div_qr.43.21" expl="VC for div_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div_qr.43.22" expl="VC for div_qr" proved="true">
+   <proof prover="5"><result status="valid" time="0.11" steps="155"/></proof>
+   </goal>
+   <goal name="VC div_qr.43.23" expl="VC for div_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.03"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div_qr.44" expl="postcondition" proved="true">
+  <proof prover="4"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC div_qr.45" expl="postcondition" proved="true">
+  <proof prover="4"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC div_qr.46" expl="precondition" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC div_qr.46.0" expl="precondition" proved="true">
+   <proof prover="4"><result status="valid" time="0.05"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div_qr.47" expl="precondition" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC div_qr.47.0" expl="VC for div_qr" proved="true">
+   <proof prover="5" timelimit="5" memlimit="2000"><result status="valid" time="0.02" steps="46"/></proof>
+   </goal>
+   <goal name="VC div_qr.47.1" expl="VC for div_qr" proved="true">
+   <proof prover="5" timelimit="5" memlimit="2000"><result status="valid" time="0.08" steps="46"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div_qr.48" expl="precondition" proved="true">
+  <proof prover="5" timelimit="5" memlimit="2000"><result status="valid" time="0.04" steps="83"/></proof>
+  </goal>
+  <goal name="VC div_qr.49" expl="precondition" proved="true">
+  <proof prover="4"><result status="valid" time="0.05"/></proof>
+  </goal>
+  <goal name="VC div_qr.50" expl="precondition" proved="true">
+  <proof prover="5" timelimit="5" memlimit="2000"><result status="valid" time="0.08" steps="49"/></proof>
+  </goal>
+  <goal name="VC div_qr.51" expl="precondition" proved="true">
+  <proof prover="5"><result status="valid" time="0.06" steps="86"/></proof>
+  </goal>
+  <goal name="VC div_qr.52" expl="precondition" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC div_qr.52.0" expl="precondition" proved="true">
+   <proof prover="3"><result status="valid" time="0.01"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div_qr.53" expl="assertion" proved="true">
+  <proof prover="0"><result status="valid" time="0.71"/></proof>
+  </goal>
+  <goal name="VC div_qr.54" expl="postcondition" proved="true">
+  <proof prover="4"><result status="valid" time="0.07"/></proof>
+  </goal>
+  <goal name="VC div_qr.55" expl="integer overflow" proved="true">
+  <proof prover="5" timelimit="5"><result status="valid" time="0.09" steps="95"/></proof>
+  </goal>
+  <goal name="VC div_qr.56" expl="precondition" proved="true">
+  <proof prover="4"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC div_qr.57" expl="precondition" proved="true">
+  <transf name="introduce_premises" proved="true" >
+   <goal name="VC div_qr.57.0" expl="precondition" proved="true">
+   <transf name="inline_goal" proved="true" >
+    <goal name="VC div_qr.57.0.0" expl="precondition" proved="true">
+    <transf name="split_goal_right" proved="true" >
+     <goal name="VC div_qr.57.0.0.0" expl="VC for div_qr" proved="true">
+     <proof prover="3"><result status="valid" time="0.04"/></proof>
+     </goal>
+     <goal name="VC div_qr.57.0.0.1" expl="VC for div_qr" proved="true">
+     <proof prover="4"><result status="valid" time="0.04"/></proof>
+     </goal>
+     <goal name="VC div_qr.57.0.0.2" expl="VC for div_qr" proved="true">
+     <proof prover="4"><result status="valid" time="0.10"/></proof>
+     </goal>
+     <goal name="VC div_qr.57.0.0.3" expl="VC for div_qr" proved="true">
+     <proof prover="3"><result status="valid" time="0.06"/></proof>
+     </goal>
+     <goal name="VC div_qr.57.0.0.4" expl="VC for div_qr" proved="true">
+     <proof prover="2" timelimit="1"><result status="valid" time="0.10"/></proof>
+     </goal>
+     <goal name="VC div_qr.57.0.0.5" expl="VC for div_qr" proved="true">
+     <proof prover="3"><result status="valid" time="0.08"/></proof>
+     </goal>
+    </transf>
+    </goal>
+   </transf>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div_qr.58" expl="precondition" proved="true">
+  <proof prover="4"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC div_qr.59" expl="precondition" proved="true">
+  <proof prover="4"><result status="valid" time="0.06"/></proof>
+  </goal>
+  <goal name="VC div_qr.60" expl="precondition" proved="true">
+  <proof prover="4"><result status="valid" time="0.55"/></proof>
+  </goal>
+  <goal name="VC div_qr.61" expl="precondition" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC div_qr.61.0" expl="precondition" proved="true">
+   <proof prover="1" memlimit="1000"><result status="valid" time="0.13"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div_qr.62" expl="precondition" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC div_qr.62.0" expl="precondition" proved="true">
+   <proof prover="2" timelimit="1"><result status="valid" time="0.14"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div_qr.63" expl="precondition" proved="true">
+  <proof prover="4"><result status="valid" time="0.04"/></proof>
+  </goal>
+  <goal name="VC div_qr.64" expl="precondition" proved="true">
+  <proof prover="5"><result status="valid" time="0.10" steps="77"/></proof>
+  </goal>
+  <goal name="VC div_qr.65" expl="precondition" proved="true">
+  <proof prover="4" timelimit="10"><result status="valid" time="0.01"/></proof>
+  </goal>
+  <goal name="VC div_qr.66" expl="assertion" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC div_qr.66.0" expl="VC for div_qr" proved="true">
+   <proof prover="5"><result status="valid" time="0.09" steps="82"/></proof>
+   </goal>
+   <goal name="VC div_qr.66.1" expl="VC for div_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div_qr.66.2" expl="VC for div_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.03"/></proof>
+   </goal>
+   <goal name="VC div_qr.66.3" expl="VC for div_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.01"/></proof>
+   </goal>
+   <goal name="VC div_qr.66.4" expl="VC for div_qr" proved="true">
+   <proof prover="0"><result status="valid" time="0.76"/></proof>
+   </goal>
+   <goal name="VC div_qr.66.5" expl="VC for div_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div_qr.66.6" expl="VC for div_qr" proved="true">
+   <proof prover="2" timelimit="1"><result status="valid" time="0.09"/></proof>
+   </goal>
+   <goal name="VC div_qr.66.7" expl="VC for div_qr" proved="true">
+   <proof prover="2" timelimit="1"><result status="valid" time="0.58"/></proof>
+   </goal>
+   <goal name="VC div_qr.66.8" expl="VC for div_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.07"/></proof>
+   </goal>
+   <goal name="VC div_qr.66.9" expl="VC for div_qr" proved="true">
+   <proof prover="1"><result status="valid" time="0.18"/></proof>
+   </goal>
+   <goal name="VC div_qr.66.10" expl="VC for div_qr" proved="true">
+   <proof prover="2" timelimit="1"><result status="valid" time="0.10"/></proof>
+   </goal>
+   <goal name="VC div_qr.66.11" expl="VC for div_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.01"/></proof>
+   </goal>
+   <goal name="VC div_qr.66.12" expl="VC for div_qr" proved="true">
+   <proof prover="0"><result status="valid" time="0.30"/></proof>
+   </goal>
+   <goal name="VC div_qr.66.13" expl="VC for div_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.04"/></proof>
+   </goal>
+   <goal name="VC div_qr.66.14" expl="VC for div_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.03"/></proof>
+   </goal>
+   <goal name="VC div_qr.66.15" expl="VC for div_qr" proved="true">
+   <proof prover="5"><result status="valid" time="0.09" steps="83"/></proof>
+   </goal>
+   <goal name="VC div_qr.66.16" expl="VC for div_qr" proved="true">
+   <proof prover="0"><result status="valid" time="0.42"/></proof>
+   </goal>
+   <goal name="VC div_qr.66.17" expl="VC for div_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.08"/></proof>
+   </goal>
+   <goal name="VC div_qr.66.18" expl="VC for div_qr" proved="true">
+   <proof prover="0"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div_qr.66.19" expl="VC for div_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.01"/></proof>
+   </goal>
+   <goal name="VC div_qr.66.20" expl="VC for div_qr" proved="true">
+   <proof prover="0"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div_qr.66.21" expl="VC for div_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.01"/></proof>
+   </goal>
+   <goal name="VC div_qr.66.22" expl="VC for div_qr" proved="true">
+   <proof prover="0"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div_qr.66.23" expl="VC for div_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.01"/></proof>
+   </goal>
+   <goal name="VC div_qr.66.24" expl="VC for div_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.01"/></proof>
+   </goal>
+   <goal name="VC div_qr.66.25" expl="VC for div_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.04"/></proof>
+   </goal>
+   <goal name="VC div_qr.66.26" expl="VC for div_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.06"/></proof>
+   </goal>
+   <goal name="VC div_qr.66.27" expl="VC for div_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.06"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div_qr.67" expl="assertion" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC div_qr.67.0" expl="VC for div_qr" proved="true">
+   <proof prover="5"><result status="valid" time="0.06" steps="83"/></proof>
+   </goal>
+   <goal name="VC div_qr.67.1" expl="VC for div_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.07"/></proof>
+   </goal>
+   <goal name="VC div_qr.67.2" expl="VC for div_qr" proved="true">
+   <proof prover="5"><result status="valid" time="0.11" steps="85"/></proof>
+   </goal>
+   <goal name="VC div_qr.67.3" expl="VC for div_qr" proved="true">
+   <proof prover="5"><result status="valid" time="0.11" steps="85"/></proof>
+   </goal>
+   <goal name="VC div_qr.67.4" expl="VC for div_qr" proved="true">
+   <proof prover="5"><result status="valid" time="0.11" steps="87"/></proof>
+   </goal>
+   <goal name="VC div_qr.67.5" expl="VC for div_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.04"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div_qr.68" expl="postcondition" proved="true">
+  <proof prover="4"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC div_qr.69" expl="assertion" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC div_qr.69.0" expl="VC for div_qr" proved="true">
+   <proof prover="1"><result status="valid" time="0.10"/></proof>
+   </goal>
+   <goal name="VC div_qr.69.1" expl="VC for div_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.04"/></proof>
+   </goal>
+   <goal name="VC div_qr.69.2" expl="VC for div_qr" proved="true">
+   <proof prover="0"><result status="valid" time="0.03"/></proof>
+   </goal>
+   <goal name="VC div_qr.69.3" expl="VC for div_qr" proved="true">
+   <proof prover="3"><result status="valid" time="1.00"/></proof>
+   </goal>
+   <goal name="VC div_qr.69.4" expl="VC for div_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.07"/></proof>
+   </goal>
+   <goal name="VC div_qr.69.5" expl="VC for div_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.05"/></proof>
+   </goal>
+   <goal name="VC div_qr.69.6" expl="VC for div_qr" proved="true">
+   <proof prover="2" timelimit="1"><result status="valid" time="0.52"/></proof>
+   </goal>
+   <goal name="VC div_qr.69.7" expl="VC for div_qr" proved="true">
+   <proof prover="2" timelimit="1"><result status="valid" time="0.52"/></proof>
+   </goal>
+   <goal name="VC div_qr.69.8" expl="VC for div_qr" proved="true">
+   <proof prover="1"><result status="valid" time="0.42"/></proof>
+   </goal>
+   <goal name="VC div_qr.69.9" expl="VC for div_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.01"/></proof>
+   </goal>
+   <goal name="VC div_qr.69.10" expl="VC for div_qr" proved="true">
+   <proof prover="0"><result status="valid" time="0.23"/></proof>
+   </goal>
+   <goal name="VC div_qr.69.11" expl="VC for div_qr" proved="true">
+   <proof prover="1"><result status="valid" time="0.14"/></proof>
+   </goal>
+   <goal name="VC div_qr.69.12" expl="VC for div_qr" proved="true">
+   <proof prover="0"><result status="valid" time="0.04"/></proof>
+   </goal>
+   <goal name="VC div_qr.69.13" expl="VC for div_qr" proved="true">
+   <proof prover="1"><result status="valid" time="0.22"/></proof>
+   </goal>
+   <goal name="VC div_qr.69.14" expl="VC for div_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.05"/></proof>
+   </goal>
+   <goal name="VC div_qr.69.15" expl="VC for div_qr" proved="true">
+   <proof prover="1"><result status="valid" time="0.37"/></proof>
+   </goal>
+   <goal name="VC div_qr.69.16" expl="VC for div_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.01"/></proof>
+   </goal>
+   <goal name="VC div_qr.69.17" expl="VC for div_qr" proved="true">
+   <proof prover="0"><result status="valid" time="0.68"/></proof>
+   </goal>
+   <goal name="VC div_qr.69.18" expl="VC for div_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.01"/></proof>
+   </goal>
+   <goal name="VC div_qr.69.19" expl="VC for div_qr" proved="true">
+   <proof prover="1"><result status="valid" time="0.11"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div_qr.70" expl="postcondition" proved="true">
+  <proof prover="4"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC div_qr.71" expl="postcondition" proved="true">
+  <proof prover="1"><result status="valid" time="0.25"/></proof>
+  </goal>
+  <goal name="VC div_qr.72" expl="integer overflow" proved="true">
+  <transf name="introduce_premises" proved="true" >
+   <goal name="VC div_qr.72.0" expl="integer overflow" proved="true">
+   <transf name="inline_goal" proved="true" >
+    <goal name="VC div_qr.72.0.0" expl="integer overflow" proved="true">
+    <transf name="split_goal_right" proved="true" >
+     <goal name="VC div_qr.72.0.0.0" expl="VC for div_qr" proved="true">
+     <proof prover="4"><result status="valid" time="0.02"/></proof>
+     </goal>
+     <goal name="VC div_qr.72.0.0.1" expl="VC for div_qr" proved="true">
+     <proof prover="4"><result status="valid" time="0.03"/></proof>
+     </goal>
+    </transf>
+    </goal>
+   </transf>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div_qr.73" expl="precondition" proved="true">
+  <proof prover="5"><result status="valid" time="0.02" steps="61"/></proof>
+  </goal>
+  <goal name="VC div_qr.74" expl="integer overflow" proved="true">
+  <proof prover="1"><result status="valid" time="0.08"/></proof>
+  </goal>
+  <goal name="VC div_qr.75" expl="precondition" proved="true">
+  <proof prover="5"><result status="valid" time="0.02" steps="62"/></proof>
+  </goal>
+  <goal name="VC div_qr.76" expl="integer overflow" proved="true">
+  <proof prover="4"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC div_qr.77" expl="precondition" proved="true">
+  <proof prover="5"><result status="valid" time="0.02" steps="63"/></proof>
+  </goal>
+  <goal name="VC div_qr.78" expl="precondition" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC div_qr.78.0" expl="precondition" proved="true">
+   <proof prover="5"><result status="valid" time="0.04" steps="33"/></proof>
+   </goal>
+   <goal name="VC div_qr.78.1" expl="precondition" proved="true">
+   <proof prover="5"><result status="valid" time="0.05" steps="33"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div_qr.79" expl="precondition" proved="true">
+  <transf name="introduce_premises" proved="true" >
+   <goal name="VC div_qr.79.0" expl="precondition" proved="true">
+   <transf name="inline_goal" proved="true" >
+    <goal name="VC div_qr.79.0.0" expl="precondition" proved="true">
+    <transf name="split_goal_right" proved="true" >
+     <goal name="VC div_qr.79.0.0.0" expl="VC for div_qr" proved="true">
+     <proof prover="3"><result status="valid" time="0.02"/></proof>
+     </goal>
+     <goal name="VC div_qr.79.0.0.1" expl="VC for div_qr" proved="true">
+     <proof prover="4"><result status="valid" time="0.11"/></proof>
+     </goal>
+     <goal name="VC div_qr.79.0.0.2" expl="VC for div_qr" proved="true">
+     <proof prover="4"><result status="valid" time="0.11"/></proof>
+     </goal>
+     <goal name="VC div_qr.79.0.0.3" expl="VC for div_qr" proved="true">
+     <proof prover="3"><result status="valid" time="0.04"/></proof>
+     </goal>
+     <goal name="VC div_qr.79.0.0.4" expl="VC for div_qr" proved="true">
+     <proof prover="3"><result status="valid" time="0.04"/></proof>
+     </goal>
+     <goal name="VC div_qr.79.0.0.5" expl="VC for div_qr" proved="true">
+     <proof prover="3"><result status="valid" time="0.03"/></proof>
+     </goal>
+    </transf>
+    </goal>
+   </transf>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div_qr.80" expl="precondition" proved="true">
+  <proof prover="3"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC div_qr.81" expl="precondition" proved="true">
+  <transf name="introduce_premises" proved="true" >
+   <goal name="VC div_qr.81.0" expl="precondition" proved="true">
+   <transf name="inline_goal" proved="true" >
+    <goal name="VC div_qr.81.0.0" expl="precondition" proved="true">
+    <transf name="split_goal_right" proved="true" >
+     <goal name="VC div_qr.81.0.0.0" expl="precondition" proved="true">
+     <proof prover="4"><result status="valid" time="0.03"/></proof>
+     </goal>
+    </transf>
+    </goal>
+   </transf>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div_qr.82" expl="precondition" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC div_qr.82.0" expl="precondition" proved="true">
+   <proof prover="5" timelimit="5" memlimit="2000"><result status="valid" time="0.11" steps="46"/></proof>
+   </goal>
+   <goal name="VC div_qr.82.1" expl="precondition" proved="true">
+   <proof prover="0" memlimit="1000"><result status="valid" time="0.03"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div_qr.83" expl="precondition" proved="true">
+  <proof prover="5"><result status="valid" time="0.06" steps="77"/></proof>
+  </goal>
+  <goal name="VC div_qr.84" expl="precondition" proved="true">
+  <proof prover="5"><result status="valid" time="0.05" steps="132"/></proof>
+  </goal>
+  <goal name="VC div_qr.85" expl="assertion" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC div_qr.85.0" expl="VC for div_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.03"/></proof>
+   </goal>
+   <goal name="VC div_qr.85.1" expl="VC for div_qr" proved="true">
+   <proof prover="5"><result status="valid" time="0.11" steps="213"/></proof>
+   </goal>
+   <goal name="VC div_qr.85.2" expl="VC for div_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.03"/></proof>
+   </goal>
+   <goal name="VC div_qr.85.3" expl="VC for div_qr" proved="true">
+   <proof prover="5"><result status="valid" time="0.05" steps="122"/></proof>
+   </goal>
+   <goal name="VC div_qr.85.4" expl="VC for div_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.07"/></proof>
+   </goal>
+   <goal name="VC div_qr.85.5" expl="VC for div_qr" proved="true">
+   <proof prover="5"><result status="valid" time="0.07" steps="129"/></proof>
+   </goal>
+   <goal name="VC div_qr.85.6" expl="VC for div_qr" proved="true">
+   <proof prover="5"><result status="valid" time="0.06" steps="128"/></proof>
+   </goal>
+   <goal name="VC div_qr.85.7" expl="VC for div_qr" proved="true">
+   <proof prover="5"><result status="valid" time="0.03" steps="58"/></proof>
+   </goal>
+   <goal name="VC div_qr.85.8" expl="VC for div_qr" proved="true">
+   <proof prover="5"><result status="valid" time="0.14" steps="139"/></proof>
+   </goal>
+   <goal name="VC div_qr.85.9" expl="VC for div_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.01"/></proof>
+   </goal>
+   <goal name="VC div_qr.85.10" expl="VC for div_qr" proved="true">
+   <proof prover="1"><result status="valid" time="0.63"/></proof>
+   </goal>
+   <goal name="VC div_qr.85.11" expl="VC for div_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.06"/></proof>
+   </goal>
+   <goal name="VC div_qr.85.12" expl="VC for div_qr" proved="true">
+   <proof prover="5"><result status="valid" time="0.06" steps="123"/></proof>
+   </goal>
+   <goal name="VC div_qr.85.13" expl="VC for div_qr" proved="true">
+   <proof prover="5"><result status="valid" time="0.46" steps="339"/></proof>
+   </goal>
+   <goal name="VC div_qr.85.14" expl="VC for div_qr" proved="true">
+   <proof prover="5"><result status="valid" time="0.04" steps="60"/></proof>
+   </goal>
+   <goal name="VC div_qr.85.15" expl="VC for div_qr" proved="true">
+   <proof prover="5"><result status="valid" time="0.05" steps="128"/></proof>
+   </goal>
+   <goal name="VC div_qr.85.16" expl="VC for div_qr" proved="true">
+   <proof prover="0"><result status="valid" time="0.44"/></proof>
+   </goal>
+   <goal name="VC div_qr.85.17" expl="VC for div_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div_qr.85.18" expl="VC for div_qr" proved="true">
+   <proof prover="2" timelimit="1"><result status="valid" time="0.12"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div_qr.86" expl="integer overflow" proved="true">
+  <proof prover="5" timelimit="5"><result status="valid" time="0.08" steps="130"/></proof>
+  </goal>
+  <goal name="VC div_qr.87" expl="precondition" proved="true">
+  <transf name="introduce_premises" proved="true" >
+   <goal name="VC div_qr.87.0" expl="precondition" proved="true">
+   <transf name="inline_goal" proved="true" >
+    <goal name="VC div_qr.87.0.0" expl="precondition" proved="true">
+    <transf name="split_goal_right" proved="true" >
+     <goal name="VC div_qr.87.0.0.0" expl="VC for div_qr" proved="true">
+     <proof prover="4"><result status="valid" time="0.06"/></proof>
+     </goal>
+     <goal name="VC div_qr.87.0.0.1" expl="VC for div_qr" proved="true">
+     <proof prover="5"><result status="valid" time="0.08" steps="126"/></proof>
+     </goal>
+    </transf>
+    </goal>
+   </transf>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div_qr.88" expl="precondition" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC div_qr.88.0" expl="precondition" proved="true">
+   <proof prover="1"><result status="valid" time="0.96"/></proof>
+   </goal>
+   <goal name="VC div_qr.88.1" expl="precondition" proved="true">
+   <proof prover="5" timelimit="5" memlimit="2000"><result status="valid" time="0.08" steps="147"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div_qr.89" expl="precondition" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC div_qr.89.0" expl="precondition" proved="true">
+   <proof prover="0"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div_qr.89.1" expl="precondition" proved="true">
+   <proof prover="3"><result status="valid" time="0.03"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div_qr.90" expl="precondition" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC div_qr.90.0" expl="precondition" proved="true">
+   <proof prover="5" timelimit="5" memlimit="2000"><result status="valid" time="0.05" steps="60"/></proof>
+   </goal>
+   <goal name="VC div_qr.90.1" expl="precondition" proved="true">
+   <proof prover="5" timelimit="5" memlimit="2000"><result status="valid" time="0.10" steps="171"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div_qr.91" expl="precondition" proved="true">
+  <proof prover="5"><result status="valid" time="0.08" steps="173"/></proof>
+  </goal>
+  <goal name="VC div_qr.92" expl="precondition" proved="true">
+  <proof prover="2" memlimit="2000"><result status="valid" time="0.24"/></proof>
+  </goal>
+  <goal name="VC div_qr.93" expl="precondition" proved="true">
+  <proof prover="4"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC div_qr.94" expl="assertion" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC div_qr.94.0" expl="VC for div_qr" proved="true">
+   <proof prover="5"><result status="valid" time="0.25" steps="243"/></proof>
+   </goal>
+   <goal name="VC div_qr.94.1" expl="VC for div_qr" proved="true">
+   <proof prover="1"><result status="valid" time="2.01"/></proof>
+   </goal>
+   <goal name="VC div_qr.94.2" expl="VC for div_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.08"/></proof>
+   </goal>
+   <goal name="VC div_qr.94.3" expl="VC for div_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.04"/></proof>
+   </goal>
+   <goal name="VC div_qr.94.4" expl="VC for div_qr" proved="true">
+   <proof prover="5"><result status="valid" time="0.04" steps="79"/></proof>
+   </goal>
+   <goal name="VC div_qr.94.5" expl="VC for div_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.25"/></proof>
+   </goal>
+   <goal name="VC div_qr.94.6" expl="VC for div_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.26"/></proof>
+   </goal>
+   <goal name="VC div_qr.94.7" expl="VC for div_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.04"/></proof>
+   </goal>
+   <goal name="VC div_qr.94.8" expl="VC for div_qr" proved="true">
+   <proof prover="5"><result status="valid" time="0.05" steps="83"/></proof>
+   </goal>
+   <goal name="VC div_qr.94.9" expl="VC for div_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.01"/></proof>
+   </goal>
+   <goal name="VC div_qr.94.10" expl="VC for div_qr" proved="true">
+   <proof prover="5"><result status="valid" time="0.04" steps="83"/></proof>
+   </goal>
+   <goal name="VC div_qr.94.11" expl="VC for div_qr" proved="true">
+   <proof prover="5"><result status="valid" time="0.07" steps="85"/></proof>
+   </goal>
+   <goal name="VC div_qr.94.12" expl="VC for div_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div_qr.94.13" expl="VC for div_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.03"/></proof>
+   </goal>
+   <goal name="VC div_qr.94.14" expl="VC for div_qr" proved="true">
+   <proof prover="5"><result status="valid" time="0.04" steps="81"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div_qr.95" expl="precondition" proved="true">
+  <transf name="introduce_premises" proved="true" >
+   <goal name="VC div_qr.95.0" expl="precondition" proved="true">
+   <transf name="inline_goal" proved="true" >
+    <goal name="VC div_qr.95.0.0" expl="precondition" proved="true">
+    <transf name="split_goal_right" proved="true" >
+     <goal name="VC div_qr.95.0.0.0" expl="precondition" proved="true">
+     <proof prover="4"><result status="valid" time="0.04"/></proof>
+     </goal>
+    </transf>
+    </goal>
+   </transf>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div_qr.96" expl="precondition" proved="true">
+  <transf name="introduce_premises" proved="true" >
+   <goal name="VC div_qr.96.0" expl="precondition" proved="true">
+   <transf name="inline_goal" proved="true" >
+    <goal name="VC div_qr.96.0.0" expl="precondition" proved="true">
+    <transf name="split_goal_right" proved="true" >
+     <goal name="VC div_qr.96.0.0.0" expl="precondition" proved="true">
+     <proof prover="4"><result status="valid" time="0.04"/></proof>
+     </goal>
+    </transf>
+    </goal>
+   </transf>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div_qr.97" expl="integer overflow" proved="true">
+  <proof prover="5" timelimit="5" memlimit="2000"><result status="valid" time="0.15" steps="111"/></proof>
+  </goal>
+  <goal name="VC div_qr.98" expl="precondition" proved="true">
+  <proof prover="5"><result status="valid" time="0.17" steps="111"/></proof>
+  </goal>
+  <goal name="VC div_qr.99" expl="precondition" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC div_qr.99.0" expl="precondition" proved="true">
+   <proof prover="5" timelimit="20" memlimit="2000"><result status="valid" time="0.08" steps="79"/></proof>
+   </goal>
+   <goal name="VC div_qr.99.1" expl="precondition" proved="true">
+   <proof prover="5" timelimit="5" memlimit="2000"><result status="valid" time="0.10" steps="87"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div_qr.100" expl="postcondition" proved="true">
+  <proof prover="0"><result status="valid" time="4.57"/></proof>
+  </goal>
+  <goal name="VC div_qr.101" expl="postcondition" proved="true">
+  <proof prover="5"><result status="valid" time="0.08" steps="144"/></proof>
+  </goal>
+  <goal name="VC div_qr.102" expl="postcondition" proved="true">
+  <proof prover="5"><result status="valid" time="0.06" steps="82"/></proof>
+  </goal>
+  <goal name="VC div_qr.103" expl="postcondition" proved="true">
+  <proof prover="2" timelimit="1"><result status="valid" time="0.14"/></proof>
+  </goal>
+  <goal name="VC div_qr.104" expl="precondition" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC div_qr.104.0" expl="precondition" proved="true">
+   <proof prover="5"><result status="valid" time="0.07" steps="40"/></proof>
+   </goal>
+   <goal name="VC div_qr.104.1" expl="precondition" proved="true">
+   <proof prover="5" timelimit="20" memlimit="2000"><result status="valid" time="0.07" steps="40"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div_qr.105" expl="precondition" proved="true">
+  <proof prover="5" timelimit="20" memlimit="2000"><result status="valid" time="0.05" steps="39"/></proof>
+  </goal>
+  <goal name="VC div_qr.106" expl="precondition" proved="true">
+  <proof prover="4"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC div_qr.107" expl="precondition" proved="true">
+  <proof prover="4"><result status="valid" time="0.04"/></proof>
+  </goal>
+  <goal name="VC div_qr.108" expl="precondition" proved="true">
+  <transf name="introduce_premises" proved="true" >
+   <goal name="VC div_qr.108.0" expl="precondition" proved="true">
+   <transf name="inline_goal" proved="true" >
+    <goal name="VC div_qr.108.0.0" expl="precondition" proved="true">
+    <transf name="split_goal_right" proved="true" >
+     <goal name="VC div_qr.108.0.0.0" expl="precondition" proved="true">
+     <proof prover="2" timelimit="1"><result status="valid" time="0.03"/></proof>
+     </goal>
+    </transf>
+    </goal>
+   </transf>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div_qr.109" expl="assertion" proved="true">
+  <proof prover="5"><result status="valid" time="0.07" steps="127"/></proof>
+  </goal>
+  <goal name="VC div_qr.110" expl="precondition" proved="true">
+  <proof prover="1"><result status="valid" time="0.10"/></proof>
+  </goal>
+  <goal name="VC div_qr.111" expl="precondition" proved="true">
+  <proof prover="4"><result status="valid" time="0.01"/></proof>
+  </goal>
+  <goal name="VC div_qr.112" expl="precondition" proved="true">
+  <transf name="introduce_premises" proved="true" >
+   <goal name="VC div_qr.112.0" expl="precondition" proved="true">
+   <transf name="inline_goal" proved="true" >
+    <goal name="VC div_qr.112.0.0" expl="precondition" proved="true">
+    <transf name="split_goal_right" proved="true" >
+     <goal name="VC div_qr.112.0.0.0" expl="precondition" proved="true">
+     <proof prover="4"><result status="valid" time="0.04"/></proof>
+     </goal>
+    </transf>
+    </goal>
+   </transf>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div_qr.113" expl="assertion" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC div_qr.113.0" expl="VC for div_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.04"/></proof>
+   </goal>
+   <goal name="VC div_qr.113.1" expl="VC for div_qr" proved="true">
+   <proof prover="5"><result status="valid" time="0.04" steps="50"/></proof>
+   </goal>
+   <goal name="VC div_qr.113.2" expl="VC for div_qr" proved="true">
+   <proof prover="5"><result status="valid" time="0.03" steps="50"/></proof>
+   </goal>
+   <goal name="VC div_qr.113.3" expl="VC for div_qr" proved="true">
+   <proof prover="5"><result status="valid" time="0.04" steps="52"/></proof>
+   </goal>
+   <goal name="VC div_qr.113.4" expl="VC for div_qr" proved="true">
+   <proof prover="5"><result status="valid" time="0.03" steps="53"/></proof>
+   </goal>
+   <goal name="VC div_qr.113.5" expl="VC for div_qr" proved="true">
+   <proof prover="1"><result status="valid" time="0.35"/></proof>
+   </goal>
+   <goal name="VC div_qr.113.6" expl="VC for div_qr" proved="true">
+   <proof prover="5"><result status="valid" time="0.08" steps="120"/></proof>
+   </goal>
+   <goal name="VC div_qr.113.7" expl="VC for div_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div_qr.113.8" expl="VC for div_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.04"/></proof>
+   </goal>
+   <goal name="VC div_qr.113.9" expl="VC for div_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.06"/></proof>
+   </goal>
+   <goal name="VC div_qr.113.10" expl="VC for div_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.04"/></proof>
+   </goal>
+   <goal name="VC div_qr.113.11" expl="VC for div_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.04"/></proof>
+   </goal>
+   <goal name="VC div_qr.113.12" expl="VC for div_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.04"/></proof>
+   </goal>
+   <goal name="VC div_qr.113.13" expl="VC for div_qr" proved="true">
+   <proof prover="1"><result status="valid" time="0.31"/></proof>
+   </goal>
+   <goal name="VC div_qr.113.14" expl="VC for div_qr" proved="true">
+   <proof prover="5"><result status="valid" time="0.05" steps="54"/></proof>
+   </goal>
+   <goal name="VC div_qr.113.15" expl="VC for div_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.04"/></proof>
+   </goal>
+   <goal name="VC div_qr.113.16" expl="VC for div_qr" proved="true">
+   <proof prover="1"><result status="valid" time="0.10"/></proof>
+   </goal>
+   <goal name="VC div_qr.113.17" expl="VC for div_qr" proved="true">
+   <proof prover="5"><result status="valid" time="0.10" steps="135"/></proof>
+   </goal>
+   <goal name="VC div_qr.113.18" expl="VC for div_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.04"/></proof>
+   </goal>
+   <goal name="VC div_qr.113.19" expl="VC for div_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.01"/></proof>
+   </goal>
+   <goal name="VC div_qr.113.20" expl="VC for div_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.03"/></proof>
+   </goal>
+   <goal name="VC div_qr.113.21" expl="VC for div_qr" proved="true">
+   <proof prover="1"><result status="valid" time="0.11"/></proof>
+   </goal>
+   <goal name="VC div_qr.113.22" expl="VC for div_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.03"/></proof>
+   </goal>
+   <goal name="VC div_qr.113.23" expl="VC for div_qr" proved="true">
+   <proof prover="5"><result status="valid" time="0.14" steps="63"/></proof>
+   </goal>
+   <goal name="VC div_qr.113.24" expl="VC for div_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.03"/></proof>
+   </goal>
+   <goal name="VC div_qr.113.25" expl="VC for div_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div_qr.113.26" expl="VC for div_qr" proved="true">
+   <proof prover="2" timelimit="1"><result status="valid" time="0.52"/></proof>
+   </goal>
+   <goal name="VC div_qr.113.27" expl="VC for div_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.03"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div_qr.114" expl="postcondition" proved="true">
+  <proof prover="1"><result status="valid" time="0.12"/></proof>
+  </goal>
+  <goal name="VC div_qr.115" expl="postcondition" proved="true">
+  <proof prover="4"><result status="valid" time="0.04"/></proof>
+  </goal>
+  <goal name="VC div_qr.116" expl="precondition" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC div_qr.116.0" expl="precondition" proved="true">
+   <proof prover="4"><result status="valid" time="0.03"/></proof>
+   </goal>
+   <goal name="VC div_qr.116.1" expl="precondition" proved="true">
+   <proof prover="4"><result status="valid" time="0.04"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div_qr.117" expl="precondition" proved="true">
+  <proof prover="5" timelimit="5" memlimit="2000"><result status="valid" time="0.05" steps="48"/></proof>
+  </goal>
+  <goal name="VC div_qr.118" expl="precondition" proved="true">
+  <transf name="introduce_premises" proved="true" >
+   <goal name="VC div_qr.118.0" expl="precondition" proved="true">
+   <transf name="inline_goal" proved="true" >
+    <goal name="VC div_qr.118.0.0" expl="precondition" proved="true">
+    <proof prover="5" timelimit="5"><result status="valid" time="0.07" steps="86"/></proof>
+    </goal>
+   </transf>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div_qr.119" expl="precondition" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC div_qr.119.0" expl="precondition" proved="true">
+   <proof prover="3"><result status="valid" time="0.09"/></proof>
+   </goal>
+   <goal name="VC div_qr.119.1" expl="precondition" proved="true">
+   <proof prover="0"><result status="valid" time="0.04"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div_qr.120" expl="precondition" proved="true">
+  <transf name="inline_all" proved="true" >
+   <goal name="VC div_qr.120.0" expl="precondition" proved="true">
+   <proof prover="4"><result status="valid" time="0.18"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div_qr.121" expl="precondition" proved="true">
+  <proof prover="2" timelimit="1"><result status="valid" time="0.14"/></proof>
+  </goal>
+  <goal name="VC div_qr.122" expl="precondition" proved="true">
+  <proof prover="4"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC div_qr.123" expl="assertion" proved="true">
+  <proof prover="0"><result status="valid" time="0.60"/></proof>
+  </goal>
+  <goal name="VC div_qr.124" expl="assertion" proved="true">
+  <proof prover="5" timelimit="20" memlimit="2000"><result status="valid" time="0.04" steps="132"/></proof>
+  </goal>
+  <goal name="VC div_qr.125" expl="assertion" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC div_qr.125.0" expl="VC for div_qr" proved="true">
+   <proof prover="5"><result status="valid" time="0.10" steps="64"/></proof>
+   </goal>
+   <goal name="VC div_qr.125.1" expl="VC for div_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.04"/></proof>
+   </goal>
+   <goal name="VC div_qr.125.2" expl="VC for div_qr" proved="true">
+   <proof prover="5"><result status="valid" time="0.16" steps="147"/></proof>
+   </goal>
+   <goal name="VC div_qr.125.3" expl="VC for div_qr" proved="true">
+   <proof prover="5"><result status="valid" time="0.04" steps="136"/></proof>
+   </goal>
+   <goal name="VC div_qr.125.4" expl="VC for div_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.07"/></proof>
+   </goal>
+   <goal name="VC div_qr.125.5" expl="VC for div_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.03"/></proof>
+   </goal>
+   <goal name="VC div_qr.125.6" expl="VC for div_qr" proved="true">
+   <proof prover="1"><result status="valid" time="0.10"/></proof>
+   </goal>
+   <goal name="VC div_qr.125.7" expl="VC for div_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.03"/></proof>
+   </goal>
+   <goal name="VC div_qr.125.8" expl="VC for div_qr" proved="true">
+   <proof prover="5"><result status="valid" time="0.10" steps="147"/></proof>
+   </goal>
+   <goal name="VC div_qr.125.9" expl="VC for div_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div_qr.125.10" expl="VC for div_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.05"/></proof>
+   </goal>
+   <goal name="VC div_qr.125.11" expl="VC for div_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div_qr.125.12" expl="VC for div_qr" proved="true">
+   <proof prover="2" timelimit="1"><result status="valid" time="0.60"/></proof>
+   </goal>
+   <goal name="VC div_qr.125.13" expl="VC for div_qr" proved="true">
+   <proof prover="1"><result status="valid" time="0.54"/></proof>
+   </goal>
+   <goal name="VC div_qr.125.14" expl="VC for div_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.03"/></proof>
+   </goal>
+   <goal name="VC div_qr.125.15" expl="VC for div_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.04"/></proof>
+   </goal>
+   <goal name="VC div_qr.125.16" expl="VC for div_qr" proved="true">
+   <proof prover="1"><result status="valid" time="0.10"/></proof>
+   </goal>
+   <goal name="VC div_qr.125.17" expl="VC for div_qr" proved="true">
+   <proof prover="5"><result status="valid" time="0.09" steps="144"/></proof>
+   </goal>
+   <goal name="VC div_qr.125.18" expl="VC for div_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.03"/></proof>
+   </goal>
+   <goal name="VC div_qr.125.19" expl="VC for div_qr" proved="true">
+   <proof prover="5"><result status="valid" time="0.08" steps="74"/></proof>
+   </goal>
+   <goal name="VC div_qr.125.20" expl="VC for div_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.79"/></proof>
+   </goal>
+   <goal name="VC div_qr.125.21" expl="VC for div_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.04"/></proof>
+   </goal>
+   <goal name="VC div_qr.125.22" expl="VC for div_qr" proved="true">
+   <proof prover="1"><result status="valid" time="0.11"/></proof>
+   </goal>
+   <goal name="VC div_qr.125.23" expl="VC for div_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.05"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div_qr.126" expl="postcondition" proved="true">
+  <proof prover="1"><result status="valid" time="4.75"/></proof>
+  </goal>
+  <goal name="VC div_qr.127" expl="assertion" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC div_qr.127.0" expl="VC for div_qr" proved="true">
+   <proof prover="1"><result status="valid" time="0.24"/></proof>
+   </goal>
+   <goal name="VC div_qr.127.1" expl="VC for div_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.01"/></proof>
+   </goal>
+   <goal name="VC div_qr.127.2" expl="VC for div_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.06"/></proof>
+   </goal>
+   <goal name="VC div_qr.127.3" expl="VC for div_qr" proved="true">
+   <proof prover="5"><result status="valid" time="0.06" steps="134"/></proof>
+   </goal>
+   <goal name="VC div_qr.127.4" expl="VC for div_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.72"/></proof>
+   </goal>
+   <goal name="VC div_qr.127.5" expl="VC for div_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.57"/></proof>
+   </goal>
+   <goal name="VC div_qr.127.6" expl="VC for div_qr" proved="true">
+   <proof prover="5"><result status="valid" time="0.09" steps="142"/></proof>
+   </goal>
+   <goal name="VC div_qr.127.7" expl="VC for div_qr" proved="true">
+   <proof prover="5"><result status="valid" time="0.11" steps="141"/></proof>
+   </goal>
+   <goal name="VC div_qr.127.8" expl="VC for div_qr" proved="true">
+   <proof prover="5"><result status="valid" time="0.05" steps="67"/></proof>
+   </goal>
+   <goal name="VC div_qr.127.9" expl="VC for div_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.04"/></proof>
+   </goal>
+   <goal name="VC div_qr.127.10" expl="VC for div_qr" proved="true">
+   <proof prover="0"><result status="valid" time="2.48"/></proof>
+   </goal>
+   <goal name="VC div_qr.127.11" expl="VC for div_qr" proved="true">
+   <proof prover="2" timelimit="1"><result status="valid" time="0.42"/></proof>
+   </goal>
+   <goal name="VC div_qr.127.12" expl="VC for div_qr" proved="true">
+   <proof prover="5"><result status="valid" time="0.10" steps="135"/></proof>
+   </goal>
+   <goal name="VC div_qr.127.13" expl="VC for div_qr" proved="true">
+   <proof prover="1"><result status="valid" time="1.41"/></proof>
+   </goal>
+   <goal name="VC div_qr.127.14" expl="VC for div_qr" proved="true">
+   <proof prover="0"><result status="valid" time="0.83"/></proof>
+   </goal>
+   <goal name="VC div_qr.127.15" expl="VC for div_qr" proved="true">
+   <proof prover="5"><result status="valid" time="0.04" steps="69"/></proof>
+   </goal>
+   <goal name="VC div_qr.127.16" expl="VC for div_qr" proved="true">
+   <proof prover="5"><result status="valid" time="0.12" steps="141"/></proof>
+   </goal>
+   <goal name="VC div_qr.127.17" expl="VC for div_qr" proved="true">
+   <proof prover="0"><result status="valid" time="0.42"/></proof>
+   </goal>
+   <goal name="VC div_qr.127.18" expl="VC for div_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.01"/></proof>
+   </goal>
+   <goal name="VC div_qr.127.19" expl="VC for div_qr" proved="true">
+   <proof prover="2" timelimit="1"><result status="valid" time="0.12"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div_qr.128" expl="integer overflow" proved="true">
+  <proof prover="0"><result status="valid" time="2.55"/></proof>
+  <proof prover="1"><result status="valid" time="0.85"/></proof>
+  </goal>
+  <goal name="VC div_qr.129" expl="precondition" proved="true">
+  <proof prover="5"><result status="valid" time="0.08" steps="133"/></proof>
+  </goal>
+  <goal name="VC div_qr.130" expl="precondition" proved="true">
+  <proof prover="2" memlimit="2000"><result status="valid" time="0.54"/></proof>
+  </goal>
+  <goal name="VC div_qr.131" expl="precondition" proved="true">
+  <proof prover="5" timelimit="5" memlimit="2000"><result status="valid" time="0.08" steps="68"/></proof>
+  </goal>
+  <goal name="VC div_qr.132" expl="precondition" proved="true">
+  <proof prover="5"><result status="valid" time="0.11" steps="193"/></proof>
+  </goal>
+  <goal name="VC div_qr.133" expl="precondition" proved="true">
+  <proof prover="4"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC div_qr.134" expl="precondition" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC div_qr.134.0" expl="precondition" proved="true">
+   <proof prover="2" timelimit="1"><result status="valid" time="0.10"/></proof>
+   </goal>
+   <goal name="VC div_qr.134.1" expl="precondition" proved="true">
+   <proof prover="4"><result status="valid" time="0.04"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div_qr.135" expl="precondition" proved="true">
+  <proof prover="5" timelimit="20" memlimit="2000"><result status="valid" time="0.18" steps="178"/></proof>
+  </goal>
+  <goal name="VC div_qr.136" expl="precondition" proved="true">
+  <transf name="introduce_premises" proved="true" >
+   <goal name="VC div_qr.136.0" expl="precondition" proved="true">
+   <transf name="inline_goal" proved="true" >
+    <goal name="VC div_qr.136.0.0" expl="precondition" proved="true">
+    <transf name="split_goal_right" proved="true" >
+     <goal name="VC div_qr.136.0.0.0" expl="VC for div_qr" proved="true">
+     <proof prover="3"><result status="valid" time="0.03"/></proof>
+     </goal>
+     <goal name="VC div_qr.136.0.0.1" expl="VC for div_qr" proved="true">
+     <proof prover="2" memlimit="2000"><result status="valid" time="0.08"/></proof>
+     </goal>
+     <goal name="VC div_qr.136.0.0.2" expl="VC for div_qr" proved="true">
+     <proof prover="4"><result status="valid" time="0.04"/></proof>
+     </goal>
+     <goal name="VC div_qr.136.0.0.3" expl="VC for div_qr" proved="true">
+     <proof prover="3"><result status="valid" time="0.04"/></proof>
+     </goal>
+     <goal name="VC div_qr.136.0.0.4" expl="VC for div_qr" proved="true">
+     <proof prover="3"><result status="valid" time="0.04"/></proof>
+     </goal>
+     <goal name="VC div_qr.136.0.0.5" expl="VC for div_qr" proved="true">
+     <proof prover="3"><result status="valid" time="0.04"/></proof>
+     </goal>
+    </transf>
+    </goal>
+   </transf>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div_qr.137" expl="precondition" proved="true">
+  <proof prover="5" timelimit="20" memlimit="2000"><result status="valid" time="0.06" steps="80"/></proof>
+  </goal>
+  <goal name="VC div_qr.138" expl="precondition" proved="true">
+  <transf name="introduce_premises" proved="true" >
+   <goal name="VC div_qr.138.0" expl="precondition" proved="true">
+   <transf name="inline_goal" proved="true" >
+    <goal name="VC div_qr.138.0.0" expl="precondition" proved="true">
+    <proof prover="5" timelimit="5"><result status="valid" time="0.22" steps="82"/></proof>
+    </goal>
+   </transf>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div_qr.139" expl="assertion" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC div_qr.139.0" expl="VC for div_qr" proved="true">
+   <proof prover="5"><result status="valid" time="0.09" steps="85"/></proof>
+   </goal>
+   <goal name="VC div_qr.139.1" expl="VC for div_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.03"/></proof>
+   </goal>
+   <goal name="VC div_qr.139.2" expl="VC for div_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.04"/></proof>
+   </goal>
+   <goal name="VC div_qr.139.3" expl="VC for div_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div_qr.139.4" expl="VC for div_qr" proved="true">
+   <proof prover="0"><result status="valid" time="0.92"/></proof>
+   </goal>
+   <goal name="VC div_qr.139.5" expl="VC for div_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div_qr.139.6" expl="VC for div_qr" proved="true">
+   <proof prover="2" timelimit="1"><result status="valid" time="0.10"/></proof>
+   </goal>
+   <goal name="VC div_qr.139.7" expl="VC for div_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.74"/></proof>
+   </goal>
+   <goal name="VC div_qr.139.8" expl="VC for div_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.07"/></proof>
+   </goal>
+   <goal name="VC div_qr.139.9" expl="VC for div_qr" proved="true">
+   <proof prover="1"><result status="valid" time="0.36"/></proof>
+   </goal>
+   <goal name="VC div_qr.139.10" expl="VC for div_qr" proved="true">
+   <proof prover="2" timelimit="1"><result status="valid" time="0.11"/></proof>
+   </goal>
+   <goal name="VC div_qr.139.11" expl="VC for div_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.01"/></proof>
+   </goal>
+   <goal name="VC div_qr.139.12" expl="VC for div_qr" proved="true">
+   <proof prover="0"><result status="valid" time="0.34"/></proof>
+   </goal>
+   <goal name="VC div_qr.139.13" expl="VC for div_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.04"/></proof>
+   </goal>
+   <goal name="VC div_qr.139.14" expl="VC for div_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.05"/></proof>
+   </goal>
+   <goal name="VC div_qr.139.15" expl="VC for div_qr" proved="true">
+   <proof prover="5"><result status="valid" time="0.08" steps="86"/></proof>
+   </goal>
+   <goal name="VC div_qr.139.16" expl="VC for div_qr" proved="true">
+   <proof prover="0"><result status="valid" time="0.59"/></proof>
+   </goal>
+   <goal name="VC div_qr.139.17" expl="VC for div_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.09"/></proof>
+   </goal>
+   <goal name="VC div_qr.139.18" expl="VC for div_qr" proved="true">
+   <proof prover="0"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div_qr.139.19" expl="VC for div_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.01"/></proof>
+   </goal>
+   <goal name="VC div_qr.139.20" expl="VC for div_qr" proved="true">
+   <proof prover="0"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div_qr.139.21" expl="VC for div_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.01"/></proof>
+   </goal>
+   <goal name="VC div_qr.139.22" expl="VC for div_qr" proved="true">
+   <proof prover="0"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div_qr.139.23" expl="VC for div_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div_qr.139.24" expl="VC for div_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div_qr.139.25" expl="VC for div_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.04"/></proof>
+   </goal>
+   <goal name="VC div_qr.139.26" expl="VC for div_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.07"/></proof>
+   </goal>
+   <goal name="VC div_qr.139.27" expl="VC for div_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.05"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div_qr.140" expl="assertion" proved="true">
+  <transf name="introduce_premises" proved="true" >
+   <goal name="VC div_qr.140.0" expl="assertion" proved="true">
+   <transf name="inline_goal" proved="true" >
+    <goal name="VC div_qr.140.0.0" expl="assertion" proved="true">
+    <transf name="split_goal_right" proved="true" >
+     <goal name="VC div_qr.140.0.0.0" expl="VC for div_qr" proved="true">
+     <proof prover="5"><result status="valid" time="0.23" steps="86"/></proof>
+     </goal>
+     <goal name="VC div_qr.140.0.0.1" expl="VC for div_qr" proved="true">
+     <proof prover="4"><result status="valid" time="0.06"/></proof>
+     </goal>
+     <goal name="VC div_qr.140.0.0.2" expl="VC for div_qr" proved="true">
+     <proof prover="5"><result status="valid" time="0.29" steps="88"/></proof>
+     </goal>
+     <goal name="VC div_qr.140.0.0.3" expl="VC for div_qr" proved="true">
+     <proof prover="5"><result status="valid" time="0.26" steps="88"/></proof>
+     </goal>
+     <goal name="VC div_qr.140.0.0.4" expl="VC for div_qr" proved="true">
+     <proof prover="5"><result status="valid" time="0.52" steps="188"/></proof>
+     </goal>
+     <goal name="VC div_qr.140.0.0.5" expl="VC for div_qr" proved="true">
+     <proof prover="4"><result status="valid" time="0.07"/></proof>
+     </goal>
+    </transf>
+    </goal>
+   </transf>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div_qr.141" expl="postcondition" proved="true">
+  <proof prover="1"><result status="valid" time="0.14"/></proof>
+  </goal>
+  <goal name="VC div_qr.142" expl="assertion" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC div_qr.142.0" expl="VC for div_qr" proved="true">
+   <proof prover="0"><result status="valid" time="0.06"/></proof>
+   </goal>
+   <goal name="VC div_qr.142.1" expl="VC for div_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.05"/></proof>
+   </goal>
+   <goal name="VC div_qr.142.2" expl="VC for div_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.06"/></proof>
+   </goal>
+   <goal name="VC div_qr.142.3" expl="VC for div_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.04"/></proof>
+   </goal>
+   <goal name="VC div_qr.142.4" expl="VC for div_qr" proved="true">
+   <proof prover="0"><result status="valid" time="0.06"/></proof>
+   </goal>
+   <goal name="VC div_qr.142.5" expl="VC for div_qr" proved="true">
+   <proof prover="2" timelimit="1"><result status="valid" time="0.90"/></proof>
+   </goal>
+   <goal name="VC div_qr.142.6" expl="VC for div_qr" proved="true">
+   <proof prover="2" timelimit="1"><result status="valid" time="0.94"/></proof>
+   </goal>
+   <goal name="VC div_qr.142.7" expl="VC for div_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.03"/></proof>
+   </goal>
+   <goal name="VC div_qr.142.8" expl="VC for div_qr" proved="true">
+   <proof prover="1"><result status="valid" time="1.14"/></proof>
+   </goal>
+   <goal name="VC div_qr.142.9" expl="VC for div_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.01"/></proof>
+   </goal>
+   <goal name="VC div_qr.142.10" expl="VC for div_qr" proved="true">
+   <proof prover="1"><result status="valid" time="0.10"/></proof>
+   </goal>
+   <goal name="VC div_qr.142.11" expl="VC for div_qr" proved="true">
+   <proof prover="1"><result status="valid" time="0.12"/></proof>
+   </goal>
+   <goal name="VC div_qr.142.12" expl="VC for div_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.04"/></proof>
+   </goal>
+   <goal name="VC div_qr.142.13" expl="VC for div_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.01"/></proof>
+   </goal>
+   <goal name="VC div_qr.142.14" expl="VC for div_qr" proved="true">
+   <proof prover="0"><result status="valid" time="0.97"/></proof>
+   </goal>
+   <goal name="VC div_qr.142.15" expl="VC for div_qr" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC div_qr.142.16" expl="VC for div_qr" proved="true">
+   <proof prover="1"><result status="valid" time="0.17"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div_qr.143" expl="precondition" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC div_qr.143.0" expl="precondition" proved="true">
+   <proof prover="3"><result status="valid" time="0.03"/></proof>
+   </goal>
+   <goal name="VC div_qr.143.1" expl="precondition" proved="true">
+   <proof prover="0"><result status="valid" time="0.03"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div_qr.144" expl="precondition" proved="true">
+  <proof prover="4"><result status="valid" time="0.04"/></proof>
+  </goal>
+  <goal name="VC div_qr.145" expl="integer overflow" proved="true">
+  <proof prover="3"><result status="valid" time="0.04"/></proof>
+  </goal>
+  <goal name="VC div_qr.146" expl="precondition" proved="true">
+  <proof prover="2" timelimit="1"><result status="valid" time="0.17"/></proof>
+  </goal>
+  <goal name="VC div_qr.147" expl="precondition" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC div_qr.147.0" expl="precondition" proved="true">
+   <proof prover="0"><result status="valid" time="0.03"/></proof>
+   </goal>
+   <goal name="VC div_qr.147.1" expl="precondition" proved="true">
+   <proof prover="0"><result status="valid" time="4.72"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC div_qr.148" expl="assertion" proved="true">
+  <proof prover="0"><result status="valid" time="4.43"/></proof>
+  </goal>
+  <goal name="VC div_qr.149" expl="postcondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC div_qr.150" expl="postcondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.05"/></proof>
+  </goal>
+  <goal name="VC div_qr.151" expl="postcondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC div_qr.152" expl="postcondition" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC div_qr.152.0" expl="postcondition" proved="true">
+   <proof prover="1"><result status="valid" time="0.54"/></proof>
+   </goal>
+   <goal name="VC div_qr.152.1" expl="postcondition" proved="true">
+   <proof prover="1"><result status="valid" time="0.74"/></proof>
+   </goal>
+  </transf>
+  </goal>
+ </transf>
+ </goal>
+ <goal name="VC tdiv_qr" expl="VC for tdiv_qr" proved="true">
+ <transf name="split_goal_right" proved="true" >
+  <goal name="VC tdiv_qr.0" expl="integer overflow" proved="true">
+  <proof prover="4"><result status="valid" time="0.03"/></proof>
+  <proof prover="5" timelimit="5"><result status="valid" time="0.06" steps="38"/></proof>
+  </goal>
+  <goal name="VC tdiv_qr.1" expl="precondition" proved="true">
+  <proof prover="4"><result status="valid" time="0.04"/></proof>
+  <proof prover="5" timelimit="5"><result status="valid" time="0.05" steps="16"/></proof>
+  </goal>
+  <goal name="VC tdiv_qr.2" expl="integer overflow" proved="true">
+  <proof prover="5" timelimit="5"><result status="valid" time="0.04" steps="40"/></proof>
+  </goal>
+  <goal name="VC tdiv_qr.3" expl="precondition" proved="true">
+  <proof prover="3"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC tdiv_qr.4" expl="precondition" proved="true">
+  <proof prover="5" timelimit="5"><result status="valid" time="0.05" steps="24"/></proof>
+  </goal>
+  <goal name="VC tdiv_qr.5" expl="precondition" proved="true">
+  <proof prover="3"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC tdiv_qr.6" expl="precondition" proved="true">
+  <proof prover="5" timelimit="5"><result status="valid" time="0.04" steps="31"/></proof>
+  </goal>
+  <goal name="VC tdiv_qr.7" expl="precondition" proved="true">
+  <proof prover="4"><result status="valid" time="0.02"/></proof>
+  <proof prover="5" timelimit="5"><result status="valid" time="0.04" steps="31"/></proof>
+  </goal>
+  <goal name="VC tdiv_qr.8" expl="precondition" proved="true">
+  <proof prover="4"><result status="valid" time="0.04"/></proof>
+  <proof prover="5" timelimit="5"><result status="valid" time="0.04" steps="31"/></proof>
+  </goal>
+  <goal name="VC tdiv_qr.9" expl="precondition" proved="true">
+  <proof prover="4"><result status="valid" time="0.04"/></proof>
+  <proof prover="5" timelimit="5"><result status="valid" time="0.03" steps="31"/></proof>
+  </goal>
+  <goal name="VC tdiv_qr.10" expl="precondition" proved="true">
+  <proof prover="4"><result status="valid" time="0.02"/></proof>
+  <proof prover="5" timelimit="5"><result status="valid" time="0.04" steps="31"/></proof>
+  </goal>
+  <goal name="VC tdiv_qr.11" expl="precondition" proved="true">
+  <proof prover="4"><result status="valid" time="0.21"/></proof>
+  <proof prover="5" timelimit="5"><result status="valid" time="0.03" steps="99"/></proof>
+  </goal>
+  <goal name="VC tdiv_qr.12" expl="precondition" proved="true">
+  <proof prover="4"><result status="valid" time="0.03"/></proof>
+  <proof prover="5" timelimit="5"><result status="valid" time="0.03" steps="97"/></proof>
+  </goal>
+  <goal name="VC tdiv_qr.13" expl="precondition" proved="true">
+  <proof prover="5" timelimit="5"><result status="valid" time="0.05" steps="33"/></proof>
+  </goal>
+  <goal name="VC tdiv_qr.14" expl="precondition" proved="true">
+  <proof prover="4"><result status="valid" time="0.03"/></proof>
+  <proof prover="5" timelimit="5"><result status="valid" time="0.04" steps="53"/></proof>
+  </goal>
+  <goal name="VC tdiv_qr.15" expl="precondition" proved="true">
+  <proof prover="5" timelimit="5"><result status="valid" time="0.03" steps="54"/></proof>
+  </goal>
+  <goal name="VC tdiv_qr.16" expl="precondition" proved="true">
+  <proof prover="3"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC tdiv_qr.17" expl="precondition" proved="true">
+  <proof prover="4"><result status="valid" time="0.03"/></proof>
+  <proof prover="5" timelimit="5"><result status="valid" time="0.04" steps="53"/></proof>
+  </goal>
+  <goal name="VC tdiv_qr.18" expl="precondition" proved="true">
+  <proof prover="5" timelimit="5"><result status="valid" time="0.03" steps="54"/></proof>
+  </goal>
+  <goal name="VC tdiv_qr.19" expl="precondition" proved="true">
+  <proof prover="3"><result status="valid" time="0.04"/></proof>
+  </goal>
+  <goal name="VC tdiv_qr.20" expl="postcondition" proved="true">
+  <proof prover="4"><result status="valid" time="0.04"/></proof>
+  <proof prover="5" timelimit="5"><result status="valid" time="0.03" steps="53"/></proof>
+  </goal>
+  <goal name="VC tdiv_qr.21" expl="postcondition" proved="true">
+  <proof prover="4"><result status="valid" time="0.04"/></proof>
+  <proof prover="5" timelimit="5"><result status="valid" time="0.05" steps="53"/></proof>
+  </goal>
+ </transf>
+ </goal>
+</theory>
+</file>
+</why3session>
diff --git a/examples/multiprecision/div/why3shapes.gz b/examples/multiprecision/div/why3shapes.gz
new file mode 100644
index 0000000000000000000000000000000000000000..0f30d444872710aa0a6ddcdb2a636438b0ca460b
GIT binary patch
literal 118256
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%0Dv<Hvt({eA1
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
Q>zhyVNw&?Kn6r5p0Q6V<aR2}S

literal 0
HcmV?d00001

diff --git a/examples/multiprecision/lemmas.mlw b/examples/multiprecision/lemmas.mlw
new file mode 100644
index 0000000000..f2abb6ebbb
--- /dev/null
+++ b/examples/multiprecision/lemmas.mlw
@@ -0,0 +1,207 @@
+module Lemmas
+
+  use import array.Array
+  use import map.Map
+  use map.MapEq
+  use map.Const
+  use import int.Int
+
+  (** {3 complements to map standard library} *)
+
+  predicate map_eq_sub_shift (x y:map int 'a) (xi yi sz:int) =
+    forall i. 0 <= i < sz -> x[xi+i] = y[yi+i]
+
+  let lemma map_eq_shift (x y:map int 'a) (xi yi sz k:int)
+    requires { map_eq_sub_shift x y xi yi sz }
+    requires { 0 <= k < sz }
+    ensures { x[xi+k] = y[yi+k] }
+  = ()
+
+  let rec lemma map_eq_shift_zero (x y: map int 'a) (n m: int)
+    requires { map_eq_sub_shift x y n n (m-n) }
+    variant { m - n }
+    ensures { MapEq.map_eq_sub x y n m }
+  =
+    if n < m then
+    begin
+      assert { forall i. 0 <= i < m-n -> x[n+i] = y[n+i] };
+      assert { forall i. n <= i < m ->
+                 let j = i - n in 0 <= j < m-n ->
+                     x[n+j] = y[n+j] -> x[i] = y[i]};
+      map_eq_shift_zero x y (n+1) m;
+    end
+    else ()
+
+  use import mach.int.Int32
+  use import ref.Ref
+  use import mach.int.UInt64GMP as Limb
+  use import int.Int
+  use import int.Power
+  use import mach.c.C
+  use import types.Types
+
+  meta compute_max_steps 0x100000
+
+  (** {3 Long integers as arrays of libs} *)
+
+  lemma limb_max_bound: 1 <= max_uint64
+
+  function l2i (x:limb) : int = Limb.to_int x
+
+  function p2i (i:int32) : int = int32'int i
+
+  let lemma prod_compat_strict_r (a b c:int)
+    requires { 0 <= a < b }
+    requires { 0 < c }
+    ensures { c * a < c * b }
+  = ()
+  let lemma prod_compat_r (a b c:int)
+    requires { 0 <= a <= b }
+    requires { 0 <= c }
+    ensures { c * a <= c * b }
+  = ()
+
+  (** {3 Integer value of a natural number} *)
+
+  (** [value_sub x n m] denotes the integer represented by
+     the digits x[n..m-1] with lsb at index n *)
+  let rec ghost function value_sub (x:map int limb) (n:int) (m:int) : int
+     variant {m - n}
+   =
+     if n < m then
+       l2i x[n] + radix * value_sub x (n+1) m
+       else 0
+
+  let rec lemma value_sub_frame (x y:map int limb) (n m:int)
+    requires { MapEq.map_eq_sub x y n m }
+    variant  { m - n }
+    ensures  { value_sub x n m = value_sub y n m }
+  =
+    if n < m then value_sub_frame x y (n+1) m else ()
+
+  let rec lemma value_sub_frame_shift (x y:map int limb) (xi yi sz:int)
+    requires { map_eq_sub_shift x y xi yi sz }
+    variant { sz }
+    ensures { value_sub x xi (xi+sz) = value_sub y yi (yi+sz) }
+ =
+    if sz>0
+    then begin
+      map_eq_shift x y xi yi sz 0;
+      assert { forall i. 0 <= i < sz-1 ->
+                 let j = 1+i in x[xi+j] = y[yi+j] };
+      value_sub_frame_shift x y (xi+1) (yi+1) (sz-1)
+      end
+    else assert { 1+2 = 3 }
+
+  let rec lemma value_sub_tail (x:map int limb) (n m:int)
+    requires { n <= m }
+    variant  { m - n }
+    ensures  {
+      value_sub x n (m+1) =
+        value_sub x n m + (Map.get x m) * power radix (m-n) }
+  = [@vc:sp] if n < m then value_sub_tail x (n+1) m else ()(*assert { 1+2=3 }*)
+
+  let rec lemma value_sub_concat (x:map int limb) (n m l:int)
+    requires { n <= m <= l}
+    variant  { m - n }
+    ensures  {
+      value_sub x n l =
+        value_sub x n m + value_sub x m l * power radix (m-n) }
+  =
+  if n < m then
+     begin
+     assert {n<m};
+     value_sub_concat x (n+1) m l
+     end
+  else ()
+
+  let lemma value_sub_head (x:map int limb) (n m:int)
+    requires { n < m }
+    ensures { value_sub x n m = x[n] + radix * value_sub x (n+1) m }
+  = value_sub_concat x n (n+1) m
+
+  let lemma value_sub_update (x:map int limb) (i n m:int) (v:limb)
+    requires { n <= i < m }
+    ensures {
+      value_sub (Map.set x i v) n m =
+      value_sub x n m + power radix (i - n) * (v -(Map.get x i))
+    }
+  = assert { MapEq.map_eq_sub x (Map.set x i v) n i };
+    assert { MapEq.map_eq_sub x (Map.set x i v) (i+1) m };
+    value_sub_concat x n i m;
+    value_sub_concat (Map.set x i v) n i m;
+    value_sub_head x i m;
+    value_sub_head (Map.set x i v) i m
+
+  let rec lemma value_zero (x:map int limb) (n m:int)
+    requires { MapEq.map_eq_sub x (Const.const Limb.zero_unsigned) n m }
+    variant  { m - n }
+    ensures  { value_sub x n m = 0 }
+  = if n < m then value_zero x (n+1) m else ()
+
+  let lemma value_sub_update_no_change (x: map int limb) (i n m: int) (v:limb)
+     requires { n <= m }
+     requires { i < n \/ m <= i }
+     ensures { value_sub x n m = value_sub (Map.set x i v) n m }
+  = value_sub_frame x (Map.set x i v) n m
+
+  let lemma value_sub_shift_no_change (x:map int limb) (ofs i sz:int) (v:limb)
+     requires { i < 0 \/ sz <= i }
+     requires { 0 <= sz }
+     ensures { value_sub x ofs (ofs + sz) =
+               value_sub (Map.set x (ofs+i) v) ofs (ofs+sz) }
+  = value_sub_frame_shift x (Map.set x (ofs+i) v) ofs ofs sz
+
+  (** {3 Comparisons} *)
+
+  let rec lemma value_sub_lower_bound (x:map int limb) (x1 x2:int)
+    variant  { x2 - x1 }
+    ensures  { 0 <= value_sub x x1 x2 }
+  = if x2 <= x1 then () else
+      begin
+        value_sub_head x x1 x2;
+        value_sub_lower_bound x (x1+1) x2
+      end
+
+  let rec lemma value_sub_upper_bound (x:map int limb) (x1 x2:int)
+    requires { x1 <= x2 }
+    variant  { x2 - x1 }
+    ensures  { value_sub x x1 x2 < power radix (x2 - x1) }
+  = if x1 = x2 then () else
+      begin
+      value_sub_tail x x1 (x2-1);
+      assert { value_sub x x1 x2
+               <= value_sub x x1 (x2-1) + power radix (x2-x1-1) * (radix - 1) };
+      value_sub_upper_bound x x1 (x2-1)
+      end
+
+  let lemma value_sub_lower_bound_tight (x:map int limb) (x1 x2:int)
+    requires { x1 < x2 }
+    ensures  { power radix (x2-x1-1) *  l2i (Map.get x (x2-1)) <= value_sub x x1 x2 }
+  = assert   { value_sub x x1 x2 = value_sub x x1 (x2-1)
+               + power radix (x2-x1-1) * l2i (Map.get x (x2-1)) }
+
+  let lemma value_sub_upper_bound_tight (x:map int limb) (x1 x2:int)
+    requires { x1 < x2 }
+    ensures  { value_sub x x1 x2 < power radix (x2-x1-1) *  (l2i (Map.get x (x2-1)) + 1) }
+  = value_sub_upper_bound x x1 (x2-1)
+
+  function value (x:t) (sz:int) : int =
+     value_sub (pelts x) x.offset (x.offset + sz)
+
+  let lemma value_tail (x:t) (sz:int32)
+    requires { 0 <= sz }
+    ensures  { value x (sz+1) = value x sz + (pelts x)[x.offset + sz] * power radix sz }
+  = value_sub_tail (pelts x) x.offset (x.offset + p2i sz)
+
+  meta remove_prop axiom value_tail
+
+  let lemma value_concat (x:t) (n m:int32)
+    requires { 0 <= n <= m }
+    ensures  { value x m
+             = value x n + power radix n
+                            * value_sub (pelts x) (x.offset + n) (x.offset + m) }
+
+  = value_sub_concat (pelts x) x.offset (x.offset + p2i n) (x.offset + p2i m)
+
+end
\ No newline at end of file
diff --git a/examples/multiprecision/lemmas/why3session.xml b/examples/multiprecision/lemmas/why3session.xml
new file mode 100644
index 0000000000..bf5b3d8e0e
--- /dev/null
+++ b/examples/multiprecision/lemmas/why3session.xml
@@ -0,0 +1,272 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE why3session PUBLIC "-//Why3//proof session v5//EN"
+"http://why3.lri.fr/why3session.dtd">
+<why3session shape_version="4">
+<prover id="0" name="Eprover" version="1.9.1-001" timelimit="5" steplimit="0" memlimit="2000"/>
+<prover id="1" name="CVC3" version="2.4.1" timelimit="5" steplimit="0" memlimit="1000"/>
+<prover id="2" name="CVC4" version="1.4" timelimit="5" steplimit="0" memlimit="1000"/>
+<prover id="3" name="Z3" version="4.5.0" timelimit="1" steplimit="0" memlimit="1000"/>
+<prover id="4" name="Z3" version="4.4.1" timelimit="5" steplimit="0" memlimit="1000"/>
+<prover id="5" name="Alt-Ergo" version="2.0.0" timelimit="5" steplimit="0" memlimit="1000"/>
+<file name="../lemmas.mlw" proved="true">
+<theory name="Lemmas" proved="true">
+ <goal name="VC map_eq_shift" expl="VC for map_eq_shift" proved="true">
+ <transf name="split_goal_right" proved="true" >
+  <goal name="VC map_eq_shift.0" expl="postcondition" proved="true">
+  <proof prover="5"><result status="valid" time="0.03" steps="5"/></proof>
+  </goal>
+ </transf>
+ </goal>
+ <goal name="VC map_eq_shift_zero" expl="VC for map_eq_shift_zero" proved="true">
+ <transf name="split_goal_right" proved="true" >
+  <goal name="VC map_eq_shift_zero.0" expl="assertion" proved="true">
+  <proof prover="5"><result status="valid" time="0.04" steps="6"/></proof>
+  </goal>
+  <goal name="VC map_eq_shift_zero.1" expl="assertion" proved="true">
+  <proof prover="5"><result status="valid" time="0.03" steps="8"/></proof>
+  </goal>
+  <goal name="VC map_eq_shift_zero.2" expl="variant decrease" proved="true">
+  <proof prover="5"><result status="valid" time="0.04" steps="3"/></proof>
+  </goal>
+  <goal name="VC map_eq_shift_zero.3" expl="precondition" proved="true">
+  <transf name="introduce_premises" proved="true" >
+   <goal name="VC map_eq_shift_zero.3.0" expl="precondition" proved="true">
+   <transf name="inline_goal" proved="true" >
+    <goal name="VC map_eq_shift_zero.3.0.0" expl="precondition" proved="true">
+    <proof prover="5" timelimit="1"><result status="valid" time="0.00" steps="10"/></proof>
+    </goal>
+   </transf>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC map_eq_shift_zero.4" expl="postcondition" proved="true">
+  <transf name="inline_all" proved="true" >
+   <goal name="VC map_eq_shift_zero.4.0" expl="postcondition" proved="true">
+   <proof prover="5" memlimit="2000"><result status="valid" time="0.00" steps="10"/></proof>
+   </goal>
+  </transf>
+  </goal>
+ </transf>
+ </goal>
+ <goal name="limb_max_bound" proved="true">
+ <proof prover="5"><result status="valid" time="0.02" steps="5"/></proof>
+ </goal>
+ <goal name="VC prod_compat_strict_r" expl="VC for prod_compat_strict_r" proved="true">
+ <proof prover="1"><result status="valid" time="0.05"/></proof>
+ </goal>
+ <goal name="VC prod_compat_r" expl="VC for prod_compat_r" proved="true">
+ <proof prover="5" memlimit="2000"><result status="valid" time="0.02" steps="10"/></proof>
+ </goal>
+ <goal name="VC value_sub" expl="VC for value_sub" proved="true">
+ <transf name="split_goal_right" proved="true" >
+  <goal name="VC value_sub.0" expl="variant decrease" proved="true">
+  <proof prover="5"><result status="valid" time="0.03" steps="7"/></proof>
+  </goal>
+ </transf>
+ </goal>
+ <goal name="VC value_sub_frame" expl="VC for value_sub_frame" proved="true">
+ <transf name="split_goal_right" proved="true" >
+  <goal name="VC value_sub_frame.0" expl="variant decrease" proved="true">
+  <proof prover="5"><result status="valid" time="0.03" steps="8"/></proof>
+  </goal>
+  <goal name="VC value_sub_frame.1" expl="precondition" proved="true">
+  <proof prover="5"><result status="valid" time="0.04" steps="23"/></proof>
+  </goal>
+  <goal name="VC value_sub_frame.2" expl="postcondition" proved="true">
+  <proof prover="5"><result status="valid" time="0.07" steps="34"/></proof>
+  </goal>
+ </transf>
+ </goal>
+ <goal name="VC value_sub_frame_shift" expl="VC for value_sub_frame_shift" proved="true">
+ <transf name="split_goal_right" proved="true" >
+  <goal name="VC value_sub_frame_shift.0" expl="precondition" proved="true">
+  <proof prover="5"><result status="valid" time="0.02" steps="8"/></proof>
+  </goal>
+  <goal name="VC value_sub_frame_shift.1" expl="precondition" proved="true">
+  <proof prover="5"><result status="valid" time="0.04" steps="8"/></proof>
+  </goal>
+  <goal name="VC value_sub_frame_shift.2" expl="assertion" proved="true">
+  <proof prover="5"><result status="valid" time="0.03" steps="12"/></proof>
+  </goal>
+  <goal name="VC value_sub_frame_shift.3" expl="variant decrease" proved="true">
+  <proof prover="5"><result status="valid" time="0.02" steps="9"/></proof>
+  </goal>
+  <goal name="VC value_sub_frame_shift.4" expl="precondition" proved="true">
+  <transf name="introduce_premises" proved="true" >
+   <goal name="VC value_sub_frame_shift.4.0" expl="precondition" proved="true">
+   <transf name="inline_goal" proved="true" >
+    <goal name="VC value_sub_frame_shift.4.0.0" expl="precondition" proved="true">
+    <proof prover="0"><result status="valid" time="0.17"/></proof>
+    <proof prover="3"><result status="valid" time="0.02"/></proof>
+    <proof prover="4" memlimit="2000"><result status="valid" time="0.02"/></proof>
+    </goal>
+   </transf>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC value_sub_frame_shift.5" expl="assertion" proved="true">
+  <proof prover="5"><result status="valid" time="0.03" steps="8"/></proof>
+  </goal>
+  <goal name="VC value_sub_frame_shift.6" expl="postcondition" proved="true">
+  <proof prover="5"><result status="valid" time="0.02" steps="12"/></proof>
+  </goal>
+ </transf>
+ </goal>
+ <goal name="VC value_sub_tail" expl="VC for value_sub_tail" proved="true">
+ <transf name="split_goal_right" proved="true" >
+  <goal name="VC value_sub_tail.0" expl="variant decrease" proved="true">
+  <proof prover="5"><result status="valid" time="0.03" steps="8"/></proof>
+  </goal>
+  <goal name="VC value_sub_tail.1" expl="precondition" proved="true">
+  <proof prover="5"><result status="valid" time="0.04" steps="8"/></proof>
+  </goal>
+  <goal name="VC value_sub_tail.2" expl="postcondition" proved="true">
+  <proof prover="5"><result status="valid" time="0.07" steps="34"/></proof>
+  </goal>
+ </transf>
+ </goal>
+ <goal name="VC value_sub_concat" expl="VC for value_sub_concat" proved="true">
+ <transf name="split_goal_right" proved="true" >
+  <goal name="VC value_sub_concat.0" expl="assertion" proved="true">
+  <proof prover="5"><result status="valid" time="0.02" steps="9"/></proof>
+  </goal>
+  <goal name="VC value_sub_concat.1" expl="variant decrease" proved="true">
+  <proof prover="5"><result status="valid" time="0.03" steps="9"/></proof>
+  </goal>
+  <goal name="VC value_sub_concat.2" expl="precondition" proved="true">
+  <proof prover="5"><result status="valid" time="0.03" steps="9"/></proof>
+  </goal>
+  <goal name="VC value_sub_concat.3" expl="postcondition" proved="true">
+  <proof prover="1"><result status="valid" time="0.12"/></proof>
+  </goal>
+ </transf>
+ </goal>
+ <goal name="VC value_sub_head" expl="VC for value_sub_head" proved="true">
+ <transf name="split_goal_right" proved="true" >
+  <goal name="VC value_sub_head.0" expl="precondition" proved="true">
+  <proof prover="5"><result status="valid" time="0.03" steps="7"/></proof>
+  </goal>
+  <goal name="VC value_sub_head.1" expl="postcondition" proved="true">
+  <proof prover="5"><result status="valid" time="0.06" steps="24"/></proof>
+  </goal>
+ </transf>
+ </goal>
+ <goal name="VC value_sub_update" expl="VC for value_sub_update" proved="true">
+ <transf name="split_goal_right" proved="true" >
+  <goal name="VC value_sub_update.0" expl="assertion" proved="true">
+  <proof prover="5"><result status="valid" time="0.03" steps="12"/></proof>
+  </goal>
+  <goal name="VC value_sub_update.1" expl="assertion" proved="true">
+  <proof prover="5"><result status="valid" time="0.04" steps="13"/></proof>
+  </goal>
+  <goal name="VC value_sub_update.2" expl="precondition" proved="true">
+  <proof prover="5"><result status="valid" time="0.03" steps="10"/></proof>
+  </goal>
+  <goal name="VC value_sub_update.3" expl="precondition" proved="true">
+  <proof prover="5"><result status="valid" time="0.03" steps="11"/></proof>
+  </goal>
+  <goal name="VC value_sub_update.4" expl="precondition" proved="true">
+  <proof prover="5" timelimit="20" memlimit="2000"><result status="valid" time="0.02" steps="12"/></proof>
+  </goal>
+  <goal name="VC value_sub_update.5" expl="precondition" proved="true">
+  <proof prover="5" timelimit="20" memlimit="2000"><result status="valid" time="0.02" steps="13"/></proof>
+  </goal>
+  <goal name="VC value_sub_update.6" expl="postcondition" proved="true">
+  <proof prover="1" memlimit="2000"><result status="valid" time="0.06"/></proof>
+  </goal>
+ </transf>
+ </goal>
+ <goal name="VC value_zero" expl="VC for value_zero" proved="true">
+ <transf name="split_goal_right" proved="true" >
+  <goal name="VC value_zero.0" expl="variant decrease" proved="true">
+  <proof prover="5"><result status="valid" time="0.04" steps="8"/></proof>
+  </goal>
+  <goal name="VC value_zero.1" expl="precondition" proved="true">
+  <proof prover="5"><result status="valid" time="0.04" steps="25"/></proof>
+  </goal>
+  <goal name="VC value_zero.2" expl="postcondition" proved="true">
+  <proof prover="4"><result status="valid" time="0.02"/></proof>
+  </goal>
+ </transf>
+ </goal>
+ <goal name="VC value_sub_update_no_change" expl="VC for value_sub_update_no_change" proved="true">
+ <transf name="split_goal_right" proved="true" >
+  <goal name="VC value_sub_update_no_change.0" expl="precondition" proved="true">
+  <proof prover="5"><result status="valid" time="0.03" steps="31"/></proof>
+  </goal>
+  <goal name="VC value_sub_update_no_change.1" expl="postcondition" proved="true">
+  <proof prover="5"><result status="valid" time="0.03" steps="8"/></proof>
+  </goal>
+ </transf>
+ </goal>
+ <goal name="VC value_sub_shift_no_change" expl="VC for value_sub_shift_no_change" proved="true">
+ <transf name="split_goal_right" proved="true" >
+  <goal name="VC value_sub_shift_no_change.0" expl="precondition" proved="true">
+  <proof prover="5"><result status="valid" time="0.03" steps="21"/></proof>
+  </goal>
+  <goal name="VC value_sub_shift_no_change.1" expl="postcondition" proved="true">
+  <proof prover="5"><result status="valid" time="0.02" steps="8"/></proof>
+  </goal>
+ </transf>
+ </goal>
+ <goal name="VC value_sub_lower_bound" expl="VC for value_sub_lower_bound" proved="true">
+ <transf name="split_goal_right" proved="true" >
+  <goal name="VC value_sub_lower_bound.0" expl="precondition" proved="true">
+  <proof prover="5"><result status="valid" time="0.03" steps="7"/></proof>
+  </goal>
+  <goal name="VC value_sub_lower_bound.1" expl="variant decrease" proved="true">
+  <proof prover="5"><result status="valid" time="0.03" steps="8"/></proof>
+  </goal>
+  <goal name="VC value_sub_lower_bound.2" expl="postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.06"/></proof>
+  </goal>
+ </transf>
+ </goal>
+ <goal name="VC value_sub_upper_bound" expl="VC for value_sub_upper_bound" proved="true">
+ <transf name="split_goal_right" proved="true" >
+  <goal name="VC value_sub_upper_bound.0" expl="precondition" proved="true">
+  <proof prover="5"><result status="valid" time="0.03" steps="8"/></proof>
+  </goal>
+  <goal name="VC value_sub_upper_bound.1" expl="assertion" proved="true">
+  <proof prover="1"><result status="valid" time="0.06"/></proof>
+  </goal>
+  <goal name="VC value_sub_upper_bound.2" expl="variant decrease" proved="true">
+  <proof prover="5"><result status="valid" time="0.04" steps="10"/></proof>
+  </goal>
+  <goal name="VC value_sub_upper_bound.3" expl="precondition" proved="true">
+  <proof prover="5"><result status="valid" time="0.03" steps="10"/></proof>
+  </goal>
+  <goal name="VC value_sub_upper_bound.4" expl="postcondition" proved="true">
+  <proof prover="5"><result status="valid" time="0.08" steps="33"/></proof>
+  </goal>
+ </transf>
+ </goal>
+ <goal name="VC value_sub_lower_bound_tight" expl="VC for value_sub_lower_bound_tight" proved="true">
+ <transf name="split_goal_right" proved="true" >
+  <goal name="VC value_sub_lower_bound_tight.0" expl="assertion" proved="true">
+  <proof prover="5"><result status="valid" time="0.04" steps="13"/></proof>
+  </goal>
+  <goal name="VC value_sub_lower_bound_tight.1" expl="postcondition" proved="true">
+  <proof prover="5"><result status="valid" time="0.03" steps="9"/></proof>
+  </goal>
+ </transf>
+ </goal>
+ <goal name="VC value_sub_upper_bound_tight" expl="VC for value_sub_upper_bound_tight" proved="true">
+ <transf name="split_goal_right" proved="true" >
+  <goal name="VC value_sub_upper_bound_tight.0" expl="precondition" proved="true">
+  <proof prover="5"><result status="valid" time="0.04" steps="7"/></proof>
+  </goal>
+  <goal name="VC value_sub_upper_bound_tight.1" expl="postcondition" proved="true">
+  <proof prover="3"><result status="valid" time="0.03"/></proof>
+  </goal>
+ </transf>
+ </goal>
+ <goal name="VC value_tail" expl="VC for value_tail" proved="true">
+ <proof prover="5" timelimit="1"><result status="valid" time="0.01" steps="9"/></proof>
+ </goal>
+ <goal name="VC value_concat" expl="VC for value_concat" proved="true">
+ <proof prover="5" timelimit="1"><result status="valid" time="0.04" steps="26"/></proof>
+ </goal>
+</theory>
+</file>
+</why3session>
diff --git a/examples/multiprecision/lemmas/why3shapes.gz b/examples/multiprecision/lemmas/why3shapes.gz
new file mode 100644
index 0000000000000000000000000000000000000000..189729d2c747f463d41b1ca04c652c36daed6b81
GIT binary patch
literal 3300
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
C*MI5&

literal 0
HcmV?d00001

diff --git a/examples/multiprecision/lineardecision.mlw b/examples/multiprecision/lineardecision.mlw
new file mode 100644
index 0000000000..6dae622ca9
--- /dev/null
+++ b/examples/multiprecision/lineardecision.mlw
@@ -0,0 +1,2105 @@
+module LinearEquationsCoeffs
+
+type a
+function (+) a a : a
+function ( *) a a : a
+function (-_) a : a
+function azero: a
+function aone: a
+predicate ale a a
+
+clone algebra.OrderedUnitaryCommutativeRing as A with type t = a, function (+) = (+), function ( *) = ( *), function (-_) = (-_), constant zero = azero, constant one=aone, predicate (<=) = ale
+
+function (-) a a : a
+
+axiom sub_def: forall a1 a2. a1 - a2 = a1 + (- a2)
+
+type t
+type vars = int -> a
+type cvars
+exception Unknown
+
+function interp t cvars : a
+
+val constant czero : t
+val constant cone : t
+
+axiom zero_def: forall y. interp czero y = azero
+axiom one_def: forall y. interp cone y = aone
+
+lemma neg_mul:
+  forall x y: a. (-x) * y = - (x*y)
+
+val add (a b: t) : t
+  ensures { forall v: cvars. interp result v = interp a v + interp b v }
+  raises  { Unknown -> true }
+
+val mul (a b: t) : t
+  ensures { forall v: cvars. interp result v = interp a v * interp b v }
+  raises  { Unknown -> true }
+
+val opp (a:t) : t
+  ensures { forall v: cvars. interp result v = - (interp a v) }
+
+val predicate eq (a b:t)
+  ensures { result -> forall y:cvars. interp a y = interp b y }
+
+val inv (a:t) : t
+  requires { not (eq a czero) }
+ (* ensures { forall v: cvars. interp result v * interp a v = aone } no proof needed, but had better be true *)
+  ensures { not (eq result czero) }
+  raises { Unknown -> true }
+
+end
+
+module LinearEquationsDecision
+
+use import int.Int
+type coeff
+
+clone LinearEquationsCoeffs as C with type t = coeff
+type vars = C.vars
+
+type expr = Term coeff int | Add expr expr | Cst coeff
+
+let rec predicate valid_expr (e:expr)
+  variant { e }
+= match e with
+  | Term _ i -> 0 <= i
+  | Cst _ -> true
+  | Add e1 e2 -> valid_expr e1 && valid_expr e2
+  end
+
+let rec predicate expr_bound (e:expr) (b:int)
+  variant { e }
+= match e with
+  | Term _ i -> 0 <= i <= b
+  | Cst _ -> true
+  | Add e1 e2 -> expr_bound e1 b && expr_bound e2 b
+  end
+
+function interp (e:expr) (y:vars) (z:C.cvars) : C.a
+= match e with
+  | Term c v -> C.( *) (C.interp c z) (y v)
+  | Add e1 e2 -> C.(+) (interp e1 y z) (interp e2 y z)
+  | Cst c -> C.interp c z
+  end
+
+meta rewrite_def function interp
+
+use import bool.Bool
+use import list.List
+
+type equality = (expr, expr)
+type context = list equality
+
+let predicate valid_eq (eq:equality)
+= match eq with (e1,e2) -> valid_expr e1 && valid_expr e2 end
+
+let predicate eq_bound (eq:equality) (b:int)
+= match eq with (e1,e2) -> expr_bound e1 b && expr_bound e2 b end
+
+let rec predicate valid_ctx (ctx:context)
+= match ctx with Nil -> true | Cons eq t -> valid_eq eq && valid_ctx t end
+
+let rec predicate ctx_bound (ctx:context) (b:int)
+= match ctx with Nil -> true | Cons eq t -> eq_bound eq b && ctx_bound t b end
+
+let rec lemma expr_bound_w (e:expr) (b1 b2:int)
+  requires { b1 <= b2 }
+  requires { expr_bound e b1 }
+  ensures  { expr_bound e b2 }
+  variant  { e }
+= match e with
+  | Add e1 e2 -> expr_bound_w e1 b1 b2; expr_bound_w e2 b1 b2
+  | Cst _ -> ()
+  | Term _ _ -> ()
+  end
+
+lemma eq_bound_w: forall e:equality, b1 b2:int. eq_bound e b1 -> b1 <= b2 -> eq_bound e b2
+
+let rec lemma ctx_bound_w (l:context) (b1 b2:int)
+  requires { ctx_bound l b1 }
+  requires { b1 <= b2 }
+  ensures  { ctx_bound l b2 }
+  variant  { l }
+= match l with Nil -> () | Cons _ t -> ctx_bound_w t b1 b2 end
+
+function interp_eq (g:equality) (y:vars) (z:C.cvars) : bool
+  = match g with (g1, g2) -> interp g1 y z = interp g2 y z end
+
+meta rewrite_def function interp_eq
+
+function interp_ctx (l: context) (g: equality) (y: vars) (z:C.cvars) : bool
+= match l with
+  | Nil -> interp_eq g y z
+  | Cons h t -> (interp_eq h y z) -> (interp_ctx t g y z)
+  end
+
+meta rewrite_def function interp_ctx
+
+use import mach.int.Int63
+use import seq.Seq
+use import mach.array.Array63
+use import mach.matrix.Matrix63
+
+let apply_r (m: matrix coeff) (v: array coeff) : array coeff
+  requires { v.length = m.columns }
+  ensures  { result.length = m.rows }
+  raises   { C.Unknown -> true }
+= let r = Array63.make m.rows C.czero in
+  for i = 0 to m.rows - 1 do
+    for j = 0 to m.columns - 1 do
+      r[i] <- C.add r[i] (C.mul (get m i j) v[j]);
+    done
+  done;
+  r
+
+let apply_l (v: array coeff) (m: matrix coeff) : array coeff
+  requires { v.length = m.rows }
+  ensures  { result.length = m.columns }
+  raises   { C.Unknown -> true }
+= let r = Array63.make m.columns C.czero in
+  for j = 0 to m.columns - 1 do
+    for i = 0 to m.rows - 1 do
+      r[j] <- C.add r[j] (C.mul (get m i j) v[i]);
+    done
+  done;
+  r
+
+use import ref.Ref
+
+let sprod (a b: array coeff) : coeff
+  requires { a.length = b.length }
+  raises   { C.Unknown -> true }
+= let r = ref C.czero in
+  for i = 0 to a.length - 1 do
+    r := C.add !r (C.mul a[i] b[i]);
+  done;
+  !r
+
+let m_append (m: matrix coeff) (v:array coeff) : matrix coeff
+  requires { m.rows = v.length }
+  requires { m.columns < int63'maxInt }
+  ensures  { result.rows = m.rows }
+  ensures  { result.columns = m.columns + 1 }
+  ensures  { forall i j. 0 <= i < m.rows -> 0 <= j < m.columns ->
+             result.elts i j = m.elts i j }
+  ensures  { forall i. 0 <= i < m.rows -> result.elts i m.columns = v[i] }
+= let r = Matrix63.make m.rows (m.columns + 1) C.czero in
+  for i = 0 to m.rows - 1 do
+    invariant { forall k j. 0 <= k < i -> 0 <= j < m.columns ->
+                r.elts k j = m.elts k j }
+    invariant { forall k. 0 <= k < i -> r.elts k m.columns = v[k] }
+    for j = 0 to m.columns - 1 do
+      invariant { forall k j. 0 <= k < i -> 0 <= j < m.columns ->
+                r.elts k j = m.elts k j }
+      invariant { forall k. 0 <= k < i -> r.elts k m.columns = v[k] }
+      invariant { forall l. 0 <= l < j -> r.elts i l = m.elts i l }
+      set r i j (get m i j)
+    done;
+    set r i m.columns v[i]
+  done;
+  r
+
+let v_append (v: array coeff) (c: coeff) : array coeff
+  requires { length v < int63'maxInt }
+  ensures { length result = length v + 1 }
+  ensures { forall k. 0 <= k < v.length -> result[k] = v[k] }
+  ensures { result[v.length] = c }
+= let r = Array63.make (v.length + 1) c in
+  for i = 0 to v.length - 1 do
+    invariant { forall k. 0 <= k < i -> r[k] = v[k] }
+    invariant { r[v.length] = c }
+    r[i] <- v[i]
+  done;
+  r
+
+let predicate (==) (a b: array coeff)
+  ensures { result = true -> length a = length b /\
+            forall i. 0 <= i < length a -> C.eq a[i] b[i] }
+=
+  if length a <> length b then false
+  else
+    let r = ref true in
+    for i = 0 to length a - 1 do
+      invariant { !r = true -> forall j. 0 <= j < i -> C.eq a[j] b[j] }
+      if not (C.eq a[i] b[i]) then r := false;
+    done;
+    !r
+
+use import int.MinMax
+use import list.Length
+
+let rec function max_var (e:expr) : int
+  variant { e }
+  requires { valid_expr e }
+  ensures { 0 <= result }
+  ensures { expr_bound e result }
+= match e with
+  | Term _ i -> i
+  | Cst _ -> 0
+  | Add e1 e2 -> max (max_var e1) (max_var e2)
+  end
+
+let function max_var_e (e:equality) : int
+  requires { valid_eq e }
+  ensures { 0 <= result }
+  ensures { eq_bound e result }
+= match e with (e1,e2) -> max (max_var e1) (max_var e2) end
+
+let rec function max_var_ctx (l:context) : int
+  variant { l }
+  requires { valid_ctx l }
+  ensures { 0 <= result }
+  ensures { ctx_bound l result }
+= match l with
+  | Nil -> 0
+  | Cons e t -> max (max_var_e e) (max_var_ctx t)
+  end
+
+let rec opp_expr (e:expr) : expr
+  ensures { forall y z. interp result y z = C.(-_) (interp e y z) }
+  ensures { valid_expr e -> valid_expr result }
+  ensures { forall b. expr_bound e b -> expr_bound result b }
+  variant { e }
+= match e with
+  | Cst c -> Cst (C.opp c)
+  | Term c j ->
+    let oc = C.opp c in
+    let r = Term oc j in
+    assert { forall y z. interp r y z = C.( *) (C.interp oc z) (y j)
+             = C.( *) (C.(-_) (C.interp c z)) (y j)
+             = C.(-_) (C.( *) (C.interp c z) (y j))
+             = C.(-_) (interp e y z) };
+    r
+  | Add e1 e2 ->
+      let e1' = opp_expr e1 in
+      let e2' = opp_expr e2 in
+      assert { forall a1 a2. C.(+) (C.(-_) a1) (C.(-_) a2) = C.(-_) (C.(+) a1 a2) };
+      assert { forall y z. interp (Add e1' e2') y z = C.(-_) (interp e y z) by
+               interp (Add e1' e2') y z = C.(+) (interp e1' y z) (interp e2' y z)
+               = C.(+) (C.(-_) (interp e1 y z)) (C.(-_) (interp e2 y z))
+               = C.(-_) (C.(+) (interp e1 y z) (interp e2 y z))
+               = C.(-_) (interp e y z) };
+      Add e1' e2'
+  end
+
+predicate atom (e:expr)
+= match e with
+  | Add _ _ -> false | _ -> true
+  end
+
+(*TODO put this back in norm_eq*)
+let rec norm_eq_aux (ex acc_e:expr) (acc_c:coeff) : (expr, coeff)
+  returns { (rex, rc) -> forall y z.
+              C.(+) (interp rex y z) (interp (Cst rc) y z)
+            = C.(+) (interp ex y z)
+                    (C.(+) (interp acc_e y z) (interp (Cst acc_c) y z)) }
+  returns { (rex, _) -> forall b:int. expr_bound ex b /\ expr_bound acc_e b
+                        -> expr_bound rex b }
+  raises  { C.Unknown -> true }
+  variant { ex }
+= match ex with
+  | Cst c -> acc_e, (C.add c acc_c)
+  | Term _ _ -> (Add acc_e ex, acc_c)
+  | Add e1 e2 -> let ae, ac = norm_eq_aux e1 acc_e acc_c in
+                 norm_eq_aux e2 ae ac
+  end
+
+use import debug.Debug
+
+let norm_eq (e:equality) : (expr, coeff)
+  returns { (ex, c) -> forall y z.
+            interp_eq e y z <-> interp_eq (ex, Cst c) y z }
+  returns { (ex, _) -> forall b:int. eq_bound e b -> expr_bound ex b }
+  raises  { C.Unknown -> true }
+= match e with
+  | (e1, e2) ->
+    let s = Add e1 (opp_expr e2) in
+    assert { forall b. eq_bound e b -> expr_bound s b };
+    match norm_eq_aux s (Cst C.czero) C.czero with
+      (e, c) ->
+        let ec = C.opp c in
+        assert { forall a1 a2. C.(+) a1 a2 = C.azero -> a1 = C.(-_) a2 };
+        assert { forall y z. interp_eq (e1,e2) y z -> interp_eq (e, Cst ec) y z
+                 by interp_eq (s, Cst C.czero) y z so interp s y z = C.azero
+                 so C.(+) (interp e y z) (interp (Cst c) y z) = C.azero
+                 so interp e y z = C.(-_) (interp (Cst c) y z)
+                    = interp (Cst ec) y z };
+        e, ec
+    end
+  end
+
+
+let rec lemma interp_ctx_impl (ctx: context) (g1 g2:equality)
+  requires { forall y z. interp_eq g1 y z -> interp_eq g2 y z }
+  ensures  { forall y z. interp_ctx ctx g1 y z -> interp_ctx ctx g2 y z }
+  variant  { ctx }
+= match ctx with Nil -> () | Cons _ t -> interp_ctx_impl t g1 g2 end
+
+let rec lemma interp_ctx_valid (ctx:context) (g:equality)
+  ensures { forall y z. interp_eq g y z -> interp_ctx ctx g y z }
+  variant  { ctx }
+= match ctx with Nil -> () | Cons _ t -> interp_ctx_valid t g end
+
+use import list.Append
+
+let rec lemma interp_ctx_wr (ctx l:context) (g:equality)
+  ensures { forall y z. interp_ctx ctx g y z -> interp_ctx (ctx ++ l) g y z }
+  variant { ctx }
+= match ctx with
+  | Nil -> ()
+  | Cons _ t -> interp_ctx_wr t l g  end
+
+let rec lemma interp_ctx_wl (ctx l: context) (g:equality)
+  ensures { forall y z. interp_ctx ctx g y z -> interp_ctx (l ++ ctx) g y z }
+  variant { l }
+= match l with Nil -> () | Cons _ t -> interp_ctx_wl ctx t g  end
+
+let rec mul_expr (e:expr) (c:coeff) : expr
+  ensures { forall y z. interp result y z
+            = C.( *) (C.interp c z) (interp e y z) }
+  ensures { valid_expr e -> valid_expr result }
+  variant { e }
+  raises  { C.Unknown -> true }
+= if C.eq c C.czero then Cst C.czero
+  else match e with
+  | Cst c1 -> Cst (C.mul c c1)
+  | Term c1 v -> Term (C.mul c c1) v
+  | Add e1 e2 -> Add (mul_expr e1 c) (mul_expr e2 c)
+  end
+
+let rec add_expr (e1 e2: expr) : expr
+  ensures { forall y z. interp result y z
+                     = C.(+) (interp e1 y z) (interp e2 y z) }
+  variant { e2 }
+  raises  { C.Unknown -> true }
+=
+  let term_or_cst c i
+    ensures { forall y z. interp result y z = interp (Term c i) y z }
+  = if C.eq C.czero c then Cst C.czero else Term c i in
+  let rec add_atom (e a:expr) : (expr, bool)
+    requires { atom a }
+    returns { r,_ -> forall y z. interp r y z
+                     = C.(+) (interp e y z) (interp a y z) }
+    variant { e }
+    raises  { C.Unknown -> true }
+  = match (e,a) with
+    | Term ce ie, Term ca ia ->
+      if ie = ia then (term_or_cst (C.add ce ca) ie, True)
+      else if C.eq ce C.czero then (term_or_cst ca ia, True)
+      else if C.eq ca C.czero then (e,True)
+      else (Add e a, False)
+    | Cst ce, Cst ca -> Cst (C.add ce ca), True
+    | Cst ce, Term ca _ ->
+      if C.eq ca C.czero then (e, True)
+      else if C.eq ce C.czero then (a, True)
+      else (Add e a, False)
+    | Term ce _, Cst ca ->
+      if C.eq ce C.czero then (a, True)
+      else if C.eq ca C.czero then (e, True)
+      else (Add e a, False)
+    | Add e1 e2, _ ->
+      let r, b = add_atom e1 a in
+      if b
+      then
+        match r with
+          | Cst c ->
+            if C.eq c C.czero
+            then begin
+              assert { forall y z. C.(+) (interp e1 y z) (interp a y z) = C.azero };
+              e2, True end
+            else Add r e2, True
+          | _ -> Add r e2, True
+        end
+      else
+        let r,b = add_atom e2 a in
+        match r with
+          | Cst c ->
+            if C.eq c C.czero
+            then begin
+              assert { forall y z. C.(+) (interp e2 y z) (interp a y z) = C.azero };
+              e1, True end
+            else Add e1 r, b
+          | _ -> Add e1 r, b
+        end
+    | _, Add _ _ -> absurd
+    end
+  in
+  match e2 with
+    | Add e1' e2' -> add_expr (add_expr e1 e1') e2'
+    | _ -> let r,_= add_atom e1 e2 in r
+  end
+
+let mul_eq (eq:equality) (c:coeff)
+  ensures { forall y z. interp_eq eq y z -> interp_eq result y z }
+  raises  { C.Unknown -> true }
+= match eq with (e1,e2) -> (mul_expr e1 c, mul_expr e2 c) end
+
+let add_eq (eq1 eq2:equality)
+  ensures { forall y z. interp_eq eq1 y z -> interp_eq eq2 y z
+            -> interp_eq result y z }
+  ensures { forall y z ctx. interp_ctx ctx eq1 y z -> interp_ctx ctx eq2 y z
+            -> interp_ctx ctx result y z }
+  raises  { C.Unknown -> true }
+= match eq1, eq2 with ((a1,b1), (a2,b2)) ->
+  let a = add_expr a1 a2 in let b =  add_expr b1 b2 in
+  let r = (a,b) in
+  let rec lemma aux (l:context)
+    ensures { forall y z. interp_ctx l eq1 y z -> interp_ctx l eq2 y z
+              -> interp_ctx l r y z }
+    variant { l }
+  = match l with Nil -> () | Cons _ t -> aux t end in
+  r
+  end
+
+let rec zero_expr (e:expr) : bool
+  ensures { result -> forall y z. interp e y z = C.azero }
+  variant { e }
+  raises  { C.Unknown -> true }
+=
+  let rec all_zero (e:expr) : bool
+    ensures { result -> forall y z. interp e y z = C.azero }
+    variant { e }
+    = match e with
+    | Cst c -> C.eq c C.czero
+    | Term c _ -> C.eq c C.czero
+    | Add e1 e2 -> all_zero e1 && all_zero e2
+    end
+  in
+  let e' = add_expr (Cst C.czero) e in (* simplifies expr *)
+  all_zero e'
+
+let sub_expr (e1 e2:expr)
+  ensures { forall y z. C.(+) (interp result y z) (interp e2 y z)
+                        = interp e1 y z }
+  raises  { C.Unknown -> true }
+= let r = add_expr e1 (mul_expr e2 (C.opp C.cone)) in
+  assert { forall y z.
+           let v1 = interp e1 y z in
+           let v2 = interp e2 y z in
+           let vr = interp r y z in
+           C.(+) vr v2 = v1
+           by C.( *) v2 (C.(-_) C.aone) = C.(-_) v2
+           so C.(+) vr v2
+           = C.(+) (C.(+) v1 (C.( *) v2 (C.(-_) C.aone))) v2
+           = C.(+) (C.(+) v1 (C.(-_) v2)) v2 = v1 };
+  r
+
+let rec same_eq (eq1 eq2: equality) : bool
+  ensures { result -> forall y z. interp_eq eq1 y z -> interp_eq eq2 y z }
+  raises  { C.Unknown -> true }
+= let (e1,c1) = norm_eq eq1 in
+  let (e2,c2) = norm_eq eq2 in
+  let e = sub_expr e1 e2 in
+  if zero_expr e && C.eq c1 c2 then true
+  else (print (add_expr (Cst C.czero) e); print c1; print c2; false)
+
+use import option.Option
+
+let rec norm_context (l:context) : context
+  ensures { forall g y z. interp_ctx result g y z -> interp_ctx l g y z }
+  raises  { C.Unknown -> true }
+  variant { l }
+= match l with
+  | Nil -> Nil
+  | Cons h t ->
+    let ex, c = norm_eq h in
+    Cons (ex, Cst c) (norm_context t)
+  end
+
+let rec print_lc ctx v : unit variant { ctx }
+= match ctx, v with
+  | Nil, Nil -> ()
+  | Cons l t, Cons v t2 ->
+   (if C.eq C.czero v then ()
+    else (print l; print v));
+    print_lc t t2
+  | _ -> ()
+  end
+
+let check_combination (ctx:context) (g:equality) (v:list coeff) : bool
+  ensures  { result = true -> forall y z. interp_ctx ctx g y z}
+  raises  { C.Unknown -> true }
+=
+  (*let ctx = norm_context ctx in
+  let (g,c) = norm_eq g in*)
+  (* normalize before for fewer Unknown exceptions in computations ? *)
+  let rec aux (l:context) (ghost acc: context) (s:equality) (v:list coeff) : option equality
+    requires { forall y z. interp_ctx acc s y z }
+    requires { ctx = acc ++ l }
+    returns  { Some r -> forall y z. interp_ctx ctx r y z | None -> true }
+    raises  { C.Unknown -> true }
+    variant { l }
+  = match (l, v) with
+    | Nil, Nil -> Some s
+    | Cons eq te, Cons c tc ->
+      let ghost nacc = acc ++ (Cons eq Nil) in
+      if C.eq c C.czero then aux te nacc s tc
+      else begin
+        let ns = (add_eq s (mul_eq eq c)) in
+        interp_ctx_wr ctx (Cons eq Nil) s;
+        interp_ctx_wl ctx (Cons eq Nil) eq;
+        assert { forall y z. interp_ctx nacc ns y z
+                 by interp_ctx nacc s y z /\ interp_ctx nacc eq y z };
+        aux te nacc ns tc end
+    | _ -> None
+    end
+  in
+  match aux ctx Nil (Cst C.czero, Cst C.czero) v with
+  | Some sum -> if same_eq sum g then true else (print_lc ctx v; false)
+  | None -> false
+  end
+
+let transpose (m:matrix coeff) : matrix coeff
+  ensures { result.rows = m.columns /\ result.columns = m.rows }
+=
+  let r = Matrix63.make m.columns m.rows C.czero in
+  for i = 0 to m.rows - 1 do
+    for j = 0 to m.columns - 1 do
+      set r j i (get m i j)
+    done
+  done;
+  r
+
+let swap_rows (m:matrix coeff) (i1 i2: int63) : unit
+  requires { 0 <= i1 < m.rows /\ 0 <= i2 < m.rows }
+= for j = 0 to m.columns - 1 do
+    let c = get m i1 j in
+    set m i1 j (get m i2 j);
+    set m i2 j c
+  done
+
+let mul_row (m:matrix coeff) (i: int63) (c: coeff) : unit
+  requires { 0 <= i < m.rows }
+  requires { not (C.eq c C.czero) }
+  raises  { C.Unknown -> true }
+= if C.eq c C.cone then () else
+  for j = 0 to m.columns - 1 do
+    set m i j (C.mul c (get m i j))
+  done
+
+let addmul_row (m:matrix coeff) (src dst: int63) (c: coeff) : unit
+  requires { 0 <= src < m.rows /\ 0 <= dst < m.rows }
+  raises   { C.Unknown -> true }
+= if C.eq c C.czero then () else
+  for j = 0 to m.columns - 1 do
+    set m dst j (C.add (get m dst j) (C.mul c (get m src j)))
+  done
+
+use import ref.Ref
+
+let gauss_jordan (a: matrix coeff) : option (array coeff)
+  (*AX=B, a=(A|B), result=X*)
+  returns { Some r -> Array63.length r = a.columns | None -> true }
+  requires { 1 <= a.rows /\ 1 <= a.columns }
+  raises { C.Unknown -> true }
+=
+  let n = a.rows in
+  let m = a.columns in
+  (* print n; print m; *)
+  let rec find_nonz (i j:int63)
+    requires { 0 <= i <= n }
+    requires { 0 <= j < m }
+    variant { n-i }
+    ensures { i <= result <= n }
+    ensures { result < n -> not (C.eq (a.elts result j) C.czero) }
+    = if i >= n then n
+    else
+      if C.eq (get a i j) C.czero
+      then find_nonz (i+1) j
+      else i in
+  let pivots = Array63.make n 0 in
+  let r = ref (-1) in
+  for j = 0 to m-2 do
+    invariant { -1 <= !r < n }
+    invariant { forall i. 0 <= i <= !r -> 0 <= pivots[i] }
+    invariant { forall i1 i2: int. 0 <= i1 < i2 <= !r -> pivots[i1] < pivots[i2] }
+    invariant { !r >= 0 -> pivots[!r] < j }
+    label Start in
+    let k = find_nonz (!r+1) j in
+    if k < n
+    then begin
+      r := !r + 1;
+      pivots[!r] <- j;
+      mul_row a k (C.inv(get a k j));
+      if k <> !r then swap_rows a k !r;
+      for i = 0 to n-1 do
+        if i <> !r
+        then addmul_row a !r i (C.opp(get a i j))
+      done;
+    end;
+    assert { forall i1 i2: int. 0 <= i1 < i2 <= !r -> pivots[i1] < pivots[i2]
+             by pivots[i1] = pivots[i1] at Start
+             so [@case_split]
+                ((i2 < !r so pivots[i2] = pivots[i2] at Start)
+                \/ (i2 = !r so pivots[i1] < j(* = pivots[i2])*))) };
+  done;
+  if !r < 0 then None (* matrix is all zeroes *)
+  else begin
+    let v = Array63.make m(*(m-1)*) C.czero in
+    for i = 0 to !r do
+      v[pivots[i]] <- get a i (m-1)
+    done;
+    Some v (*pivots[!r] < m-1*)  (*pivot on last column, no solution*)
+  end
+
+let rec function to_list (a: array 'a) (l u: int63) : list 'a
+  requires { l >= 0 /\ u <= Array63.length a }
+  variant  { u - l }
+= if u <= l then Nil else Cons a[l] (to_list a (l+1) u)
+
+exception Failure
+
+let linear_decision (l: context) (g: equality) : bool
+  requires { valid_ctx l }
+  requires { valid_eq g }
+  requires { length l < 100000 } (* integer overflows *)
+  ensures { forall y z. result -> interp_ctx l g y z }
+  raises  { C.Unknown -> true | Failure -> true }
+=
+  let nv = (max (max_var_e g) (max_var_ctx l)) in
+  begin ensures { nv < 100000 }
+    if nv >= 100000 then raise Failure
+  end;
+  let nv = Int63.of_int nv in
+  let ll = Int63.of_int (length l) in
+  let a = Matrix63.make ll (nv+1) C.czero in
+  let b = Array63.make ll C.czero in            (* ax = b *)
+  let v = Array63.make (nv+1) C.czero in          (* goal *)
+  let rec fill_expr (ex: expr) (i:int63): unit
+    variant { ex }
+    raises  { C.Unknown -> true }
+    requires { 0 <= i < length l }
+    requires { expr_bound ex nv }
+    raises  { Failure -> true }
+  = match ex with
+    | Cst c -> if C.eq c C.czero then () else raise Failure
+    | Term c j ->
+      let j = Int63.of_int j in
+      set a i j (C.add (get a i j) c)
+    | Add e1 e2 -> fill_expr e1 i; fill_expr e2 i
+    end in
+  let rec fill_ctx (ctx:context) (i:int63) : unit
+    requires { ctx_bound ctx nv }
+    variant { length l - i }
+    requires { length l - i = length ctx }
+    requires { 0 <= i <= length l }
+    raises  { Failure -> true }
+  = match ctx with
+    | Nil -> ()
+    | Cons e t ->
+      assert { i < length l };
+      try
+        let ex, c = norm_eq e in
+        if (not (C.eq c C.czero)) then b[i] <- C.add b[i] c;
+        fill_expr ex i;
+      with C.Unknown -> () (* some equalities are in the context but cannot be normalized, typically they are useless, ignore them *)
+      end;
+      fill_ctx t (i+1)
+    end in
+  let rec fill_goal (ex:expr) : unit
+    requires { expr_bound ex nv }
+    variant { ex }
+    raises { C.Unknown -> true }
+    raises  { Failure -> true }
+  = match ex with
+    | Cst c -> if C.eq c C.czero then () else raise Failure
+    | Term c j ->
+      let j = Int63.of_int j in
+      v[j] <- C.add v[j] c
+    | Add e1 e2 -> fill_goal e1; fill_goal e2
+    end in
+  fill_ctx l 0;
+  let (ex, d) = norm_eq g in
+  fill_goal ex;
+  let ab = m_append a b in
+  let cd = v_append v d in
+  let ab' = transpose ab in
+  match gauss_jordan (m_append ab' cd) with
+    | Some r ->
+      check_combination l g (to_list r 0 ll)
+    | None -> false
+  end
+
+type expr' = | Sum expr' expr' | ProdL expr' cprod | ProdR cprod expr' | Diff expr' expr'
+             | Var int | Coeff coeff
+
+with cprod = | C coeff | Times cprod cprod
+
+function interp_c (e:cprod) (y:vars) (z:C.cvars) : C.a
+= match e with
+  | C c -> C.interp c z
+  | Times e1 e2 -> C.(*) (interp_c e1 y z) (interp_c e2 y z)
+  end
+
+meta rewrite_def function interp_c
+
+function interp' (e:expr') (y:vars) (z:C.cvars) : C.a
+= match e with
+  | Sum e1 e2 -> C.(+) (interp' e1 y z) (interp' e2 y z)
+  | ProdL e c -> C.(*) (interp' e y z) (interp_c c y z)
+  | ProdR c e -> C.(*) (interp_c c y z) (interp' e y z)
+  | Diff e1 e2 -> C.(-) (interp' e1 y z) (interp' e2 y z)
+  | Var n -> y n
+  | Coeff c -> C.interp c z
+  end
+
+meta rewrite_def function interp'
+
+(*exception NonLinear*)
+
+type equality' = (expr', expr')
+type context' = list equality'
+
+function interp_eq' (g:equality') (y:vars) (z:C.cvars) : bool
+= match g with (g1, g2) -> interp' g1 y z = interp' g2 y z end
+
+meta rewrite_def function interp_eq'
+
+function interp_ctx' (l: context') (g: equality') (y: vars) (z:C.cvars) : bool
+= match l with
+  | Nil -> interp_eq' g y z
+  | Cons h t -> (interp_eq' h y z) -> (interp_ctx' t g y z)
+  end
+
+meta rewrite_def function interp_ctx'
+
+let rec predicate valid_expr' (e:expr')
+  variant { e }
+= match e with
+  | Var i -> 0 <= i
+  | Sum e1 e2 | Diff e1 e2 -> valid_expr' e1 && valid_expr' e2
+  | Coeff _ -> true
+  | ProdL e _ | ProdR _ e -> valid_expr' e
+  end
+
+let predicate valid_eq' (eq:equality')
+= match eq with (e1,e2) -> valid_expr' e1 && valid_expr' e2 end
+
+let rec predicate valid_ctx' (ctx:context')
+= match ctx with Nil -> true | Cons eq t -> valid_eq' eq && valid_ctx' t end
+
+let rec simp (e:expr') : expr
+  ensures { forall y z. interp result y z = interp' e y z }
+  ensures { valid_expr' e -> valid_expr result }
+  raises  { C.Unknown -> true }
+  variant { e }
+=
+  let rec simp_c (e:cprod) : coeff
+    ensures { forall y z. C.interp result z = interp_c e y z }
+    variant { e }
+    raises  { C.Unknown -> true }
+  =
+    match e with
+    | C c -> c
+    | Times c1 c2 -> C.mul (simp_c c1) (simp_c c2)
+    end
+  in
+  match e with
+  | Sum e1 e2 -> Add (simp e1) (simp e2)
+  | Diff e1 e2 -> Add (simp e1) (opp_expr (simp e2))
+  | Var n -> Term C.cone n
+  | Coeff c -> Cst c
+  | ProdL e c | ProdR c e ->
+    mul_expr (simp e) (simp_c c)
+  end
+
+let simp_eq (eq:equality') : equality
+  ensures { forall y z. interp_eq result y z = interp_eq' eq y z }
+  ensures { valid_eq' eq -> valid_eq result }
+  raises  { (*NonLinear -> true | *)C.Unknown -> true }
+= match eq with (g1, g2) -> (simp g1, simp g2) end
+
+let rec simp_ctx (ctx: context') (g:equality') : (context, equality)
+  returns { (rc, rg) ->
+            (valid_ctx' ctx -> valid_eq' g -> valid_ctx rc /\ valid_eq rg) /\
+            length rc = length ctx /\
+            forall y z. interp_ctx rc rg y z = interp_ctx' ctx g y z }
+  raises  { (*NonLinear -> true | *) C.Unknown -> true }
+  variant { ctx }
+= match ctx with
+  | Nil -> Nil, simp_eq g
+  | Cons eq t -> let rt, rg = simp_ctx t g in
+                 Cons (simp_eq eq) rt, rg
+  end
+
+let decision (l:context') (g:equality')
+  requires { valid_ctx' l }
+  requires { valid_eq' g }
+  requires { length l < 100000 }
+  ensures { forall y z. result -> interp_ctx' l g y z }
+  raises  { (* NonLinear -> true | *) C.Unknown -> true | Failure -> true }
+= let sl, sg = simp_ctx l g in
+  linear_decision sl sg
+
+end
+
+module RationalCoeffs
+
+use import int.Int
+use import real.RealInfix
+use import real.FromInt
+use import int.Abs
+
+(*meta coercion function from_int*)
+
+type t = (int, int)
+type rvars = int -> real
+
+exception QError
+
+let constant rzero = (0,1)
+let constant rone = (1,1)
+
+function rinterp (t:t) (v:rvars) : real
+= match t with
+  | (n,d) ->  from_int n /. from_int d
+  end
+
+meta rewrite_def function rinterp
+
+let lemma prod_compat_eq (a b c:real)
+  requires { c <> 0.0 }
+  requires { a *. c = b *. c }
+  ensures  { a = b }
+= ()
+
+let lemma cross_d (n1 d1 n2 d2:int)
+  requires { d1 <> 0 /\ d2 <> 0 }
+  requires { n1 * d2 = n2 * d1 }
+  ensures { forall v. rinterp (n1,d1) v = rinterp (n2,d2) v }
+= let d = from_int (d1 * d2) in
+  assert { forall v. rinterp (n1, d1) v = rinterp (n2, d2) v
+           by rinterp (n1, d1) v *. d = rinterp (n2,d2) v *. d }
+
+let lemma cross_ind (n1 d1 n2 d2:int)
+  requires { d1 <> 0 /\ d2 <> 0 }
+  requires { forall v. rinterp (n1,d1) v = rinterp (n2,d2) v }
+  ensures  { n1 * d2 = n2 * d1 }
+= assert { from_int d1 <> 0.0 /\ from_int d2 <> 0.0 };
+  assert { from_int n1 /. from_int d1 = from_int n2 /. from_int d2 };
+  assert { from_int n1 *. from_int d2 = from_int n2 *. from_int d1
+           by from_int n1 *. from_int d2
+              = (from_int n1 /. from_int d1) *. from_int d1 *. from_int d2
+              = (from_int n2 /. from_int d2) *. from_int d1 *. from_int d2
+              = from_int n2 *. from_int d1 };
+  assert { from_int (n1*d2) = from_int (n2 * d1) }
+
+
+lemma cross: forall n1 d1 n2 d2: int. d1 <> 0 -> d2 <> 0 ->
+             n1 * d2 = n2 * d1 <->
+             forall v. rinterp (n1,d1) v = rinterp (n2,d2) v
+
+use import int.ComputerDivision
+use import ref.Ref
+use import number.Gcd
+
+let gcd (x:int) (y:int)
+  requires { x > 0 /\ y > 0 }
+  ensures { result = gcd x y }
+  ensures { result > 0 }
+  =
+  let ghost ox = x in
+  let x = ref x in let y = ref y in
+  label Pre in
+  while (!y > 0) do
+     invariant { !x >= 0 /\ !y >= 0 }
+     invariant { gcd !x !y = gcd (!x at Pre) (!y at Pre) }
+     variant { !y }
+     invariant { ox > 0 -> !x > 0 }
+     let r = mod !x !y in let ghost q = div !x !y in
+     assert { r = !x - q * !y };
+     x := !y; y := r;
+  done;
+  !x
+
+let simp (t:t) : t
+  ensures { forall v:rvars. rinterp result v = rinterp t v }
+= match t with
+  | (n,d) ->
+    if d = 0 then t
+    else if n = 0 then rzero
+    else
+    let g = gcd (abs n) (abs d) in
+    let n', d' = (div n g, div d g) in
+    assert { n = g * n' /\ d = g * d' };
+    assert { n' * d = n * d' };
+    (n', d')
+  end
+
+let radd (a b:t)
+  ensures { forall y. rinterp result y = rinterp a y +. rinterp b y }
+  raises  { QError -> true }
+= match (a,b) with
+  | (n1,d1), (n2,d2) ->
+  if d1 = 0 || d2 = 0 then raise QError
+  else begin
+    let r = (n1*d2 + n2*d1, d1*d2) in
+    let ghost d = from_int d1 *. from_int d2 in
+    assert { forall y.
+             rinterp a y +. rinterp b y = rinterp r y
+             by rinterp a y *. d = from_int n1 *. from_int d2
+             so rinterp b y *. d = from_int n2 *. from_int d1
+             so (rinterp a y +. rinterp b y) *. d
+                = from_int (n1*d2 + n2*d1)
+                = rinterp r y *. d };
+    simp r end
+ end
+
+let rmul (a b:t)
+  ensures { forall y. rinterp result y = rinterp a y *. rinterp b y }
+  raises  { QError -> true }
+= match (a,b) with
+  | (n1,d1), (n2, d2) ->
+    if d1 = 0 || d2 = 0 then raise QError
+    else begin
+      let r =  (n1*n2, d1*d2) in
+      assert { forall y. rinterp r y = rinterp a y *. rinterp b y
+               by rinterp r y = from_int (n1*n2) /. from_int(d1*d2)
+                  = (from_int n1 *. from_int n2) /. (from_int d1 *. from_int d2)
+                  = (from_int n1 /. from_int d1) *. (from_int n2 /. from_int d2)
+                  = rinterp a y *. rinterp b y };
+      r
+    end
+  end
+
+let ropp (a:t)
+  ensures { forall y. rinterp result y = -. rinterp a y }
+= match a with
+  | (n,d) -> (-n, d)
+  end
+
+let predicate req (a b:t)
+  ensures { result -> forall y. rinterp a y = rinterp b y }
+= match (a,b) with
+  | (n1,d1), (n2,d2) -> n1 = n2 && d1 = d2 || (d1 <> 0 && d2 <> 0 && n1 * d2 = n2 * d1)
+  end
+
+let rinv (a:t)
+  requires { not req a rzero }
+  ensures { not req result rzero }
+  ensures { forall y. rinterp result y *. rinterp a y = 1.0 }
+  raises  { QError -> true }
+= match a with
+  | (n,d) -> if n = 0 || d = 0 then raise QError else (d,n)
+  end
+
+let is_zero (a:t)
+  ensures { result <-> req a rzero }
+= match a with
+  | (n,d) -> n = 0 && d <> 0
+  end
+
+end
+
+module LinearDecisionRational
+
+use import RationalCoeffs
+use import real.RealInfix
+use import real.FromInt
+
+clone export LinearEquationsDecision with type  C.a = real, function C.(+) = (+.), function C.( * ) = ( *. ), function C.(-_) = (-._), function C.(-) = (-.), type coeff = t, type C.cvars=int -> real, function C.interp=rinterp, exception C.Unknown = QError, constant C.azero = Real.zero, constant C.aone = Real.one, predicate C.ale = (<=.), val C.czero=rzero, val C.cone=rone, lemma C.sub_def, lemma C.zero_def, lemma C.one_def, val C.add=radd, val C.mul=rmul, val C.opp=ropp, val C.eq=req, val C.inv=rinv, goal C.A.ZeroLessOne, goal C.A.CompatOrderAdd, goal C.A.CompatOrderMult, goal C.A.Unitary, goal C.A.NonTrivialRing, goal C.A.Mul_distr_l, goal C.A.Mul_distr_r, goal C.A.Inv_def_l, goal C.A.Inv_def_r, goal C.A.MulAssoc.Assoc, goal C.A.Assoc, goal C.A.MulComm.Comm, goal C.A.Comm, goal C.A.Unit_def_l, goal C.A.Unit_def_r
+
+end
+
+module LinearDecisionInt
+
+use import int.Int
+
+type t' =  IC int | Error
+
+function interp_id (t:t') (v:int -> int) : int
+= match t with
+  | IC i -> i
+  | Error -> 0 (* never created *)
+  end
+
+meta rewrite_def function interp_id
+
+let constant izero = IC 0
+
+let constant ione = IC 1
+
+let predicate ieq (a b:t') = false
+
+exception NError
+
+let iadd (a b:t') : t'
+  ensures { forall z. interp_id result z = interp_id a z + interp_id b z }
+  raises  { NError -> true }
+= raise NError
+
+let imul (a b:t') : t'
+  ensures { forall z. interp_id result z = interp_id a z * interp_id b z }
+  raises  { NError -> true }
+= raise NError
+
+let iopp (a:t') : t'
+  ensures { forall z. interp_id result z = - interp_id a z }
+  raises  { NError -> true }
+= raise NError
+
+let iinv (t:t') : t'
+  (*ensures { forall v: int -> int. id result v * id t v = one }*)
+  ensures { not (ieq result izero) }
+  raises { NError -> true }
+= raise NError
+
+clone export LinearEquationsDecision with type C.a = int, function C.(+)=(+), function C.(*) = (*), function C.(-_) = (-_), function C.(-) = (-), type coeff = t', type C.cvars = int->int,function C.interp = interp_id, constant C.azero = zero, constant C.aone = one, predicate C.ale= (<=), val C.czero = izero, val C.cone = ione, lemma C.sub_def, lemma C.zero_def, lemma C.one_def, val C.add = iadd, val C.mul = imul, val C.opp = iopp, val C.eq = ieq, val C.inv = iinv, goal C.A.ZeroLessOne, goal C.A.CompatOrderAdd, goal C.A.CompatOrderMult, goal C.A.Unitary, goal C.A.NonTrivialRing, goal C.A.Mul_distr_l, goal C.A.Mul_distr_r, goal C.A.Inv_def_l, goal C.A.Inv_def_r, goal C.A.MulAssoc.Assoc, goal C.A.Assoc, goal C.A.MulComm.Comm, goal C.A.Comm, goal C.A.Unit_def_l, goal C.A.Unit_def_r
+
+
+use import real.FromInt
+use import RationalCoeffs
+use LinearDecisionRational as R
+use import list.List
+
+let ghost function m_y (y:int -> int): (int -> real)
+  ensures { forall i. result i = from_int (y i) }
+= fun i -> from_int (y i)
+
+meta rewrite_def function m_y
+
+let m (t:t') : (int, int)
+  ensures { forall z. rinterp result (m_y z) = from_int (interp_id t z) }
+  raises  { NError -> true }
+= match t with
+  | IC x -> (x,1)
+  | _ -> raise NError
+  end
+
+let rec m_cprod (e:cprod) : R.cprod
+  ensures { forall y z. R.interp_c result (m_y y) (m_y z)
+            = from_int (interp_c e y z) }
+  raises  { NError -> true }
+  variant { e }
+= match e with
+  | C c -> R.C (m c)
+  | Times c1 c2 -> R.Times (m_cprod c1) (m_cprod c2)
+  end
+
+let rec m_expr (e:expr') : R.expr'
+  ensures { forall y z. R.interp' result (m_y y) (m_y z)
+            = from_int (interp' e y z) }
+  ensures { valid_expr' e -> R.valid_expr' result }
+  raises  { NError -> true }
+  variant { e }
+= match e with
+  | Var i -> R.Var i
+  | Coeff c -> R.Coeff (m c)
+  | Sum e1 e2 -> R.Sum (m_expr e1) (m_expr e2)
+  | Diff e1 e2 -> R.Diff (m_expr e1) (m_expr e2)
+  | ProdL e c -> R.ProdL (m_expr e) (m_cprod c)
+  | ProdR c e -> R.ProdR (m_cprod c) (m_expr e)
+  end
+
+use import list.Length
+use import debug.Debug
+
+let m_eq (eq:equality') : R.equality'
+  ensures { forall y z. R.interp_eq' result (m_y y) (m_y z)
+                        <-> interp_eq' eq y z }
+  ensures { valid_eq' eq -> R.valid_eq' result }
+  raises  { NError -> true }
+= match eq with (e1,e2) -> (m_expr e1, m_expr e2) end
+
+let rec m_ctx (ctx:context') (g:equality') : (R.context', R.equality')
+  returns { c',g' -> forall y z. R.interp_ctx' c' g' (m_y y) (m_y z) <->
+                        interp_ctx' ctx g y z }
+  returns { c', _ -> valid_ctx' ctx -> R.valid_ctx' c' }
+  returns { c', _ -> length c' = length ctx }
+  returns { _, g' -> valid_eq' g -> R.valid_eq' g' }
+  raises  { NError -> true }
+  variant { ctx }
+= match ctx with
+  | Nil -> Nil, m_eq g
+  | Cons h t ->
+    let c',g' = m_ctx t g in
+    (Cons (m_eq h) c',g')
+    end
+
+let int_decision (l: context') (g: equality') : bool
+  requires { valid_ctx' l }
+  requires { valid_eq' g }
+  requires { length l < 100000 }
+  ensures { forall y z. result -> interp_ctx' l g y z }
+  raises  { R.Failure -> true | QError -> true | NError -> true }
+= let l',g' = m_ctx l g in
+  R.decision l' g'
+
+end
+
+
+module Test
+
+use import RationalCoeffs
+use import LinearDecisionRational
+use import int.Int
+use import real.RealInfix
+use import real.FromInt
+
+meta "compute_max_steps" 0x10000
+meta coercion function from_int
+
+goal g: forall x y: real.
+        (from_int 3 /. from_int 1) *. x +. (from_int 2/. from_int 1) *. y = (from_int 21/. from_int 1) ->
+        (from_int 7 /. from_int 1) *. x +. (from_int 4/. from_int 1) *. y = (from_int 47/. from_int 1) ->
+        x = (from_int 5 /. from_int 1)
+end
+
+module TestInt
+
+use import LinearDecisionInt
+use import int.Int
+
+meta "compute_max_steps" 0x10000
+
+goal g: forall x y:int.
+     3 * x + 2 * y = 21 ->
+     7 * x + 4 * y = 47 ->
+     x = 5
+
+end
+
+module MP64Coeffs
+
+use mach.int.UInt64 as M
+use import real.RealInfix
+use import real.FromInt
+use import real.PowerReal
+use RationalCoeffs as Q
+use import int.Int
+
+use import debug.Debug
+
+type evars = int -> int
+
+
+type exp = Lit int | Var int | Plus exp exp | Minus exp | Sub exp exp
+type t = (Q.t, exp)
+
+let constant mzero = (Q.rzero, Lit 0)
+let constant mone = (Q.rone, Lit 0)
+
+constant rradix: real = from_int (M.radix)
+
+function qinterp (q:Q.t) : real
+= match q with (n,d) -> from_int n /. from_int d end
+
+meta rewrite_def function qinterp
+
+lemma qinterp_def: forall q v. qinterp q = Q.rinterp q v
+
+function interp_exp (e:exp) (y:evars) : int
+= match e with
+  | Lit n -> n
+  | Var v -> y v
+  | Plus e1 e2 -> interp_exp e1 y + interp_exp e2 y
+  | Sub e1 e2 -> interp_exp e1 y - interp_exp e2 y
+  | Minus e' -> - (interp_exp e' y)
+  end
+
+meta rewrite_def function interp_exp
+
+function minterp (t:t) (y:evars) : real
+= match t with
+  (q,e) ->
+  qinterp q *. pow rradix (from_int (interp_exp e y))
+  end
+
+meta rewrite_def function minterp
+
+exception MPError
+
+let rec opp_exp (e:exp)
+  ensures { forall y. interp_exp result y = - interp_exp e y }
+  variant { e }
+= match e with
+  | Lit n -> Lit (-n)
+  | Minus e' -> e'
+  | Plus e1 e2 -> Plus (opp_exp e1) (opp_exp e2)
+  | Sub e1 e2 -> Sub e2 e1
+  | Var _ -> Minus e
+  end
+
+let rec add_sub_exp (e1 e2:exp) (s:bool) : exp
+  ensures { forall y.
+            if s
+            then interp_exp result y = interp_exp e1 y + interp_exp e2 y
+            else interp_exp result y = interp_exp e1 y - interp_exp e2 y }
+  raises  { MPError -> true }
+  variant { e2, e1 }
+=
+  let rec add_atom (e a:exp) (s:bool) : (exp, bool)
+    returns { r, _ -> forall y.
+              if s then interp_exp r y = interp_exp e y + interp_exp a y
+                   else interp_exp r y = interp_exp e y - interp_exp a y }
+    raises { MPError -> true }
+    variant { e }
+  = match (e,a) with
+    | Lit n1, Lit n2 -> (if s then Lit (n1+n2) else Lit (n1-n2)), True
+    | Lit n, Var i
+      -> if n = 0 then (if s then Var i else Minus (Var i)), True
+         else (if s then Plus e a else Sub e a), False
+    | Var i, Lit n
+      -> if n = 0 then Var i, true
+      else (if s then Plus e a else Sub e a), False
+    | Lit n, Minus e' ->
+      if n = 0 then (if s then Minus e' else e'), True
+      else (if s then Plus e a else Sub e a), False
+    | Minus e', Lit n ->
+      if n = 0 then Minus e', True
+      else (if s then Plus e a else Sub e a), False
+    | Var i, Minus (Var j) | Minus (Var j), Var i ->
+      if s && (i = j) then (Lit 0, true)
+      else (if s then Plus e a else Sub e a), False
+    | Var i, Var j -> if s then Plus e a, False
+                      else
+                        if i = j then Lit 0, True
+                        else Sub e a, False
+    | Minus (Var i), Minus (Var j) ->
+      if (not s) && (i=j) then Lit 0, true
+      else (if s then Plus e a else Sub e a), False
+    | Minus _, Minus _ -> (if s then Plus e a else Sub e a), False
+    | Plus e1 e2, _ ->
+      let r, b = add_atom e1 a s in
+      if b then
+        match r with
+        | Lit n -> if n = 0 then e2, True else Plus r e2, True
+        | _ -> Plus r e2, True
+        end
+      else let r, b = add_atom e2 a s in Plus e1 r, b
+    | Sub e1 e2, _ ->
+      let r, b = add_atom e1 a s in
+      if b then
+        match r with
+        | Lit n -> if n = 0 then opp_exp e2, True else Sub r e2, True
+        | _ -> Sub r e2, True
+        end
+      else let r, b = add_atom e2 a (not s) in
+           if b then Sub e1 r, True
+           else if s then Sub (Plus e1 a) e2, False
+                else Sub e1 (Plus e2 a), False
+    | _ -> raise MPError
+    end
+  in
+  match e2 with
+   | Plus e1' e2' ->
+     let r = add_sub_exp e1 e1' s in
+     match r with
+     | Lit n -> if n = 0
+                then (if s then e2' else opp_exp e2')
+                else add_sub_exp r e2' s
+     | _ -> add_sub_exp r e2' s
+     end
+   | Sub e1' e2' ->
+     let r = add_sub_exp e1 e1' s in
+     match r with
+     | Lit n -> if n = 0
+                then (if s then opp_exp e2' else e2')
+                else add_sub_exp r e2' (not s)
+     | _ -> add_sub_exp r e2' (not s)
+     end
+   | _ -> let r, _ = add_atom e1 e2 s in r
+  end
+
+let add_exp (e1 e2:exp) : exp
+  ensures { forall y. interp_exp result y = interp_exp e1 y + interp_exp e2 y }
+  raises  { MPError -> True }
+= add_sub_exp e1 e2 True
+
+
+let rec zero_exp (e:exp) : bool
+  ensures { result -> forall y. interp_exp e y = 0 }
+  variant { e }
+  raises  { MPError -> true }
+=
+  let rec all_zero (e:exp) : bool
+    ensures { result -> forall y. interp_exp e y = 0 }
+    variant { e }
+  = match e with
+    | Lit n -> n = 0
+    | Var _ -> false
+    | Minus e -> all_zero e
+    | Plus e1 e2 -> all_zero e1 && all_zero e2
+    | Sub e1 e2 -> all_zero e1 && all_zero e2
+    end
+  in
+  let e' = add_exp (Lit 0) e in (* simplifies exp *)
+  all_zero e'
+
+let rec same_exp (e1 e2: exp)
+  ensures { result -> forall y. interp_exp e1 y = interp_exp e2 y }
+  variant { e1, e2 }
+  raises  { MPError -> true }
+= match e1, e2 with
+  | Lit n1, Lit n2 -> n1 = n2
+  | Var v1, Var v2 -> v1 = v2
+  | Minus e1', Minus e2' -> same_exp e1' e2'
+  | _ -> zero_exp (add_exp e1 (opp_exp e2))
+  end
+
+let madd (a b:t)
+  ensures { forall y. minterp result y = minterp a y +. minterp b y }
+  raises  { MPError -> true }
+  raises  { Q.QError -> true }
+= match a, b with
+  | (q1, e1), (q2, e2) ->
+    if Q.is_zero q1 then b
+    else if Q.is_zero q2 then a
+    else if same_exp e1 e2
+    then begin
+      let q = Q.radd q1 q2 in
+      assert { forall y. minterp (q, e1) y = minterp a y +. minterp b y
+               by let p = pow rradix (from_int (interp_exp e1 y)) in
+                  minterp (q, e1) y = (qinterp q) *. p
+                  = (qinterp q1 +. qinterp q2) *. p
+                  = qinterp q1 *. p +. qinterp q2 *. p
+                  = minterp a y +. minterp b y };
+      (q,e1) end
+    else raise MPError
+  end
+
+let mmul (a b:t)
+  ensures { forall y. minterp result y = minterp a y *. minterp b y }
+  raises  { Q.QError -> true }
+  raises  { MPError -> true }
+= match a, b with
+  | (q1,e1), (q2,e2) ->
+    let q = Q.rmul q1 q2 in
+    if Q.is_zero q then mzero
+    else begin
+      let e = add_exp e1 e2 in
+      assert { forall y. minterp (q,e) y = minterp a y *. minterp b y
+               by let p1 = pow rradix (from_int (interp_exp e1 y)) in
+                  let p2 = pow rradix (from_int (interp_exp e2 y)) in
+                  let p  = pow rradix (from_int (interp_exp e y)) in
+                  interp_exp e y = interp_exp e1 y + interp_exp e2 y
+                  so p = p1 *. p2
+                  so minterp (q,e) y = qinterp q *. p
+                     = (qinterp q1 *. qinterp q2) *. p
+                     = (qinterp q1 *. qinterp q2) *. p1 *. p2
+                     = minterp a y *. minterp b y };
+      (q,e)
+    end
+  end
+
+let mopp (a:t)
+  ensures { forall y. minterp result y = -. minterp a y }
+= match a with (q,e) -> (Q.ropp q, e) end
+
+let rec predicate pure_same_exp (e1 e2: exp)
+  ensures { result -> forall y. interp_exp e1 y = interp_exp e2 y }
+  variant { e1, e2 }
+= match e1, e2 with
+  | Lit n1, Lit n2 -> n1 = n2
+  | Var v1, Var v2 -> v1 = v2
+  | Minus e1', Minus e2' -> pure_same_exp e1' e2'
+  | Plus a1 a2, Plus b1 b2 ->
+    (pure_same_exp a1 b1 && pure_same_exp a2 b2) ||
+    (pure_same_exp a1 b2 && pure_same_exp a2 b1)
+  | _ -> false
+  end
+
+let predicate meq (a b:t)
+  ensures { result -> forall y. minterp a y = minterp b y }
+= match (a,b) with
+  | (q1,e1), (q2,e2) -> (Q.req q1 q2 && pure_same_exp e1 e2) || (Q.is_zero q1 && Q.is_zero q2)
+  end
+
+let minv (a:t)
+  requires { not meq a mzero }
+  ensures  { not meq result mzero }
+(*  ensures  { forall y. minterp result y *. minterp a y = 1.0 } no need to prove this*)
+  raises   { Q.QError -> true }
+= match a with
+  | (q,e) -> (Q.rinv q, opp_exp e)
+  end
+
+end
+
+module LinearDecisionRationalMP
+
+use import MP64Coeffs
+use import real.RealInfix
+
+type coeff = t
+
+clone export LinearEquationsDecision with type C.a = real, function C.(+) = (+.), function C.( *) = ( *.), function C.(-_) = (-._), function C.(-) = (-.), type coeff = t, type C.cvars=evars, function C.interp=minterp, exception C.Unknown = MPError, constant C.azero = Real.zero, constant C.aone = Real.one, predicate C.ale = (<=.), val C.czero=mzero, val C.cone=mone, lemma C.sub_def, lemma C.zero_def, lemma C.one_def, val C.add=madd, val C.mul=mmul, val C.opp=mopp, val C.eq=meq, val C.inv=minv, goal C.A.ZeroLessOne, goal C.A.CompatOrderAdd, goal C.A.CompatOrderMult, goal C.A.Unitary, goal C.A.NonTrivialRing, goal C.A.Mul_distr_l, goal C.A.Mul_distr_r, goal C.A.Inv_def_l, goal C.A.Inv_def_r, goal C.A.MulAssoc.Assoc, goal C.A.Assoc, goal C.A.MulComm.Comm, goal C.A.Comm, goal C.A.Unit_def_l, goal C.A.Unit_def_r
+
+end
+module LinearDecisionIntMP
+
+use import int.Int
+use import int.Power
+use import MP64Coeffs
+
+type t = | I int | E exp | R
+
+let constant mpzero: t = I 0
+let constant mpone: t = I 1
+
+function mpinterp (t:t) (y:evars) : int
+= match t with
+  | I n -> n
+  | E e -> power M.radix (interp_exp e y)
+  | R -> M.radix
+  end
+
+meta rewrite_def function mpinterp
+
+(* TODO restructure stuff so that expr, eq, ctx, valid_ can be imported without having to implement these *)
+
+let mpadd (a b:t) : t
+  ensures { forall y. mpinterp result y = mpinterp a y + mpinterp b y }
+  raises  { MPError -> true }
+= raise MPError
+
+let mpmul (a b:t) : t
+  ensures { forall y. mpinterp result y = mpinterp a y * mpinterp b y }
+  raises  { MPError -> true }
+= raise MPError
+
+let mpopp (a:t) : t
+  ensures { forall y. mpinterp result y = - mpinterp a y }
+  raises  { MPError -> true }
+= raise MPError
+
+let predicate mpeq (a b:t)
+  ensures { result -> forall y. mpinterp a y = mpinterp b y }
+= false (*match a, b with
+  (n1, e1), (n2, e2) -> n1=n2 && (n1 = 0 || same_exp e1 e2)
+  end*)
+
+let mpinv (a:t) : t
+  ensures { not mpeq result mpzero }
+  raises  { MPError -> true }
+= raise MPError
+
+
+clone export LinearEquationsDecision with type C.a = int, function C.(+) = (+), function C.(*) = (*), function C.(-_) = (-_), function C.(-) = (-), type coeff = t, type C.cvars = int->int, function C.interp = mpinterp, constant C.azero = zero, constant C.aone = one, val C.czero = mpzero, val C.cone = mpone, predicate C.ale = (<=), lemma C.sub_def, lemma C.zero_def, lemma C.one_def, val C.add = mpadd, val C.mul = mpmul, val C.opp = mpopp, val C.eq = mpeq, val C.inv = mpinv, goal C.A.ZeroLessOne, goal C.A.CompatOrderAdd, goal C.A.CompatOrderMult, goal C.A.Unitary, goal C.A.NonTrivialRing, goal C.A.Mul_distr_l, goal C.A.Mul_distr_r, goal C.A.Inv_def_l, goal C.A.Inv_def_r, goal C.A.MulAssoc.Assoc, goal C.A.Assoc, goal C.A.MulComm.Comm, goal C.A.Comm, goal C.A.Unit_def_l, goal C.A.Unit_def_r
+
+use LinearDecisionRationalMP as R
+use import real.FromInt
+use import real.PowerReal
+use import real.RealInfix
+use import int.Int
+
+use import list.List
+
+predicate pos_exp (t:t) (y:evars)
+= match t with
+  | E e -> 0 <= interp_exp e y
+  | I _ | R -> true
+  end
+
+predicate pos_cprod (e:cprod) (y:evars)
+= match e with
+  | C c -> pos_exp c y
+  | Times c1 c2 -> pos_cprod c1 y && pos_cprod c2 y
+  end
+
+predicate pos_expr' (e:expr') (y:evars)
+= match e with
+  | Coeff c -> pos_exp c y
+  | Var _ -> true
+  | Sum e1 e2 | Diff e1 e2
+    -> pos_expr' e1 y /\ pos_expr' e2 y
+  | ProdL e c | ProdR c e -> pos_expr' e y && pos_cprod c y
+  end
+
+predicate pos_eq' (eq:equality') (y:evars)
+= match eq with (e1, e2) -> pos_expr' e1 y /\ pos_expr' e2 y end
+
+predicate pos_ctx' (l:context') (y:evars)
+= match l with Nil -> true | Cons h t -> pos_eq' h y /\ pos_ctx' t y end
+
+let rec function m (t:t) : R.coeff
+  ensures { forall y. pos_exp t y -> minterp result y
+            = from_int (mpinterp t y) }
+= match t with
+  | I n -> ((n,1), Lit 0)
+  | E e -> ((1,1), e)
+  | R -> ((1,1), Lit 1) (* or ((radix, 1), Lit 0) ? *)
+  end
+
+meta rewrite_def function m
+
+let ghost function m_y (y:int->int): (int -> real)
+  ensures { forall i. result i = from_int (y i) }
+= fun i -> from_int (y i)
+
+let rec function m_cprod (e:cprod) : R.cprod
+  ensures { forall y z. pos_cprod e z -> R.interp_c result (m_y y) z
+            = from_int (interp_c e y z) }
+= match e with
+  | C c -> R.C (m c)
+  | Times c1 c2 -> R.Times (m_cprod c1) (m_cprod c2)
+  end
+
+meta rewrite_def function m_cprod
+
+let rec function m_expr (e:expr') : R.expr'
+  ensures { forall y z. pos_expr' e z -> R.interp' result (m_y y) z
+            = from_int (interp' e y z) }
+  ensures { valid_expr' e -> R.valid_expr' result}
+= match e with
+  | Var i -> R.Var i
+  | Coeff c -> R.Coeff (m c)
+  | Sum e1 e2 -> R.Sum (m_expr e1) (m_expr e2)
+  | Diff e1 e2 -> R.Diff (m_expr e1) (m_expr e2)
+  | ProdL e c -> R.ProdL (m_expr e) (m_cprod c)
+  | ProdR c e -> R.ProdR (m_cprod c) (m_expr e)
+  end
+
+meta rewrite_def function m_expr
+
+let function m_eq (eq:equality') : R.equality'
+  ensures { forall y z. pos_eq' eq z -> (R.interp_eq' result (m_y y) z
+                                      <-> interp_eq' eq y z) }
+  ensures { valid_eq' eq -> R.valid_eq' result }
+= match eq with (e1,e2) -> (m_expr e1, m_expr e2) end
+
+meta rewrite_def function m_eq
+
+use import list.Length
+
+let rec function m_ctx (ctx:context') : R.context'
+  ensures { forall y z g. pos_ctx' ctx z -> pos_eq' g z ->
+                   (R.interp_ctx' result (m_eq g) (m_y y) z
+                    <-> interp_ctx' ctx g y z) }
+  ensures { length result = length ctx }
+  ensures { valid_ctx' ctx -> R.valid_ctx' result }
+  variant { ctx }
+= match ctx with
+  | Nil -> Nil
+  | Cons h t ->
+    let r = Cons (m_eq h) (m_ctx t) in
+    r
+    end
+
+meta rewrite_def function m_ctx
+
+let mp_decision (l: context') (g: equality') : bool
+  requires { valid_ctx' l }
+  requires { valid_eq' g }
+  requires { length l < 100000 }
+  ensures  { forall y z. result -> pos_ctx' l z -> pos_eq' g z
+             -> interp_ctx' l g y z }
+  raises  { R.Failure -> true | MPError -> true | Q.QError -> true }
+=
+  R.decision (m_ctx l) (m_eq g)
+
+end
+
+module EqPropMP
+
+use import int.Int
+use import LinearDecisionIntMP
+use import array.Array
+use import int.MinMax
+use import option.Option
+use import list.List
+use import list.Append
+
+
+use MP64Coeffs as E
+
+let rec predicate expr_bound' (e:expr') (b:int)
+  variant { e }
+= match e with
+  | Sum e1 e2 | Diff e1 e2 -> expr_bound' e1 b && expr_bound' e2 b
+  | ProdL e _ | ProdR _ e -> expr_bound' e b
+  | Var n -> 0 <= n <= b
+  | Coeff _ -> true
+  end
+
+let predicate eq_bound' (eq:equality') (b:int)
+= match eq with (e1,e2) -> expr_bound' e1 b && expr_bound' e2 b end
+
+let rec predicate ctx_bound' (ctx:context') (b:int)
+= match ctx with Nil -> true | Cons eq t -> eq_bound' eq b && ctx_bound' t b end
+
+let rec lemma expr_bound_w' (e:expr') (b1 b2:int)
+  requires { b1 <= b2 }
+  requires { expr_bound' e b1 }
+  ensures  { expr_bound' e b2 }
+  variant  { e }
+= match e with
+  | Sum e1 e2 | Diff e1 e2 ->
+    expr_bound_w' e1 b1 b2; expr_bound_w' e2 b1 b2
+  | ProdL e _ | ProdR _ e -> expr_bound_w' e b1 b2
+  | _ -> ()
+  end
+
+lemma eq_bound_w': forall e:equality', b1 b2:int. eq_bound' e b1 -> b1 <= b2 -> eq_bound' e b2
+
+let rec lemma ctx_bound_w' (l:context') (b1 b2:int)
+  requires { ctx_bound' l b1 }
+  requires { b1 <= b2 }
+  ensures  { ctx_bound' l b2 }
+  variant  { l }
+= match l with Nil -> () | Cons _ t -> ctx_bound_w' t b1 b2 end
+
+let rec function max_var' (e:expr') : int
+  variant { e }
+  requires { valid_expr' e }
+  ensures { 0 <= result }
+  ensures { expr_bound' e result }
+= match e with
+  | Var i -> i
+  | Coeff _ -> 0
+  | Sum e1 e2 | Diff e1 e2 -> max (max_var' e1) (max_var' e2)
+  | ProdL e _ | ProdR _ e -> max_var' e
+  end
+
+let function max_var_e' (e:equality') : int
+  requires { valid_eq' e }
+  ensures { 0 <= result }
+  ensures { eq_bound' e result }
+= match e with (e1,e2) -> max (max_var' e1) (max_var' e2) end
+
+let rec function max_var_ctx' (l:context') : int
+  variant { l }
+  requires { valid_ctx' l }
+  ensures { 0 <= result }
+  ensures { ctx_bound' l result }
+= match l with
+  | Nil -> 0
+  | Cons e t -> max (max_var_e' e) (max_var_ctx' t)
+  end
+
+let rec lemma interp_ctx_valid' (ctx:context') (g:equality')
+  ensures { forall y z. interp_eq' g y z -> interp_ctx' ctx g y z }
+  variant  { ctx }
+= match ctx with Nil -> () | Cons _ t -> interp_ctx_valid' t g end
+
+let rec lemma interp_ctx_wr' (ctx l:context') (g:equality')
+  ensures { forall y z. interp_ctx' ctx g y z -> interp_ctx' (ctx ++ l) g y z }
+  variant { ctx }
+= match ctx with
+  | Nil -> ()
+  | Cons _ t -> interp_ctx_wr' t l g  end
+
+let rec lemma interp_ctx_wl' (ctx l: context') (g:equality')
+  ensures { forall y z. interp_ctx' ctx g y z -> interp_ctx' (l ++ ctx) g y z }
+  variant { l }
+= match l with Nil -> () | Cons _ t -> interp_ctx_wl' ctx t g  end
+
+
+let lemma interp_ctx_cons' (e:equality') (l:context') (g:equality')
+  requires { forall y z. (interp_eq' e y z -> interp_ctx' l g y z) }
+  ensures { forall y z. interp_ctx' (Cons e l) g y z }
+= ()
+
+predicate ctx_impl_ctx' (c1 c2: context')
+= match c2 with
+  | Nil -> true
+  | Cons eq t -> ctx_impl_ctx' c1 t /\ forall y z. y=z -> interp_ctx' c1 eq y z
+  end
+
+predicate ctx_holds' (c: context') (y z:vars)
+= match c with
+  | Nil -> true
+  | Cons h t -> interp_eq' h y z /\ ctx_holds' t y z
+  end
+
+let rec lemma holds_interp_ctx' (l:context') (g:equality') (y z:vars)
+  requires { ctx_holds' l y z -> interp_eq' g y z }
+  ensures { interp_ctx' l g y z }
+  variant { l }
+= match l with
+  | Nil -> ()
+  | Cons h t ->
+    if interp_eq' h y z then holds_interp_ctx' t g y z
+  end
+
+let rec lemma interp_holds' (l:context') (g:equality') (y z:vars)
+  requires { interp_ctx' l g y z }
+  requires { ctx_holds' l y z }
+  ensures  { interp_eq' g y z }
+  variant  { l }
+= match l with
+  | Nil -> ()
+  | Cons _ t -> interp_holds' t g y z
+  end
+
+let rec lemma impl_holds' (c1 c2: context') (y z: vars)
+  requires { ctx_impl_ctx' c1 c2 }
+  requires { y=z }
+  requires { ctx_holds' c1 y z }
+  ensures  { ctx_holds' c2 y z }
+  variant  { c2 }
+= match c2 with
+  | Nil -> ()
+  | Cons h t -> interp_holds' c1 h y z; impl_holds' c1 t y z
+  end
+
+let rec lemma ctx_impl' (c1 c2: context') (g:equality') (y z: vars)
+  requires { ctx_impl_ctx' c1 c2 }
+  requires { y=z }
+  requires { interp_ctx' c2 g y z }
+  ensures  { interp_ctx' c1 g y z }
+  variant  { c2 }
+= if ctx_holds' c1 y z
+  then begin
+       impl_holds' c1 c2 y z;
+       interp_holds' c2 g y z;
+       holds_interp_ctx' c1 g y z
+       end
+
+let rec lemma interp_ctx_impl' (ctx: context') (g1 g2:equality')
+  requires { forall y z. interp_eq' g1 y z -> interp_eq' g2 y z }
+  ensures  { forall y z. interp_ctx' ctx g1 y z -> interp_ctx' ctx g2 y z }
+  variant  { ctx }
+= match ctx with Nil -> () | Cons _ t -> interp_ctx_impl' t g1 g2 end
+
+let lemma impl_cons (c1 c2:context') (e:equality') (y z:vars)
+  requires { ctx_impl_ctx' c1 c2 }
+  requires { forall y z. interp_ctx' c1 e y z }
+  ensures  { ctx_impl_ctx' c1 (Cons e c2) }
+= ()
+
+let rec lemma impl_wl' (c1 c2:context') (e:equality')
+  requires { ctx_impl_ctx' c1 c2 }
+  ensures  { ctx_impl_ctx' (Cons e c1) c2 }
+  variant  { c2 }
+= match c2 with
+  | Nil -> ()
+  | Cons h t -> interp_ctx_wl' c1 (Cons e Nil) h; impl_wl' c1 t e
+  end
+
+let rec lemma impl_self (c:context')
+  ensures { ctx_impl_ctx' c c }
+  variant { c }
+= match c with
+  | Nil -> ()
+  | Cons h t -> (impl_self t; impl_wl' c t h)
+  end
+
+predicate is_eq_tbl (a:array (option E.exp)) (l:context')
+= forall i. 0 <= i < length a ->
+  match a[i] with
+  | None -> true
+  | Some e -> forall y z. y=z -> ctx_holds' l y z
+              -> E.interp_exp (E.Var i) z = E.interp_exp e z
+  end
+use import int.NumOf
+use import array.NumOfEq
+use import list.Length
+
+let prop_ctx (l:context') (g:equality') : (context', equality')
+  requires { valid_ctx' l }
+  requires { valid_eq' g }
+  returns  { rl, _ -> length rl = length l }
+  returns { rl, rg -> valid_ctx' rl /\ valid_eq' rg
+                   /\ forall y z. y=z -> interp_ctx' rl rg y z
+                   -> interp_ctx' l g y z }
+  returns { rl, rg -> forall y z. y=z -> ctx_holds' l y z
+                      -> pos_ctx' l z -> pos_eq' g z
+                      -> (pos_ctx' rl z /\ pos_eq' rg z) }
+  raises { OutOfBounds -> true }
+=
+  let m = max (max_var_ctx' l) (max_var_e' g) in
+  let a : array (option E.exp) = Array.make (m+1) None in
+  let rec exp_of_expr' (e:expr') : option E.exp
+    returns { | None -> true
+              | Some ex -> forall y z. y=z -> interp' e y z = E.interp_exp ex z }
+    variant { e }
+  = match e with
+    | Var i -> Some (E.Var i)
+    | Sum e1 e2 ->
+      let r1,r2 = (exp_of_expr' e1, exp_of_expr' e2) in
+      match r1,r2 with
+      | Some ex1, Some ex2 -> Some (E.Plus ex1 ex2)
+      | _ -> None
+      end
+    | Diff e1 e2 ->
+      let r1,r2 = (exp_of_expr' e1, exp_of_expr' e2) in
+      match r1,r2 with
+      | Some ex1, Some ex2 -> Some (E.Sub ex1 ex2)
+      | _ -> None
+      end
+    | Coeff (I n) -> Some (E.Lit n)
+    | _ -> None
+    end
+  in
+  let fill_tbl_eq (eq:equality') : unit
+    requires { eq_bound' eq m }
+    ensures { forall l. is_eq_tbl (old a) l ->
+              is_eq_tbl a (Cons eq l) }
+  = match eq with
+    | Var i, e | e, Var i ->
+      let r = exp_of_expr' e in
+      match r with
+        | None -> ()
+        | Some ex ->
+          assert { forall l y z. y=z -> ctx_holds' (Cons eq l) y z ->
+                   E.interp_exp ex z = interp' e y z
+                   = interp' (Var i) y z = y i };
+          a[i] <- Some ex
+      end
+    | _ -> ()
+    end
+  in
+  let rec fill_tbl_ctx (l:context') : unit
+    requires { is_eq_tbl a Nil }
+    ensures { is_eq_tbl a l }
+    requires { ctx_bound' l m }
+    variant { l }
+  = match l with
+    | Nil -> ()
+    | Cons eq l -> fill_tbl_ctx l; fill_tbl_eq eq
+    end
+  in
+  fill_tbl_ctx l;
+  (* a contains equalities, let us propagate them so that
+     only a single pass on the context is needed *)
+  let seen = Array.make (m+1) false in
+  let rec propagate_in_tbl (i:int) : unit
+    requires { is_eq_tbl a l }
+    ensures { is_eq_tbl a l }
+    raises { OutOfBounds -> true }
+    variant { numof seen false 0 (m+1) }
+    requires { seen[i] = false }
+    ensures { seen[i] = true }
+    ensures { forall j. old seen[j] -> seen[j] }
+  =
+    label Start in
+    let rec prop (e:E.exp) : E.exp
+      requires { is_eq_tbl a l }
+      ensures { is_eq_tbl a l }
+      ensures { forall y z. y=z -> ctx_holds' l y z ->
+                E.interp_exp e z = E.interp_exp result z }
+      ensures { forall j. old seen[j] -> seen[j] }
+      raises { OutOfBounds -> true }
+      requires { numof seen false 0 (m+1) < numof (seen at Start) false 0 (m+1) }
+      variant { e }
+      = match e with
+        | E.Lit _ -> e
+        | E.Var j ->
+          if (not (defensive_get seen j)) then propagate_in_tbl j;
+          match (defensive_get a j) with
+          | None -> e
+          | Some e' -> e'
+          end
+        | E.Plus e1 e2 -> E.Plus (prop e1) (prop e2)
+        | E.Sub e1 e2 -> E.Sub (prop e1) (prop e2)
+        | E.Minus e -> E.Minus (prop e)
+        end
+    in
+    defensive_set seen i true;
+    assert { numof seen false 0 (m+1) < numof (old seen) false 0 (m+1)
+             by forall j. 0 <= j < m+1 -> (old seen)[j] -> seen[j]
+             so not (old seen)[i] so seen[i] };
+    match a[i] with
+    | None -> ()
+    | Some e -> a[i] <- Some (prop e)
+    end;
+  in
+  for i = 0 to m do
+    invariant { is_eq_tbl a l }
+    if not seen[i] then propagate_in_tbl i;
+  done;
+  let rec propagate_exp (e:E.exp)
+    ensures { forall y z. y=z -> ctx_holds' l y z ->
+              E.interp_exp e z = E.interp_exp result z }
+    variant { e }
+    raises { OutOfBounds -> true }
+  = match e with
+    | E.Lit _ -> e
+    | E.Var i -> match (defensive_get a i) with Some e' -> e' | None -> e end
+    | E.Plus e1 e2 -> E.Plus (propagate_exp e1) (propagate_exp e2)
+    | E.Sub e1 e2 -> E.Sub (propagate_exp e1) (propagate_exp e2)
+    | E.Minus e -> E.Minus (propagate_exp e)
+    end
+  in
+  let propagate_coeff (c:t)
+    ensures { forall y z. y=z -> ctx_holds' l y z ->
+              interp_eq' (Coeff c, Coeff result) y z }
+    ensures { forall y z. y = z -> ctx_holds' l y z ->
+              pos_exp c z -> pos_exp result z }
+    raises { OutOfBounds -> true }
+  = match c with
+    | I _ -> c
+    | E e -> E (propagate_exp e)
+    | R -> R
+    end
+  in
+  let rec propagate_c (c:cprod)
+    ensures { forall y z. y=z -> ctx_holds' l y z ->
+              interp_c c y z = interp_c result y z }
+    variant { c }
+    raises { OutOfBounds -> true }
+    ensures { forall y z. y = z -> ctx_holds' l y z ->
+              pos_cprod c z -> pos_cprod result z }
+  = match c with
+    | C c -> C (propagate_coeff c)
+    | Times c1 c2 -> Times (propagate_c c1) (propagate_c c2)
+    end
+  in
+  let rec propagate_e (e:expr')
+    requires { expr_bound' e m }
+    ensures { expr_bound' result m }
+    ensures { forall y z. y=z -> ctx_holds' l y z -> interp_eq' (e,result) y z }
+    variant { e }
+    raises { OutOfBounds -> true }
+    requires { valid_expr' e }
+    ensures { valid_expr' result }
+    ensures { forall y z. y = z -> ctx_holds' l y z
+              -> pos_expr' e z -> pos_expr' result z }
+  = match e with
+    | Var _ -> e
+    | ProdL e c -> ProdL (propagate_e e) (propagate_c c)
+    | ProdR c e -> ProdR (propagate_c c) (propagate_e e)
+    | Sum e1 e2 -> Sum (propagate_e e1) (propagate_e e2)
+    | Diff e1 e2 -> Diff (propagate_e e1) (propagate_e e2)
+    | Coeff c -> Coeff (propagate_coeff c)
+    end
+  in
+  let rec propagate_eq (eq:equality')
+    requires { eq_bound' eq m }
+    ensures { eq_bound' result m }
+    ensures { forall y z. y=z -> interp_ctx' l eq y z <-> interp_ctx' l result y z }
+    raises { OutOfBounds -> true }
+    requires { valid_eq' eq }
+    ensures { valid_eq' result }
+    ensures { forall y z. y = z -> ctx_holds' l y z
+              -> pos_eq' eq z -> pos_eq' result z }
+  = match eq with (a,b) -> (propagate_e a, propagate_e b) end
+  in
+  let rec propagate (acc:context') : context'
+    requires { ctx_bound' acc m }
+    ensures { ctx_bound' result m }
+    requires { ctx_impl_ctx' l acc }
+    ensures { ctx_impl_ctx' l result }
+    ensures { length result = length acc }
+    variant { acc }
+    requires { valid_ctx' acc }
+    ensures  { valid_ctx' result }
+    ensures { forall y z. y = z -> ctx_holds' l y z
+              -> pos_ctx' acc z -> pos_ctx' result z }
+    raises { OutOfBounds -> true }
+  = match acc with
+     | Nil -> Nil
+     | Cons h t ->
+       let h' = propagate_eq h in
+       let t' = propagate t in
+       Cons h' t'
+    end
+  in
+  propagate l, propagate_eq g
+
+  use LinearDecisionRationalMP as R
+
+  let prop_mp_decision (l:context') (g:equality') : bool
+    requires { valid_ctx' l }
+    requires { valid_eq' g }
+    requires { length l < 100000 }
+    ensures { forall y z. result ->  pos_ctx' l z -> pos_eq' g z
+                          -> y = z -> interp_ctx' l g y z }
+    raises { | OutOfBounds -> true | E.MPError -> true
+             | E.Q.QError -> true | R.Failure -> true}
+  = let l', g' = prop_ctx l g in
+    mp_decision l' g'
+
+end
+
+module TestMP
+
+use import EqPropMP
+use import mach.int.UInt64
+use import int.Int
+use import int.Power
+
+meta "compute_max_steps" 0x10000
+
+goal g: forall i x c r: int.
+  0 <= i ->
+  x + (2 * (power radix i) * c) = r ->
+  radix * x + (2 * (power radix (i+1)) * c) = radix * r
+
+goal g': forall a b i j: int.
+  0 <= i -> 0 <= j ->
+  (power radix i) * a = b ->
+  i+1 = j ->
+  (power radix j) * a = radix*b
+
+goal g'': forall r r' i c x x' y l: int.
+  0 <= i ->
+  c = 0 ->
+  r + power radix i * c = x + y ->
+  r' = r + power radix i * l ->
+  x' = x + power radix i * l ->
+  r' + power radix (i+1) * c = x' + y
+
+(*tries to add power radix i and power radix (i+1), fails
+  -> cst propagation ? *)
+
+end
+
+module Test2
+
+use import int.Int
+use import LinearDecisionInt
+
+meta "compute_max_steps" 0x10000
+
+goal g: forall x y z: int.
+  x + y = 0 ->
+  y - z = 0 ->
+  x = 0
+
+end
+
+module Fmla
+
+use import map.Map
+use import int.Int
+
+type value
+constant dummy : value
+predicate foo value
+function add value value : value
+
+type term = Val int | Add term term
+type fmla = Forall fmla | Foo term
+
+function interp_term (t:term) (b:int->value) : value =
+  match t with
+  | Val n -> b n
+  | Add t1 t2 -> add (interp_term t1 b) (interp_term t2 b)
+  end
+
+meta rewrite_def function interp_term
+
+function interp_fmla (f:fmla) (l:int) (b:int->value) : bool =
+  match f with
+  | Foo t -> foo (interp_term t b)
+  | Forall f -> forall v. interp_fmla f (l-1) b[l <- v]
+  end
+
+meta rewrite_def function interp_fmla
+
+function interp (f:fmla) (b: int -> value) : bool =
+  interp_fmla f (-1) b
+
+meta rewrite_def function interp
+
+let f (f:fmla) : bool
+  ensures { result -> forall b. interp f b }
+= false
+end
+
+module TestFmla
+
+use import Fmla
+
+meta "compute_max_steps" 0x10000
+
+goal g:
+     forall a: value.
+     ((forall x. forall y. foo (add x (add (add a dummy) y))) = True)
+
+end
\ No newline at end of file
diff --git a/examples/multiprecision/lineardecision/why3session.xml b/examples/multiprecision/lineardecision/why3session.xml
new file mode 100644
index 0000000000..204df7ae52
--- /dev/null
+++ b/examples/multiprecision/lineardecision/why3session.xml
@@ -0,0 +1,4352 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE why3session PUBLIC "-//Why3//proof session v5//EN"
+"http://why3.lri.fr/why3session.dtd">
+<why3session shape_version="4">
+<prover id="0" name="Alt-Ergo" version="1.30" timelimit="1" steplimit="0" memlimit="1000"/>
+<prover id="1" name="CVC4" version="1.4" timelimit="1" steplimit="0" memlimit="1000"/>
+<prover id="2" name="Z3" version="4.5.0" timelimit="1" steplimit="0" memlimit="1000"/>
+<prover id="3" name="Eprover" version="1.9.1-001" timelimit="5" steplimit="0" memlimit="2000"/>
+<file name="../lineardecision.mlw">
+<theory name="LinearEquationsCoeffs" proved="true">
+ <goal name="VC czero" expl="VC for czero" proved="true">
+ <proof prover="2"><result status="valid" time="0.02"/></proof>
+ </goal>
+ <goal name="VC cone" expl="VC for cone" proved="true">
+ <transf name="split_goal_right" proved="true" >
+ </transf>
+ </goal>
+ <goal name="neg_mul" proved="true">
+ <proof prover="3"><result status="valid" time="0.06"/></proof>
+ </goal>
+</theory>
+<theory name="LinearEquationsDecision" proved="true">
+ <goal name="VC valid_expr" expl="VC for valid_expr" proved="true">
+ <proof prover="2"><result status="valid" time="0.01"/></proof>
+ </goal>
+ <goal name="VC expr_bound" expl="VC for expr_bound" proved="true">
+ <proof prover="2"><result status="valid" time="0.01"/></proof>
+ </goal>
+ <goal name="VC valid_eq" expl="VC for valid_eq" proved="true">
+ <proof prover="2"><result status="valid" time="0.01"/></proof>
+ </goal>
+ <goal name="VC eq_bound" expl="VC for eq_bound" proved="true">
+ <proof prover="2"><result status="valid" time="0.01"/></proof>
+ </goal>
+ <goal name="VC valid_ctx" expl="VC for valid_ctx" proved="true">
+ <proof prover="2"><result status="valid" time="0.01"/></proof>
+ </goal>
+ <goal name="VC ctx_bound" expl="VC for ctx_bound" proved="true">
+ <proof prover="2"><result status="valid" time="0.01"/></proof>
+ </goal>
+ <goal name="VC expr_bound_w" expl="VC for expr_bound_w" proved="true">
+ <transf name="split_goal_right" proved="true" >
+  <goal name="VC expr_bound_w.0" expl="variant decrease" proved="true">
+  <proof prover="2"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC expr_bound_w.1" expl="precondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.01"/></proof>
+  </goal>
+  <goal name="VC expr_bound_w.2" expl="precondition" proved="true">
+  <proof prover="0" timelimit="5" memlimit="2000"><result status="valid" time="0.01" steps="12"/></proof>
+  </goal>
+  <goal name="VC expr_bound_w.3" expl="variant decrease" proved="true">
+  <proof prover="2"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC expr_bound_w.4" expl="precondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.01"/></proof>
+  </goal>
+  <goal name="VC expr_bound_w.5" expl="precondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.01" steps="13"/></proof>
+  </goal>
+  <goal name="VC expr_bound_w.6" expl="postcondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.01" steps="34"/></proof>
+  </goal>
+ </transf>
+ </goal>
+ <goal name="eq_bound_w" proved="true">
+ <proof prover="0"><result status="valid" time="0.00" steps="18"/></proof>
+ </goal>
+ <goal name="VC ctx_bound_w" expl="VC for ctx_bound_w" proved="true">
+ <transf name="split_goal_right" proved="true" >
+  <goal name="VC ctx_bound_w.0" expl="variant decrease" proved="true">
+  <proof prover="2"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC ctx_bound_w.1" expl="precondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.01" steps="12"/></proof>
+  </goal>
+  <goal name="VC ctx_bound_w.2" expl="precondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.01"/></proof>
+  </goal>
+  <goal name="VC ctx_bound_w.3" expl="postcondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.01" steps="31"/></proof>
+  </goal>
+ </transf>
+ </goal>
+ <goal name="VC apply_r" expl="VC for apply_r" proved="true">
+ <transf name="split_goal_right" proved="true" >
+  <goal name="VC apply_r.0" expl="array creation size" proved="true">
+  <proof prover="0" timelimit="5" memlimit="2000"><result status="valid" time="0.00" steps="17"/></proof>
+  </goal>
+  <goal name="VC apply_r.1" expl="integer overflow" proved="true">
+  <proof prover="2"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC apply_r.2" expl="integer overflow" proved="true">
+  <proof prover="2"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC apply_r.3" expl="index in array bounds" proved="true">
+  <proof prover="0" timelimit="5" memlimit="2000"><result status="valid" time="0.00" steps="22"/></proof>
+  </goal>
+  <goal name="VC apply_r.4" expl="index in array bounds" proved="true">
+  <proof prover="0" timelimit="5" memlimit="2000"><result status="valid" time="0.01" steps="23"/></proof>
+  </goal>
+  <goal name="VC apply_r.5" expl="index in array bounds" proved="true">
+  <proof prover="0" timelimit="5" memlimit="2000"><result status="valid" time="0.01" steps="22"/></proof>
+  </goal>
+  <goal name="VC apply_r.6" expl="index in array bounds" proved="true">
+  <proof prover="0" timelimit="5" memlimit="2000"><result status="valid" time="0.01" steps="22"/></proof>
+  </goal>
+  <goal name="VC apply_r.7" expl="exceptional postcondition" proved="true">
+  <proof prover="0" timelimit="5" memlimit="2000"><result status="valid" time="0.00" steps="10"/></proof>
+  </goal>
+  <goal name="VC apply_r.8" expl="exceptional postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC apply_r.9" expl="postcondition" proved="true">
+  <proof prover="0" timelimit="5" memlimit="2000"><result status="valid" time="0.00" steps="15"/></proof>
+  </goal>
+  <goal name="VC apply_r.10" expl="postcondition" proved="true">
+  <proof prover="0" timelimit="5" memlimit="2000"><result status="valid" time="0.00" steps="14"/></proof>
+  </goal>
+ </transf>
+ </goal>
+ <goal name="VC apply_l" expl="VC for apply_l" proved="true">
+ <transf name="split_goal_right" proved="true" >
+  <goal name="VC apply_l.0" expl="array creation size" proved="true">
+  <proof prover="0" timelimit="5" memlimit="2000"><result status="valid" time="0.00" steps="10"/></proof>
+  </goal>
+  <goal name="VC apply_l.1" expl="integer overflow" proved="true">
+  <proof prover="2"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC apply_l.2" expl="integer overflow" proved="true">
+  <proof prover="2"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC apply_l.3" expl="index in array bounds" proved="true">
+  <proof prover="0" timelimit="5" memlimit="2000"><result status="valid" time="0.00" steps="22"/></proof>
+  </goal>
+  <goal name="VC apply_l.4" expl="index in array bounds" proved="true">
+  <proof prover="0" timelimit="5" memlimit="2000"><result status="valid" time="0.01" steps="23"/></proof>
+  </goal>
+  <goal name="VC apply_l.5" expl="index in array bounds" proved="true">
+  <proof prover="0" timelimit="5" memlimit="2000"><result status="valid" time="0.01" steps="22"/></proof>
+  </goal>
+  <goal name="VC apply_l.6" expl="index in array bounds" proved="true">
+  <proof prover="0" timelimit="5" memlimit="2000"><result status="valid" time="0.00" steps="22"/></proof>
+  </goal>
+  <goal name="VC apply_l.7" expl="exceptional postcondition" proved="true">
+  <proof prover="0" timelimit="5" memlimit="2000"><result status="valid" time="0.00" steps="10"/></proof>
+  </goal>
+  <goal name="VC apply_l.8" expl="exceptional postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC apply_l.9" expl="postcondition" proved="true">
+  <proof prover="0" timelimit="5" memlimit="2000"><result status="valid" time="0.00" steps="15"/></proof>
+  </goal>
+  <goal name="VC apply_l.10" expl="postcondition" proved="true">
+  <proof prover="0" timelimit="5" memlimit="2000"><result status="valid" time="0.00" steps="14"/></proof>
+  </goal>
+ </transf>
+ </goal>
+ <goal name="VC sprod" expl="VC for sprod" proved="true">
+ <transf name="split_goal_right" proved="true" >
+  <goal name="VC sprod.0" expl="integer overflow" proved="true">
+  <proof prover="2"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC sprod.1" expl="index in array bounds" proved="true">
+  <proof prover="0" timelimit="5" memlimit="2000"><result status="valid" time="0.00" steps="15"/></proof>
+  </goal>
+  <goal name="VC sprod.2" expl="index in array bounds" proved="true">
+  <proof prover="0" timelimit="5" memlimit="2000"><result status="valid" time="0.00" steps="15"/></proof>
+  </goal>
+  <goal name="VC sprod.3" expl="exceptional postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.01"/></proof>
+  </goal>
+  <goal name="VC sprod.4" expl="exceptional postcondition" proved="true">
+  <proof prover="0" timelimit="5" memlimit="2000"><result status="valid" time="0.00" steps="10"/></proof>
+  </goal>
+ </transf>
+ </goal>
+ <goal name="VC m_append" expl="VC for m_append" proved="true">
+ <transf name="split_goal_right" proved="true" >
+  <goal name="VC m_append.0" expl="integer overflow" proved="true">
+  <proof prover="2"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC m_append.1" expl="precondition" proved="true">
+  <proof prover="0" timelimit="5" memlimit="2000"><result status="valid" time="0.01" steps="59"/></proof>
+  </goal>
+  <goal name="VC m_append.2" expl="integer overflow" proved="true">
+  <proof prover="2"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC m_append.3" expl="loop invariant init" proved="true">
+  <proof prover="0" timelimit="5" memlimit="2000"><result status="valid" time="0.01" steps="17"/></proof>
+  </goal>
+  <goal name="VC m_append.4" expl="loop invariant init" proved="true">
+  <proof prover="0" timelimit="5" memlimit="2000"><result status="valid" time="0.00" steps="17"/></proof>
+  </goal>
+  <goal name="VC m_append.5" expl="integer overflow" proved="true">
+  <proof prover="2"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC m_append.6" expl="loop invariant init" proved="true">
+  <proof prover="0" timelimit="5" memlimit="2000"><result status="valid" time="0.01" steps="30"/></proof>
+  </goal>
+  <goal name="VC m_append.7" expl="loop invariant init" proved="true">
+  <proof prover="0" timelimit="5" memlimit="2000"><result status="valid" time="0.00" steps="27"/></proof>
+  </goal>
+  <goal name="VC m_append.8" expl="loop invariant init" proved="true">
+  <proof prover="0" timelimit="5" memlimit="2000"><result status="valid" time="0.00" steps="23"/></proof>
+  </goal>
+  <goal name="VC m_append.9" expl="index in array bounds" proved="true">
+  <proof prover="0" timelimit="5" memlimit="2000"><result status="valid" time="0.01" steps="28"/></proof>
+  </goal>
+  <goal name="VC m_append.10" expl="index in array bounds" proved="true">
+  <proof prover="0" timelimit="5" memlimit="2000"><result status="valid" time="0.00" steps="28"/></proof>
+  </goal>
+  <goal name="VC m_append.11" expl="loop invariant preservation" proved="true">
+  <proof prover="0" timelimit="5" memlimit="2000"><result status="valid" time="0.01" steps="39"/></proof>
+  </goal>
+  <goal name="VC m_append.12" expl="loop invariant preservation" proved="true">
+  <proof prover="0" timelimit="5" memlimit="2000"><result status="valid" time="0.01" steps="36"/></proof>
+  </goal>
+  <goal name="VC m_append.13" expl="loop invariant preservation" proved="true">
+  <proof prover="0" timelimit="5" memlimit="2000"><result status="valid" time="0.01" steps="36"/></proof>
+  </goal>
+  <goal name="VC m_append.14" expl="index in array bounds" proved="true">
+  <proof prover="0" timelimit="5" memlimit="2000"><result status="valid" time="0.01" steps="25"/></proof>
+  </goal>
+  <goal name="VC m_append.15" expl="index in array bounds" proved="true">
+  <proof prover="0" timelimit="5" memlimit="2000"><result status="valid" time="0.01" steps="26"/></proof>
+  </goal>
+  <goal name="VC m_append.16" expl="loop invariant preservation" proved="true">
+  <proof prover="0" timelimit="5" memlimit="2000"><result status="valid" time="0.01" steps="95"/></proof>
+  </goal>
+  <goal name="VC m_append.17" expl="loop invariant preservation" proved="true">
+  <proof prover="0" timelimit="5" memlimit="2000"><result status="valid" time="0.01" steps="33"/></proof>
+  </goal>
+  <goal name="VC m_append.18" expl="out of loop bounds" proved="true">
+  <proof prover="0" timelimit="5" memlimit="2000"><result status="valid" time="0.00" steps="39"/></proof>
+  </goal>
+  <goal name="VC m_append.19" expl="postcondition" proved="true">
+  <proof prover="0" timelimit="5" memlimit="2000"><result status="valid" time="0.01" steps="19"/></proof>
+  </goal>
+  <goal name="VC m_append.20" expl="postcondition" proved="true">
+  <proof prover="0" timelimit="5" memlimit="2000"><result status="valid" time="0.01" steps="20"/></proof>
+  </goal>
+  <goal name="VC m_append.21" expl="postcondition" proved="true">
+  <proof prover="0" timelimit="5" memlimit="2000"><result status="valid" time="0.01" steps="28"/></proof>
+  </goal>
+  <goal name="VC m_append.22" expl="postcondition" proved="true">
+  <proof prover="0" timelimit="5" memlimit="2000"><result status="valid" time="0.00" steps="25"/></proof>
+  </goal>
+  <goal name="VC m_append.23" expl="out of loop bounds" proved="true">
+  <proof prover="0" timelimit="5" memlimit="2000"><result status="valid" time="0.00" steps="20"/></proof>
+  </goal>
+ </transf>
+ </goal>
+ <goal name="VC v_append" expl="VC for v_append" proved="true">
+ <transf name="split_goal_right" proved="true" >
+  <goal name="VC v_append.0" expl="integer overflow" proved="true">
+  <proof prover="2"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC v_append.1" expl="array creation size" proved="true">
+  <proof prover="0" timelimit="5" memlimit="2000"><result status="valid" time="0.00" steps="12"/></proof>
+  </goal>
+  <goal name="VC v_append.2" expl="integer overflow" proved="true">
+  <proof prover="2"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC v_append.3" expl="loop invariant init" proved="true">
+  <proof prover="0" timelimit="5" memlimit="2000"><result status="valid" time="0.00" steps="15"/></proof>
+  </goal>
+  <goal name="VC v_append.4" expl="loop invariant init" proved="true">
+  <proof prover="0" timelimit="5" memlimit="2000"><result status="valid" time="0.01" steps="17"/></proof>
+  </goal>
+  <goal name="VC v_append.5" expl="index in array bounds" proved="true">
+  <proof prover="0" timelimit="5" memlimit="2000"><result status="valid" time="0.01" steps="19"/></proof>
+  </goal>
+  <goal name="VC v_append.6" expl="index in array bounds" proved="true">
+  <proof prover="0" timelimit="5" memlimit="2000"><result status="valid" time="0.00" steps="19"/></proof>
+  </goal>
+  <goal name="VC v_append.7" expl="loop invariant preservation" proved="true">
+  <proof prover="0" timelimit="5" memlimit="2000"><result status="valid" time="0.01" steps="193"/></proof>
+  </goal>
+  <goal name="VC v_append.8" expl="loop invariant preservation" proved="true">
+  <proof prover="0" timelimit="5" memlimit="2000"><result status="valid" time="0.01" steps="101"/></proof>
+  </goal>
+  <goal name="VC v_append.9" expl="postcondition" proved="true">
+  <proof prover="0" timelimit="5" memlimit="2000"><result status="valid" time="0.01" steps="17"/></proof>
+  </goal>
+  <goal name="VC v_append.10" expl="postcondition" proved="true">
+  <proof prover="0" timelimit="5" memlimit="2000"><result status="valid" time="0.00" steps="21"/></proof>
+  </goal>
+  <goal name="VC v_append.11" expl="postcondition" proved="true">
+  <proof prover="0" timelimit="5" memlimit="2000"><result status="valid" time="0.00" steps="18"/></proof>
+  </goal>
+  <goal name="VC v_append.12" expl="out of loop bounds" proved="true">
+  <proof prover="0" timelimit="5" memlimit="2000"><result status="valid" time="0.00" steps="24"/></proof>
+  </goal>
+ </transf>
+ </goal>
+ <goal name="VC infix ==" expl="VC for infix ==" proved="true">
+ <transf name="split_goal_right" proved="true" >
+  <goal name="VC infix ==.0" expl="postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.01"/></proof>
+  </goal>
+  <goal name="VC infix ==.1" expl="integer overflow" proved="true">
+  <proof prover="2"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC infix ==.2" expl="loop invariant init" proved="true">
+  <proof prover="2"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC infix ==.3" expl="index in array bounds" proved="true">
+  <proof prover="2"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC infix ==.4" expl="index in array bounds" proved="true">
+  <proof prover="2"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC infix ==.5" expl="loop invariant preservation" proved="true">
+  <proof prover="0"><result status="valid" time="0.01" steps="18"/></proof>
+  </goal>
+  <goal name="VC infix ==.6" expl="loop invariant preservation" proved="true">
+  <proof prover="0"><result status="valid" time="0.02" steps="21"/></proof>
+  </goal>
+  <goal name="VC infix ==.7" expl="postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC infix ==.8" expl="postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.02"/></proof>
+  </goal>
+ </transf>
+ </goal>
+ <goal name="VC max_var" expl="VC for max_var" proved="true">
+ <proof prover="0"><result status="valid" time="0.04" steps="393"/></proof>
+ </goal>
+ <goal name="VC max_var_e" expl="VC for max_var_e" proved="true">
+ <proof prover="2"><result status="valid" time="0.01"/></proof>
+ </goal>
+ <goal name="VC max_var_ctx" expl="VC for max_var_ctx" proved="true">
+ <proof prover="0"><result status="valid" time="0.04" steps="258"/></proof>
+ </goal>
+ <goal name="VC opp_expr" expl="VC for opp_expr" proved="true">
+ <transf name="split_goal_right" proved="true" >
+  <goal name="VC opp_expr.0" expl="assertion" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC opp_expr.0.0" expl="assertion" proved="true">
+   <proof prover="0"><result status="valid" time="0.01" steps="11"/></proof>
+   </goal>
+   <goal name="VC opp_expr.0.1" expl="assertion" proved="true">
+   <proof prover="0"><result status="valid" time="0.01" steps="11"/></proof>
+   </goal>
+   <goal name="VC opp_expr.0.2" expl="assertion" proved="true">
+   <transf name="introduce_premises" proved="true" >
+    <goal name="VC opp_expr.0.2.0" expl="assertion" proved="true">
+    <transf name="apply" proved="true" arg1="neg_mul">
+    </transf>
+    </goal>
+   </transf>
+   </goal>
+   <goal name="VC opp_expr.0.3" expl="assertion" proved="true">
+   <proof prover="0"><result status="valid" time="0.02" steps="11"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC opp_expr.1" expl="variant decrease" proved="true">
+  <proof prover="2"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC opp_expr.2" expl="variant decrease" proved="true">
+  <proof prover="2"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC opp_expr.3" expl="assertion" proved="true">
+  <proof prover="3" memlimit="1000"><result status="valid" time="0.04"/></proof>
+  </goal>
+  <goal name="VC opp_expr.4" expl="assertion" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC opp_expr.4.0" expl="assertion" proved="true">
+   <proof prover="0"><result status="valid" time="0.01" steps="11"/></proof>
+   </goal>
+   <goal name="VC opp_expr.4.1" expl="assertion" proved="true">
+   <proof prover="2"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC opp_expr.4.2" expl="assertion" proved="true">
+   <proof prover="2"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC opp_expr.4.3" expl="assertion" proved="true">
+   <proof prover="0"><result status="valid" time="0.02" steps="11"/></proof>
+   </goal>
+   <goal name="VC opp_expr.4.4" expl="VC for opp_expr" proved="true">
+   <proof prover="2"><result status="valid" time="0.02"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC opp_expr.5" expl="postcondition" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC opp_expr.5.0" expl="postcondition" proved="true">
+   <proof prover="0"><result status="valid" time="0.01" steps="16"/></proof>
+   </goal>
+   <goal name="VC opp_expr.5.1" expl="postcondition" proved="true">
+   <transf name="compute_in_goal" proved="true" >
+    <goal name="VC opp_expr.5.1.0" expl="postcondition" proved="true">
+    <proof prover="0"><result status="valid" time="0.04" steps="27"/></proof>
+    </goal>
+   </transf>
+   </goal>
+   <goal name="VC opp_expr.5.2" expl="postcondition" proved="true">
+   <proof prover="0"><result status="valid" time="0.02" steps="12"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC opp_expr.6" expl="postcondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.02" steps="213"/></proof>
+  </goal>
+  <goal name="VC opp_expr.7" expl="postcondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.02" steps="147"/></proof>
+  </goal>
+ </transf>
+ </goal>
+ <goal name="VC norm_eq_aux" expl="VC for norm_eq_aux" proved="true">
+ <transf name="split_goal_right" proved="true" >
+  <goal name="VC norm_eq_aux.0" expl="postcondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.01" steps="26"/></proof>
+  </goal>
+  <goal name="VC norm_eq_aux.1" expl="postcondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.01" steps="12"/></proof>
+  </goal>
+  <goal name="VC norm_eq_aux.2" expl="exceptional postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.01"/></proof>
+  </goal>
+  <goal name="VC norm_eq_aux.3" expl="postcondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.02" steps="11"/></proof>
+  </goal>
+  <goal name="VC norm_eq_aux.4" expl="postcondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.02" steps="16"/></proof>
+  </goal>
+  <goal name="VC norm_eq_aux.5" expl="variant decrease" proved="true">
+  <proof prover="2"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC norm_eq_aux.6" expl="variant decrease" proved="true">
+  <proof prover="2"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC norm_eq_aux.7" expl="postcondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.02" steps="27"/></proof>
+  </goal>
+  <goal name="VC norm_eq_aux.8" expl="postcondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.02" steps="73"/></proof>
+  </goal>
+  <goal name="VC norm_eq_aux.9" expl="exceptional postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.01"/></proof>
+  </goal>
+  <goal name="VC norm_eq_aux.10" expl="exceptional postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.02"/></proof>
+  </goal>
+ </transf>
+ </goal>
+ <goal name="VC norm_eq" expl="VC for norm_eq" proved="true">
+ <transf name="split_goal_right" proved="true" >
+  <goal name="VC norm_eq.0" expl="assertion" proved="true">
+  <proof prover="0"><result status="valid" time="0.02" steps="55"/></proof>
+  </goal>
+  <goal name="VC norm_eq.1" expl="assertion" proved="true">
+  <proof prover="3"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC norm_eq.2" expl="assertion" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC norm_eq.2.0" expl="assertion" proved="true">
+   <proof prover="0"><result status="valid" time="0.02" steps="64"/></proof>
+   </goal>
+   <goal name="VC norm_eq.2.1" expl="VC for norm_eq" proved="true">
+   <proof prover="0"><result status="valid" time="0.03" steps="40"/></proof>
+   </goal>
+   <goal name="VC norm_eq.2.2" expl="VC for norm_eq" proved="true">
+   <proof prover="1"><result status="valid" time="0.05"/></proof>
+   </goal>
+   <goal name="VC norm_eq.2.3" expl="VC for norm_eq" proved="true">
+   <proof prover="0"><result status="valid" time="0.02" steps="46"/></proof>
+   </goal>
+   <goal name="VC norm_eq.2.4" expl="VC for norm_eq" proved="true">
+   <proof prover="0"><result status="valid" time="0.02" steps="21"/></proof>
+   </goal>
+   <goal name="VC norm_eq.2.5" expl="VC for norm_eq" proved="true">
+   <proof prover="0"><result status="valid" time="0.02" steps="16"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC norm_eq.3" expl="postcondition" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC norm_eq.3.0" expl="postcondition" proved="true">
+   <proof prover="0"><result status="valid" time="0.02" steps="34"/></proof>
+   </goal>
+   <goal name="VC norm_eq.3.1" expl="postcondition" proved="true">
+   <proof prover="1"><result status="valid" time="0.60"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC norm_eq.4" expl="postcondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.02" steps="41"/></proof>
+  </goal>
+  <goal name="VC norm_eq.5" expl="exceptional postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.02"/></proof>
+  </goal>
+ </transf>
+ </goal>
+ <goal name="VC interp_ctx_impl" expl="VC for interp_ctx_impl" proved="true">
+ <transf name="split_goal_right" proved="true" >
+  <goal name="VC interp_ctx_impl.0" expl="variant decrease" proved="true">
+  <proof prover="2"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC interp_ctx_impl.1" expl="precondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC interp_ctx_impl.2" expl="postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.02"/></proof>
+  </goal>
+ </transf>
+ </goal>
+ <goal name="VC interp_ctx_valid" expl="VC for interp_ctx_valid" proved="true">
+ <transf name="split_goal_right" proved="true" >
+  <goal name="VC interp_ctx_valid.0" expl="variant decrease" proved="true">
+  <proof prover="2"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC interp_ctx_valid.1" expl="postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.02"/></proof>
+  </goal>
+ </transf>
+ </goal>
+ <goal name="VC interp_ctx_wr" expl="VC for interp_ctx_wr" proved="true">
+ <proof prover="0"><result status="valid" time="0.02" steps="172"/></proof>
+ </goal>
+ <goal name="VC interp_ctx_wl" expl="VC for interp_ctx_wl" proved="true">
+ <proof prover="0"><result status="valid" time="0.02" steps="139"/></proof>
+ </goal>
+ <goal name="VC mul_expr" expl="VC for mul_expr" proved="true">
+ <transf name="split_goal_right" proved="true" >
+  <goal name="VC mul_expr.0" expl="postcondition" proved="true">
+  <proof prover="3"><result status="valid" time="0.12"/></proof>
+  </goal>
+  <goal name="VC mul_expr.1" expl="postcondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.02" steps="12"/></proof>
+  </goal>
+  <goal name="VC mul_expr.2" expl="postcondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.01" steps="18"/></proof>
+  </goal>
+  <goal name="VC mul_expr.3" expl="postcondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.02" steps="13"/></proof>
+  </goal>
+  <goal name="VC mul_expr.4" expl="exceptional postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC mul_expr.5" expl="postcondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.02" steps="20"/></proof>
+  </goal>
+  <goal name="VC mul_expr.6" expl="postcondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.01" steps="34"/></proof>
+  </goal>
+  <goal name="VC mul_expr.7" expl="exceptional postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.01"/></proof>
+  </goal>
+  <goal name="VC mul_expr.8" expl="variant decrease" proved="true">
+  <proof prover="0"><result status="valid" time="0.02" steps="60"/></proof>
+  </goal>
+  <goal name="VC mul_expr.9" expl="variant decrease" proved="true">
+  <proof prover="0"><result status="valid" time="0.01" steps="63"/></proof>
+  </goal>
+  <goal name="VC mul_expr.10" expl="postcondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.03" steps="22"/></proof>
+  </goal>
+  <goal name="VC mul_expr.11" expl="postcondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.02" steps="100"/></proof>
+  </goal>
+  <goal name="VC mul_expr.12" expl="exceptional postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC mul_expr.13" expl="exceptional postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.01"/></proof>
+  </goal>
+ </transf>
+ </goal>
+ <goal name="VC add_expr" expl="VC for add_expr" proved="true">
+ <transf name="split_goal_right" proved="true" >
+  <goal name="VC add_expr.0" expl="postcondition" proved="true">
+  <proof prover="3"><result status="valid" time="0.29"/></proof>
+  </goal>
+  <goal name="VC add_expr.1" expl="postcondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.03" steps="19"/></proof>
+  </goal>
+  <goal name="VC add_expr.2" expl="exceptional postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.01"/></proof>
+  </goal>
+  <goal name="VC add_expr.3" expl="postcondition" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC add_expr.3.0" expl="postcondition" proved="true">
+   <transf name="introduce_premises" proved="true" >
+    <goal name="VC add_expr.3.0.0" expl="postcondition" proved="true">
+    <proof prover="3"><result status="valid" time="0.73"/></proof>
+    </goal>
+   </transf>
+   </goal>
+   <goal name="VC add_expr.3.1" expl="postcondition" proved="true">
+   <proof prover="3"><result status="valid" time="0.05"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC add_expr.4" expl="postcondition" proved="true">
+  <transf name="split_vc" proved="true" >
+   <goal name="VC add_expr.4.0" expl="postcondition" proved="true">
+   <proof prover="3" memlimit="1000"><result status="valid" time="0.67"/></proof>
+   </goal>
+   <goal name="VC add_expr.4.1" expl="postcondition" proved="true">
+   <proof prover="3"><result status="valid" time="0.39"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC add_expr.5" expl="variant decrease" proved="true">
+  <proof prover="2"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC add_expr.6" expl="precondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC add_expr.7" expl="assertion" proved="true">
+  <proof prover="0"><result status="valid" time="0.01" steps="69"/></proof>
+  </goal>
+  <goal name="VC add_expr.8" expl="postcondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.38" steps="273"/></proof>
+  </goal>
+  <goal name="VC add_expr.9" expl="variant decrease" proved="true">
+  <proof prover="2"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC add_expr.10" expl="precondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.01"/></proof>
+  </goal>
+  <goal name="VC add_expr.11" expl="assertion" proved="true">
+  <proof prover="0"><result status="valid" time="0.01" steps="69"/></proof>
+  </goal>
+  <goal name="VC add_expr.12" expl="postcondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.50" steps="502"/></proof>
+  </goal>
+  <goal name="VC add_expr.13" expl="exceptional postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.01"/></proof>
+  </goal>
+  <goal name="VC add_expr.14" expl="exceptional postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.01"/></proof>
+  </goal>
+  <goal name="VC add_expr.15" expl="postcondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.02" steps="21"/></proof>
+  </goal>
+  <goal name="VC add_expr.16" expl="exceptional postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.01"/></proof>
+  </goal>
+  <goal name="VC add_expr.17" expl="postcondition" proved="true">
+  <transf name="introduce_premises" proved="true" >
+   <goal name="VC add_expr.17.0" expl="postcondition" proved="true">
+   <transf name="revert" proved="true" arg1="H">
+    <goal name="VC add_expr.17.0.0" expl="postcondition" proved="true">
+    <transf name="split_vc" proved="true" >
+     <goal name="VC add_expr.17.0.0.0" expl="postcondition" proved="true">
+     <proof prover="3"><result status="valid" time="0.44"/></proof>
+     </goal>
+     <goal name="VC add_expr.17.0.0.1" expl="postcondition" proved="true">
+     <proof prover="3"><result status="valid" time="0.38"/></proof>
+     </goal>
+    </transf>
+    </goal>
+   </transf>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC add_expr.18" expl="variant decrease" proved="true">
+  <proof prover="2"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC add_expr.19" expl="precondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC add_expr.20" expl="assertion" proved="true">
+  <proof prover="0"><result status="valid" time="0.02" steps="66"/></proof>
+  </goal>
+  <goal name="VC add_expr.21" expl="postcondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.34" steps="261"/></proof>
+  </goal>
+  <goal name="VC add_expr.22" expl="variant decrease" proved="true">
+  <proof prover="2"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC add_expr.23" expl="precondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.01"/></proof>
+  </goal>
+  <goal name="VC add_expr.24" expl="assertion" proved="true">
+  <proof prover="0"><result status="valid" time="0.02" steps="66"/></proof>
+  </goal>
+  <goal name="VC add_expr.25" expl="postcondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.35" steps="479"/></proof>
+  </goal>
+  <goal name="VC add_expr.26" expl="exceptional postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.01"/></proof>
+  </goal>
+  <goal name="VC add_expr.27" expl="exceptional postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.01"/></proof>
+  </goal>
+  <goal name="VC add_expr.28" expl="variant decrease" proved="true">
+  <proof prover="2"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC add_expr.29" expl="precondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC add_expr.30" expl="assertion" proved="true">
+  <proof prover="0"><result status="valid" time="0.02" steps="20"/></proof>
+  </goal>
+  <goal name="VC add_expr.31" expl="postcondition" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC add_expr.31.0" expl="postcondition" proved="true">
+   <transf name="split_goal_right" proved="true" >
+    <goal name="VC add_expr.31.0.0" expl="postcondition" proved="true">
+    <proof prover="0"><result status="valid" time="0.02" steps="22"/></proof>
+    </goal>
+    <goal name="VC add_expr.31.0.1" expl="postcondition" proved="true">
+    <proof prover="0"><result status="valid" time="0.01" steps="23"/></proof>
+    </goal>
+   </transf>
+   </goal>
+   <goal name="VC add_expr.31.1" expl="postcondition" proved="true">
+   <proof prover="0"><result status="valid" time="0.03" steps="22"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC add_expr.32" expl="variant decrease" proved="true">
+  <proof prover="2"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC add_expr.33" expl="precondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.01"/></proof>
+  </goal>
+  <goal name="VC add_expr.34" expl="assertion" proved="true">
+  <proof prover="0"><result status="valid" time="0.02" steps="20"/></proof>
+  </goal>
+  <goal name="VC add_expr.35" expl="postcondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.02" steps="22"/></proof>
+  </goal>
+  <goal name="VC add_expr.36" expl="exceptional postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.01"/></proof>
+  </goal>
+  <goal name="VC add_expr.37" expl="exceptional postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.01"/></proof>
+  </goal>
+  <goal name="VC add_expr.38" expl="unreachable point" proved="true">
+  <proof prover="2"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC add_expr.39" expl="variant decrease" proved="true">
+  <proof prover="2"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC add_expr.40" expl="variant decrease" proved="true">
+  <proof prover="2"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC add_expr.41" expl="postcondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.02" steps="15"/></proof>
+  </goal>
+  <goal name="VC add_expr.42" expl="exceptional postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.01"/></proof>
+  </goal>
+  <goal name="VC add_expr.43" expl="exceptional postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.01"/></proof>
+  </goal>
+  <goal name="VC add_expr.44" expl="precondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC add_expr.45" expl="postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC add_expr.46" expl="exceptional postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.01"/></proof>
+  </goal>
+ </transf>
+ </goal>
+ <goal name="VC mul_eq" expl="VC for mul_eq" proved="true">
+ <proof prover="0"><result status="valid" time="0.01" steps="33"/></proof>
+ </goal>
+ <goal name="VC add_eq" expl="VC for add_eq" proved="true">
+ <transf name="split_goal_right" proved="true" >
+  <goal name="VC add_eq.0" expl="variant decrease" proved="true">
+  <proof prover="2"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC add_eq.1" expl="postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.16"/></proof>
+  </goal>
+  <goal name="VC add_eq.2" expl="postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC add_eq.3" expl="postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC add_eq.4" expl="exceptional postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC add_eq.5" expl="exceptional postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.01"/></proof>
+  </goal>
+ </transf>
+ </goal>
+ <goal name="VC zero_expr" expl="VC for zero_expr" proved="true">
+ <transf name="split_goal_right" proved="true" >
+  <goal name="VC zero_expr.0" expl="variant decrease" proved="true">
+  <proof prover="2"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC zero_expr.1" expl="variant decrease" proved="true">
+  <proof prover="2"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC zero_expr.2" expl="postcondition" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC zero_expr.2.0" expl="postcondition" proved="true">
+   <proof prover="0"><result status="valid" time="0.02" steps="34"/></proof>
+   </goal>
+   <goal name="VC zero_expr.2.1" expl="postcondition" proved="true">
+   <proof prover="3"><result status="valid" time="0.40"/></proof>
+   </goal>
+   <goal name="VC zero_expr.2.2" expl="postcondition" proved="true">
+   <proof prover="0"><result status="valid" time="0.03" steps="39"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC zero_expr.3" expl="postcondition" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC zero_expr.3.0" expl="postcondition" proved="true">
+   <proof prover="1"><result status="valid" time="0.06"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC zero_expr.4" expl="exceptional postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.01"/></proof>
+  </goal>
+ </transf>
+ </goal>
+ <goal name="VC sub_expr" expl="VC for sub_expr" proved="true">
+ <transf name="split_goal_right" proved="true" >
+  <goal name="VC sub_expr.0" expl="assertion" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC sub_expr.0.0" expl="assertion" proved="true">
+   <proof prover="3"><result status="valid" time="0.04"/></proof>
+   </goal>
+   <goal name="VC sub_expr.0.1" expl="VC for sub_expr" proved="true">
+   <proof prover="1"><result status="valid" time="0.05"/></proof>
+   </goal>
+   <goal name="VC sub_expr.0.2" expl="VC for sub_expr" proved="true">
+   <proof prover="0"><result status="valid" time="0.01" steps="10"/></proof>
+   </goal>
+   <goal name="VC sub_expr.0.3" expl="VC for sub_expr" proved="true">
+   <proof prover="0"><result status="valid" time="0.01" steps="42"/></proof>
+   </goal>
+   <goal name="VC sub_expr.0.4" expl="VC for sub_expr" proved="true">
+   <proof prover="0"><result status="valid" time="0.02" steps="13"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC sub_expr.1" expl="postcondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.01" steps="10"/></proof>
+  </goal>
+  <goal name="VC sub_expr.2" expl="exceptional postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.01"/></proof>
+  </goal>
+  <goal name="VC sub_expr.3" expl="exceptional postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.02"/></proof>
+  </goal>
+ </transf>
+ </goal>
+ <goal name="VC same_eq" expl="VC for same_eq" proved="true">
+ <transf name="split_goal_right" proved="true" >
+  <goal name="VC same_eq.0" expl="postcondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.02" steps="63"/></proof>
+  </goal>
+  <goal name="VC same_eq.1" expl="postcondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.01" steps="9"/></proof>
+  </goal>
+  <goal name="VC same_eq.2" expl="exceptional postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.01"/></proof>
+  </goal>
+  <goal name="VC same_eq.3" expl="exceptional postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.01"/></proof>
+  </goal>
+  <goal name="VC same_eq.4" expl="exceptional postcondition" proved="true">
+  <transf name="split_goal_right" proved="true" >
+  </transf>
+  </goal>
+  <goal name="VC same_eq.5" expl="exceptional postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.01"/></proof>
+  </goal>
+  <goal name="VC same_eq.6" expl="exceptional postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.01"/></proof>
+  </goal>
+ </transf>
+ </goal>
+ <goal name="VC norm_context" expl="VC for norm_context" proved="true">
+ <transf name="split_goal_right" proved="true" >
+  <goal name="VC norm_context.0" expl="postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.04"/></proof>
+  </goal>
+  <goal name="VC norm_context.1" expl="variant decrease" proved="true">
+  <proof prover="2"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC norm_context.2" expl="postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC norm_context.3" expl="exceptional postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.01"/></proof>
+  </goal>
+  <goal name="VC norm_context.4" expl="exceptional postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.02"/></proof>
+  </goal>
+ </transf>
+ </goal>
+ <goal name="VC print_lc" expl="VC for print_lc" proved="true">
+ <proof prover="0"><result status="valid" time="0.01" steps="46"/></proof>
+ </goal>
+ <goal name="VC check_combination" expl="VC for check_combination" proved="true">
+ <transf name="split_goal_right" proved="true" >
+  <goal name="VC check_combination.0" expl="postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.04"/></proof>
+  </goal>
+  <goal name="VC check_combination.1" expl="postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.01"/></proof>
+  </goal>
+  <goal name="VC check_combination.2" expl="variant decrease" proved="true">
+  <proof prover="0"><result status="valid" time="0.02" steps="43"/></proof>
+  </goal>
+  <goal name="VC check_combination.3" expl="precondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.02" steps="25"/></proof>
+  </goal>
+  <goal name="VC check_combination.4" expl="precondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.02" steps="68"/></proof>
+  </goal>
+  <goal name="VC check_combination.5" expl="postcondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.02" steps="87"/></proof>
+  </goal>
+  <goal name="VC check_combination.6" expl="exceptional postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.01"/></proof>
+  </goal>
+  <goal name="VC check_combination.7" expl="assertion" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC check_combination.7.0" expl="assertion" proved="true">
+   <proof prover="0"><result status="valid" time="0.03" steps="25"/></proof>
+   </goal>
+   <goal name="VC check_combination.7.1" expl="assertion" proved="true">
+   <proof prover="0"><result status="valid" time="0.02" steps="64"/></proof>
+   </goal>
+   <goal name="VC check_combination.7.2" expl="VC for check_combination" proved="true">
+   <proof prover="0"><result status="valid" time="0.03" steps="78"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC check_combination.8" expl="variant decrease" proved="true">
+  <proof prover="0"><result status="valid" time="0.02" steps="43"/></proof>
+  </goal>
+  <goal name="VC check_combination.9" expl="precondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.02" steps="14"/></proof>
+  </goal>
+  <goal name="VC check_combination.10" expl="precondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.02" steps="68"/></proof>
+  </goal>
+  <goal name="VC check_combination.11" expl="postcondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.02" steps="87"/></proof>
+  </goal>
+  <goal name="VC check_combination.12" expl="exceptional postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC check_combination.13" expl="exceptional postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.01"/></proof>
+  </goal>
+  <goal name="VC check_combination.14" expl="exceptional postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.00"/></proof>
+  </goal>
+  <goal name="VC check_combination.15" expl="postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.01"/></proof>
+  </goal>
+  <goal name="VC check_combination.16" expl="precondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.04"/></proof>
+  </goal>
+  <goal name="VC check_combination.17" expl="precondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.02" steps="10"/></proof>
+  </goal>
+  <goal name="VC check_combination.18" expl="postcondition" proved="true">
+  <proof prover="1"><result status="valid" time="1.88"/></proof>
+  </goal>
+  <goal name="VC check_combination.19" expl="postcondition" proved="true">
+  <proof prover="1"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC check_combination.20" expl="exceptional postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.00"/></proof>
+  </goal>
+  <goal name="VC check_combination.21" expl="postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.00"/></proof>
+  </goal>
+  <goal name="VC check_combination.22" expl="exceptional postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.01"/></proof>
+  </goal>
+ </transf>
+ </goal>
+ <goal name="VC transpose" expl="VC for transpose" proved="true">
+ <proof prover="2"><result status="valid" time="0.18"/></proof>
+ </goal>
+ <goal name="VC swap_rows" expl="VC for swap_rows" proved="true">
+ <proof prover="2"><result status="valid" time="0.26"/></proof>
+ </goal>
+ <goal name="VC mul_row" expl="VC for mul_row" proved="true">
+ <proof prover="0"><result status="valid" time="0.00" steps="430"/></proof>
+ </goal>
+ <goal name="VC addmul_row" expl="VC for addmul_row" proved="true">
+ <proof prover="0"><result status="valid" time="0.14" steps="843"/></proof>
+ </goal>
+ <goal name="VC gauss_jordan" expl="VC for gauss_jordan" proved="true">
+ <transf name="split_goal_right" proved="true" >
+  <goal name="VC gauss_jordan.0" expl="index in array bounds" proved="true">
+  <proof prover="0" timelimit="5" memlimit="2000"><result status="valid" time="0.02" steps="19"/></proof>
+  <proof prover="2"><result status="valid" time="0.17"/></proof>
+  </goal>
+  <goal name="VC gauss_jordan.1" expl="integer overflow" proved="true">
+  <proof prover="0"><result status="valid" time="0.02" steps="22"/></proof>
+  </goal>
+  <goal name="VC gauss_jordan.2" expl="variant decrease" proved="true">
+  <proof prover="0"><result status="valid" time="0.01" steps="21"/></proof>
+  </goal>
+  <goal name="VC gauss_jordan.3" expl="precondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.01" steps="21"/></proof>
+  </goal>
+  <goal name="VC gauss_jordan.4" expl="precondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.02" steps="23"/></proof>
+  </goal>
+  <goal name="VC gauss_jordan.5" expl="postcondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.01" steps="58"/></proof>
+  </goal>
+  <goal name="VC gauss_jordan.6" expl="postcondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.02" steps="28"/></proof>
+  </goal>
+  <goal name="VC gauss_jordan.7" expl="array creation size" proved="true">
+  <proof prover="2"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC gauss_jordan.8" expl="integer overflow" proved="true">
+  <proof prover="2"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC gauss_jordan.9" expl="loop invariant init" proved="true">
+  <proof prover="2"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC gauss_jordan.10" expl="loop invariant init" proved="true">
+  <proof prover="2"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC gauss_jordan.11" expl="loop invariant init" proved="true">
+  <proof prover="2"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC gauss_jordan.12" expl="loop invariant init" proved="true">
+  <proof prover="0" timelimit="5" memlimit="2000"><result status="valid" time="0.01" steps="19"/></proof>
+  <proof prover="2"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC gauss_jordan.13" expl="integer overflow" proved="true">
+  <proof prover="2"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC gauss_jordan.14" expl="precondition" proved="true">
+  <proof prover="0" timelimit="5" memlimit="2000"><result status="valid" time="0.01" steps="25"/></proof>
+  <proof prover="2"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC gauss_jordan.15" expl="precondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.01" steps="27"/></proof>
+  </goal>
+  <goal name="VC gauss_jordan.16" expl="integer overflow" proved="true">
+  <proof prover="2"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC gauss_jordan.17" expl="index in array bounds" proved="true">
+  <proof prover="0" timelimit="5" memlimit="2000"><result status="valid" time="0.01" steps="31"/></proof>
+  <proof prover="2"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC gauss_jordan.18" expl="index in array bounds" proved="true">
+  <proof prover="0"><result status="valid" time="0.01" steps="34"/></proof>
+  </goal>
+  <goal name="VC gauss_jordan.19" expl="precondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.02" steps="34"/></proof>
+  </goal>
+  <goal name="VC gauss_jordan.20" expl="precondition" proved="true">
+  <proof prover="0" timelimit="5" memlimit="2000"><result status="valid" time="0.01" steps="34"/></proof>
+  <proof prover="2"><result status="valid" time="0.04"/></proof>
+  </goal>
+  <goal name="VC gauss_jordan.21" expl="precondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC gauss_jordan.22" expl="precondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.01" steps="41"/></proof>
+  </goal>
+  <goal name="VC gauss_jordan.23" expl="integer overflow" proved="true">
+  <proof prover="2"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC gauss_jordan.24" expl="index in array bounds" proved="true">
+  <proof prover="0" timelimit="5" memlimit="2000"><result status="valid" time="0.01" steps="49"/></proof>
+  <proof prover="2"><result status="valid" time="0.66"/></proof>
+  </goal>
+  <goal name="VC gauss_jordan.25" expl="precondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.01" steps="51"/></proof>
+  </goal>
+  <goal name="VC gauss_jordan.26" expl="exceptional postcondition" proved="true">
+  <proof prover="0" timelimit="5" memlimit="2000"><result status="valid" time="0.00" steps="12"/></proof>
+  <proof prover="2"><result status="valid" time="0.01"/></proof>
+  </goal>
+  <goal name="VC gauss_jordan.27" expl="assertion" proved="true">
+  <transf name="introduce_premises" proved="true" >
+   <goal name="VC gauss_jordan.27.0" expl="assertion" proved="true">
+   <transf name="split_vc" proved="true" >
+    <goal name="VC gauss_jordan.27.0.0" expl="VC for gauss_jordan" proved="true">
+    <proof prover="1"><result status="valid" time="0.20"/></proof>
+    </goal>
+    <goal name="VC gauss_jordan.27.0.1" expl="VC for gauss_jordan" proved="true">
+    <proof prover="2"><result status="valid" time="0.04"/></proof>
+    </goal>
+    <goal name="VC gauss_jordan.27.0.2" expl="VC for gauss_jordan" proved="true">
+    <proof prover="2"><result status="valid" time="0.14"/></proof>
+    </goal>
+    <goal name="VC gauss_jordan.27.0.3" expl="VC for gauss_jordan" proved="true">
+    <transf name="revert" proved="true" arg1="H">
+     <goal name="VC gauss_jordan.27.0.3.0" expl="VC for gauss_jordan" proved="true">
+     <transf name="split_vc" proved="true" >
+      <goal name="VC gauss_jordan.27.0.3.0.0" expl="VC for gauss_jordan" proved="true">
+      <proof prover="0"><result status="valid" time="0.12" steps="548"/></proof>
+      </goal>
+     </transf>
+     </goal>
+    </transf>
+    </goal>
+    <goal name="VC gauss_jordan.27.0.4" expl="VC for gauss_jordan" proved="true">
+    <proof prover="1"><result status="valid" time="0.15"/></proof>
+    </goal>
+   </transf>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC gauss_jordan.28" expl="loop invariant preservation" proved="true">
+  <proof prover="0"><result status="valid" time="0.01" steps="44"/></proof>
+  </goal>
+  <goal name="VC gauss_jordan.29" expl="loop invariant preservation" proved="true">
+  <proof prover="2"><result status="valid" time="0.81"/></proof>
+  </goal>
+  <goal name="VC gauss_jordan.30" expl="loop invariant preservation" proved="true">
+  <proof prover="0"><result status="valid" time="0.02" steps="56"/></proof>
+  </goal>
+  <goal name="VC gauss_jordan.31" expl="loop invariant preservation" proved="true">
+  <proof prover="2"><result status="valid" time="0.41"/></proof>
+  </goal>
+  <goal name="VC gauss_jordan.32" expl="out of loop bounds" proved="true">
+  <proof prover="0"><result status="valid" time="0.02" steps="41"/></proof>
+  </goal>
+  <goal name="VC gauss_jordan.33" expl="integer overflow" proved="true">
+  <proof prover="2"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC gauss_jordan.34" expl="index in array bounds" proved="true">
+  <proof prover="0" timelimit="5" memlimit="2000"><result status="valid" time="0.01" steps="47"/></proof>
+  <proof prover="2"><result status="valid" time="0.61"/></proof>
+  </goal>
+  <goal name="VC gauss_jordan.35" expl="precondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.02" steps="49"/></proof>
+  </goal>
+  <goal name="VC gauss_jordan.36" expl="exceptional postcondition" proved="true">
+  <proof prover="0" timelimit="5" memlimit="2000"><result status="valid" time="0.01" steps="12"/></proof>
+  <proof prover="2"><result status="valid" time="0.01"/></proof>
+  </goal>
+  <goal name="VC gauss_jordan.37" expl="assertion" proved="true">
+  <transf name="split_vc" proved="true" >
+   <goal name="VC gauss_jordan.37.0" expl="assertion" proved="true">
+   <proof prover="1"><result status="valid" time="0.16"/></proof>
+   </goal>
+   <goal name="VC gauss_jordan.37.1" expl="VC for gauss_jordan" proved="true">
+   <proof prover="2"><result status="valid" time="0.03"/></proof>
+   </goal>
+   <goal name="VC gauss_jordan.37.2" expl="VC for gauss_jordan" proved="true">
+   <proof prover="2"><result status="valid" time="0.13"/></proof>
+   </goal>
+   <goal name="VC gauss_jordan.37.3" expl="VC for gauss_jordan" proved="true">
+   <proof prover="0"><result status="valid" time="0.12" steps="538"/></proof>
+   </goal>
+   <goal name="VC gauss_jordan.37.4" expl="VC for gauss_jordan" proved="true">
+   <proof prover="1"><result status="valid" time="0.14"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC gauss_jordan.38" expl="loop invariant preservation" proved="true">
+  <proof prover="0" timelimit="5" memlimit="2000"><result status="valid" time="0.01" steps="42"/></proof>
+  <proof prover="2"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC gauss_jordan.39" expl="loop invariant preservation" proved="true">
+  <proof prover="2"><result status="valid" time="0.45"/></proof>
+  </goal>
+  <goal name="VC gauss_jordan.40" expl="loop invariant preservation" proved="true">
+  <proof prover="0"><result status="valid" time="0.03" steps="54"/></proof>
+  </goal>
+  <goal name="VC gauss_jordan.41" expl="loop invariant preservation" proved="true">
+  <proof prover="2"><result status="valid" time="0.38"/></proof>
+  </goal>
+  <goal name="VC gauss_jordan.42" expl="out of loop bounds" proved="true">
+  <proof prover="0"><result status="valid" time="0.02" steps="39"/></proof>
+  </goal>
+  <goal name="VC gauss_jordan.43" expl="exceptional postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.01"/></proof>
+  </goal>
+  <goal name="VC gauss_jordan.44" expl="exceptional postcondition" proved="true">
+  <proof prover="0" timelimit="5" memlimit="2000"><result status="valid" time="0.01" steps="12"/></proof>
+  <proof prover="2"><result status="valid" time="0.01"/></proof>
+  </goal>
+  <goal name="VC gauss_jordan.45" expl="assertion" proved="true">
+  <transf name="split_vc" proved="true" >
+   <goal name="VC gauss_jordan.45.0" expl="VC for gauss_jordan" proved="true">
+   <proof prover="2"><result status="valid" time="0.04"/></proof>
+   </goal>
+   <goal name="VC gauss_jordan.45.1" expl="VC for gauss_jordan" proved="true">
+   <transf name="revert" proved="true" arg1="H">
+    <goal name="VC gauss_jordan.45.1.0" expl="VC for gauss_jordan" proved="true">
+    <transf name="split_vc" proved="true" >
+     <goal name="VC gauss_jordan.45.1.0.0" expl="VC for gauss_jordan" proved="true">
+     <proof prover="2"><result status="valid" time="0.04"/></proof>
+     </goal>
+    </transf>
+    </goal>
+   </transf>
+   </goal>
+   <goal name="VC gauss_jordan.45.2" expl="VC for gauss_jordan" proved="true">
+   <proof prover="2"><result status="valid" time="0.03"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC gauss_jordan.46" expl="loop invariant preservation" proved="true">
+  <proof prover="0"><result status="valid" time="0.02" steps="28"/></proof>
+  </goal>
+  <goal name="VC gauss_jordan.47" expl="loop invariant preservation" proved="true">
+  <proof prover="2"><result status="valid" time="0.14"/></proof>
+  </goal>
+  <goal name="VC gauss_jordan.48" expl="loop invariant preservation" proved="true">
+  <transf name="introduce_premises" proved="true" >
+   <goal name="VC gauss_jordan.48.0" expl="loop invariant preservation" proved="true">
+   <proof prover="2"><result status="valid" time="0.02"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC gauss_jordan.49" expl="loop invariant preservation" proved="true">
+  <proof prover="2"><result status="valid" time="0.01"/></proof>
+  </goal>
+  <goal name="VC gauss_jordan.50" expl="postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC gauss_jordan.51" expl="array creation size" proved="true">
+  <proof prover="0" timelimit="5" memlimit="2000"><result status="valid" time="0.01" steps="23"/></proof>
+  <proof prover="2"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC gauss_jordan.52" expl="integer overflow" proved="true">
+  <proof prover="2"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC gauss_jordan.53" expl="index in array bounds" proved="true">
+  <proof prover="0"><result status="valid" time="0.02" steps="31"/></proof>
+  </goal>
+  <goal name="VC gauss_jordan.54" expl="index in array bounds" proved="true">
+  <proof prover="2"><result status="valid" time="0.08"/></proof>
+  </goal>
+  <goal name="VC gauss_jordan.55" expl="index in array bounds" proved="true">
+  <proof prover="0" timelimit="5" memlimit="2000"><result status="valid" time="0.01" steps="61"/></proof>
+  <proof prover="2"><result status="valid" time="0.41"/></proof>
+  </goal>
+  <goal name="VC gauss_jordan.56" expl="postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC gauss_jordan.57" expl="postcondition" proved="true">
+  <proof prover="0" timelimit="5" memlimit="2000"><result status="valid" time="0.01" steps="24"/></proof>
+  <proof prover="2"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC gauss_jordan.58" expl="out of loop bounds" proved="true">
+  <proof prover="0" timelimit="5" memlimit="2000"><result status="valid" time="0.01" steps="17"/></proof>
+  <proof prover="2"><result status="valid" time="0.01"/></proof>
+  </goal>
+ </transf>
+ </goal>
+ <goal name="VC to_list" expl="VC for to_list" proved="true">
+ <proof prover="2"><result status="valid" time="0.31"/></proof>
+ </goal>
+ <goal name="VC linear_decision" expl="VC for linear_decision" proved="true">
+ <transf name="split_goal_right" proved="true" >
+  <goal name="VC linear_decision.0" expl="precondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC linear_decision.1" expl="precondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC linear_decision.2" expl="exceptional postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.01"/></proof>
+  </goal>
+  <goal name="VC linear_decision.3" expl="postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.01"/></proof>
+  </goal>
+  <goal name="VC linear_decision.4" expl="integer overflow" proved="true">
+  <proof prover="2"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC linear_decision.5" expl="integer overflow" proved="true">
+  <proof prover="2"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC linear_decision.6" expl="integer overflow" proved="true">
+  <proof prover="2"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC linear_decision.7" expl="precondition" proved="true">
+  <proof prover="0" timelimit="5" memlimit="2000"><result status="valid" time="0.01" steps="97"/></proof>
+  <proof prover="2"><result status="valid" time="0.06"/></proof>
+  </goal>
+  <goal name="VC linear_decision.8" expl="array creation size" proved="true">
+  <proof prover="2"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC linear_decision.9" expl="integer overflow" proved="true">
+  <proof prover="2"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC linear_decision.10" expl="array creation size" proved="true">
+  <proof prover="2"><result status="valid" time="0.04"/></proof>
+  </goal>
+  <goal name="VC linear_decision.11" expl="exceptional postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.01"/></proof>
+  </goal>
+  <goal name="VC linear_decision.12" expl="integer overflow" proved="true">
+  <proof prover="0"><result status="valid" time="0.04" steps="190"/></proof>
+  </goal>
+  <goal name="VC linear_decision.13" expl="index in array bounds" proved="true">
+  <proof prover="0"><result status="valid" time="0.02" steps="213"/></proof>
+  </goal>
+  <goal name="VC linear_decision.14" expl="index in array bounds" proved="true">
+  <proof prover="0"><result status="valid" time="0.02" steps="213"/></proof>
+  </goal>
+  <goal name="VC linear_decision.15" expl="exceptional postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.01"/></proof>
+  </goal>
+  <goal name="VC linear_decision.16" expl="variant decrease" proved="true">
+  <proof prover="2"><result status="valid" time="0.36"/></proof>
+  </goal>
+  <goal name="VC linear_decision.17" expl="precondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.01" steps="32"/></proof>
+  <proof prover="2"><result status="valid" time="0.04"/></proof>
+  </goal>
+  <goal name="VC linear_decision.18" expl="precondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.02" steps="82"/></proof>
+  </goal>
+  <goal name="VC linear_decision.19" expl="variant decrease" proved="true">
+  <proof prover="2"><result status="valid" time="0.39"/></proof>
+  </goal>
+  <goal name="VC linear_decision.20" expl="precondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.02" steps="32"/></proof>
+  <proof prover="2"><result status="valid" time="0.04"/></proof>
+  </goal>
+  <goal name="VC linear_decision.21" expl="precondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.02" steps="82"/></proof>
+  </goal>
+  <goal name="VC linear_decision.22" expl="exceptional postcondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.01" steps="10"/></proof>
+  <proof prover="2"><result status="valid" time="0.01"/></proof>
+  </goal>
+  <goal name="VC linear_decision.23" expl="exceptional postcondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.02" steps="10"/></proof>
+  <proof prover="2"><result status="valid" time="0.01"/></proof>
+  </goal>
+  <goal name="VC linear_decision.24" expl="exceptional postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.01"/></proof>
+  </goal>
+  <goal name="VC linear_decision.25" expl="exceptional postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.01"/></proof>
+  </goal>
+  <goal name="VC linear_decision.26" expl="assertion" proved="true">
+  <proof prover="2"><result status="valid" time="0.04"/></proof>
+  </goal>
+  <goal name="VC linear_decision.27" expl="index in array bounds" proved="true">
+  <proof prover="0"><result status="valid" time="0.03" steps="34"/></proof>
+  </goal>
+  <goal name="VC linear_decision.28" expl="index in array bounds" proved="true">
+  <proof prover="0"><result status="valid" time="0.03" steps="34"/></proof>
+  </goal>
+  <goal name="VC linear_decision.29" expl="precondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.02" steps="36"/></proof>
+  </goal>
+  <goal name="VC linear_decision.30" expl="precondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.02" steps="92"/></proof>
+  </goal>
+  <goal name="VC linear_decision.31" expl="integer overflow" proved="true">
+  <proof prover="0"><result status="valid" time="0.03" steps="37"/></proof>
+  </goal>
+  <goal name="VC linear_decision.32" expl="variant decrease" proved="true">
+  <proof prover="0"><result status="valid" time="0.01" steps="37"/></proof>
+  </goal>
+  <goal name="VC linear_decision.33" expl="precondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.02" steps="94"/></proof>
+  </goal>
+  <goal name="VC linear_decision.34" expl="precondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.03" steps="42"/></proof>
+  </goal>
+  <goal name="VC linear_decision.35" expl="precondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.02" steps="39"/></proof>
+  </goal>
+  <goal name="VC linear_decision.36" expl="exceptional postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.01"/></proof>
+  </goal>
+  <goal name="VC linear_decision.37" expl="integer overflow" proved="true">
+  <proof prover="0"><result status="valid" time="0.02" steps="37"/></proof>
+  </goal>
+  <goal name="VC linear_decision.38" expl="variant decrease" proved="true">
+  <proof prover="0"><result status="valid" time="0.02" steps="37"/></proof>
+  </goal>
+  <goal name="VC linear_decision.39" expl="precondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.02" steps="94"/></proof>
+  </goal>
+  <goal name="VC linear_decision.40" expl="precondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.03" steps="42"/></proof>
+  </goal>
+  <goal name="VC linear_decision.41" expl="precondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.02" steps="39"/></proof>
+  </goal>
+  <goal name="VC linear_decision.42" expl="exceptional postcondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.01" steps="10"/></proof>
+  <proof prover="2"><result status="valid" time="0.01"/></proof>
+  </goal>
+  <goal name="VC linear_decision.43" expl="exceptional postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.01"/></proof>
+  </goal>
+  <goal name="VC linear_decision.44" expl="integer overflow" proved="true">
+  <proof prover="0"><result status="valid" time="0.03" steps="35"/></proof>
+  </goal>
+  <goal name="VC linear_decision.45" expl="variant decrease" proved="true">
+  <proof prover="0"><result status="valid" time="0.02" steps="35"/></proof>
+  </goal>
+  <goal name="VC linear_decision.46" expl="precondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.02" steps="90"/></proof>
+  </goal>
+  <goal name="VC linear_decision.47" expl="precondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.02" steps="40"/></proof>
+  </goal>
+  <goal name="VC linear_decision.48" expl="precondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.02" steps="37"/></proof>
+  </goal>
+  <goal name="VC linear_decision.49" expl="exceptional postcondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.01" steps="10"/></proof>
+  <proof prover="2"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC linear_decision.50" expl="precondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.02" steps="34"/></proof>
+  </goal>
+  <goal name="VC linear_decision.51" expl="precondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.02" steps="88"/></proof>
+  </goal>
+  <goal name="VC linear_decision.52" expl="integer overflow" proved="true">
+  <proof prover="0"><result status="valid" time="0.02" steps="35"/></proof>
+  </goal>
+  <goal name="VC linear_decision.53" expl="variant decrease" proved="true">
+  <proof prover="0"><result status="valid" time="0.02" steps="35"/></proof>
+  </goal>
+  <goal name="VC linear_decision.54" expl="precondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.03" steps="90"/></proof>
+  </goal>
+  <goal name="VC linear_decision.55" expl="precondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.03" steps="40"/></proof>
+  </goal>
+  <goal name="VC linear_decision.56" expl="precondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.02" steps="37"/></proof>
+  </goal>
+  <goal name="VC linear_decision.57" expl="exceptional postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.01"/></proof>
+  </goal>
+  <goal name="VC linear_decision.58" expl="integer overflow" proved="true">
+  <proof prover="0"><result status="valid" time="0.03" steps="35"/></proof>
+  </goal>
+  <goal name="VC linear_decision.59" expl="variant decrease" proved="true">
+  <proof prover="0"><result status="valid" time="0.01" steps="35"/></proof>
+  </goal>
+  <goal name="VC linear_decision.60" expl="precondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.02" steps="90"/></proof>
+  </goal>
+  <goal name="VC linear_decision.61" expl="precondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.02" steps="40"/></proof>
+  </goal>
+  <goal name="VC linear_decision.62" expl="precondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.02" steps="37"/></proof>
+  </goal>
+  <goal name="VC linear_decision.63" expl="exceptional postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.01"/></proof>
+  </goal>
+  <goal name="VC linear_decision.64" expl="exceptional postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.01"/></proof>
+  </goal>
+  <goal name="VC linear_decision.65" expl="integer overflow" proved="true">
+  <proof prover="2"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC linear_decision.66" expl="variant decrease" proved="true">
+  <proof prover="0"><result status="valid" time="0.02" steps="34"/></proof>
+  </goal>
+  <goal name="VC linear_decision.67" expl="precondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.02" steps="89"/></proof>
+  </goal>
+  <goal name="VC linear_decision.68" expl="precondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.02" steps="39"/></proof>
+  </goal>
+  <goal name="VC linear_decision.69" expl="precondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.05"/></proof>
+  </goal>
+  <goal name="VC linear_decision.70" expl="exceptional postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.01"/></proof>
+  </goal>
+  <goal name="VC linear_decision.71" expl="exceptional postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.01"/></proof>
+  </goal>
+  <goal name="VC linear_decision.72" expl="integer overflow" proved="true">
+  <proof prover="0"><result status="valid" time="0.02" steps="178"/></proof>
+  </goal>
+  <goal name="VC linear_decision.73" expl="index in array bounds" proved="true">
+  <proof prover="0"><result status="valid" time="0.03" steps="461"/></proof>
+  </goal>
+  <goal name="VC linear_decision.74" expl="index in array bounds" proved="true">
+  <proof prover="0"><result status="valid" time="0.03" steps="461"/></proof>
+  </goal>
+  <goal name="VC linear_decision.75" expl="exceptional postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.01"/></proof>
+  </goal>
+  <goal name="VC linear_decision.76" expl="variant decrease" proved="true">
+  <proof prover="2"><result status="valid" time="0.48"/></proof>
+  </goal>
+  <goal name="VC linear_decision.77" expl="precondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.02" steps="76"/></proof>
+  </goal>
+  <goal name="VC linear_decision.78" expl="variant decrease" proved="true">
+  <proof prover="2"><result status="valid" time="0.38"/></proof>
+  </goal>
+  <goal name="VC linear_decision.79" expl="precondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.02" steps="76"/></proof>
+  </goal>
+  <goal name="VC linear_decision.80" expl="exceptional postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.01"/></proof>
+  </goal>
+  <goal name="VC linear_decision.81" expl="exceptional postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.00"/></proof>
+  </goal>
+  <goal name="VC linear_decision.82" expl="exceptional postcondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.02" steps="10"/></proof>
+  <proof prover="2"><result status="valid" time="0.01"/></proof>
+  </goal>
+  <goal name="VC linear_decision.83" expl="exceptional postcondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.01" steps="10"/></proof>
+  <proof prover="2"><result status="valid" time="0.01"/></proof>
+  </goal>
+  <goal name="VC linear_decision.84" expl="precondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC linear_decision.85" expl="precondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.01"/></proof>
+  </goal>
+  <goal name="VC linear_decision.86" expl="precondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC linear_decision.87" expl="precondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.02" steps="91"/></proof>
+  </goal>
+  <goal name="VC linear_decision.88" expl="precondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC linear_decision.89" expl="precondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC linear_decision.90" expl="precondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.04"/></proof>
+  </goal>
+  <goal name="VC linear_decision.91" expl="precondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.01" steps="103"/></proof>
+  <proof prover="2"><result status="valid" time="0.04"/></proof>
+  </goal>
+  <goal name="VC linear_decision.92" expl="precondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.04"/></proof>
+  </goal>
+  <goal name="VC linear_decision.93" expl="precondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.04"/></proof>
+  </goal>
+  <goal name="VC linear_decision.94" expl="precondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC linear_decision.95" expl="postcondition" proved="true">
+  <proof prover="0" timelimit="5" memlimit="2000"><result status="valid" time="0.01" steps="43"/></proof>
+  <proof prover="2"><result status="valid" time="0.04"/></proof>
+  </goal>
+  <goal name="VC linear_decision.96" expl="exceptional postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.01"/></proof>
+  </goal>
+  <goal name="VC linear_decision.97" expl="postcondition" proved="true">
+  <proof prover="0" timelimit="5" memlimit="2000"><result status="valid" time="0.01" steps="10"/></proof>
+  <proof prover="2"><result status="valid" time="0.01"/></proof>
+  </goal>
+  <goal name="VC linear_decision.98" expl="exceptional postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC linear_decision.99" expl="exceptional postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.01"/></proof>
+  </goal>
+  <goal name="VC linear_decision.100" expl="exceptional postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC linear_decision.101" expl="exceptional postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC linear_decision.102" expl="exceptional postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.01"/></proof>
+  </goal>
+ </transf>
+ </goal>
+ <goal name="VC valid_expr&#39;" expl="VC for valid_expr'" proved="true">
+ <proof prover="2"><result status="valid" time="0.17"/></proof>
+ </goal>
+ <goal name="VC valid_eq&#39;" expl="VC for valid_eq'" proved="true">
+ <proof prover="2"><result status="valid" time="0.02"/></proof>
+ </goal>
+ <goal name="VC valid_ctx&#39;" expl="VC for valid_ctx'" proved="true">
+ <proof prover="2"><result status="valid" time="0.01"/></proof>
+ </goal>
+ <goal name="VC simp" expl="VC for simp" proved="true">
+ <transf name="split_goal_right" proved="true" >
+  <goal name="VC simp.0" expl="postcondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.03" steps="12"/></proof>
+  </goal>
+  <goal name="VC simp.1" expl="variant decrease" proved="true">
+  <proof prover="2"><result status="valid" time="0.33"/></proof>
+  </goal>
+  <goal name="VC simp.2" expl="variant decrease" proved="true">
+  <proof prover="0"><result status="valid" time="0.04" steps="38"/></proof>
+  </goal>
+  <goal name="VC simp.3" expl="postcondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.03" steps="14"/></proof>
+  </goal>
+  <goal name="VC simp.4" expl="exceptional postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.01"/></proof>
+  </goal>
+  <goal name="VC simp.5" expl="exceptional postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.01"/></proof>
+  </goal>
+  <goal name="VC simp.6" expl="exceptional postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.01"/></proof>
+  </goal>
+  <goal name="VC simp.7" expl="variant decrease" proved="true">
+  <proof prover="2"><result status="valid" time="0.31"/></proof>
+  </goal>
+  <goal name="VC simp.8" expl="variant decrease" proved="true">
+  <proof prover="2"><result status="valid" time="0.32"/></proof>
+  </goal>
+  <goal name="VC simp.9" expl="postcondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.02" steps="21"/></proof>
+  </goal>
+  <goal name="VC simp.10" expl="postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC simp.11" expl="exceptional postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.01"/></proof>
+  </goal>
+  <goal name="VC simp.12" expl="exceptional postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.01"/></proof>
+  </goal>
+  <goal name="VC simp.13" expl="variant decrease" proved="true">
+  <proof prover="2"><result status="valid" time="0.31"/></proof>
+  </goal>
+  <goal name="VC simp.14" expl="variant decrease" proved="true">
+  <proof prover="2"><result status="valid" time="0.35"/></proof>
+  </goal>
+  <goal name="VC simp.15" expl="postcondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.02" steps="22"/></proof>
+  </goal>
+  <goal name="VC simp.16" expl="postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC simp.17" expl="exceptional postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.01"/></proof>
+  </goal>
+  <goal name="VC simp.18" expl="exceptional postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.01"/></proof>
+  </goal>
+  <goal name="VC simp.19" expl="postcondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.02" steps="43"/></proof>
+  </goal>
+  <goal name="VC simp.20" expl="postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC simp.21" expl="postcondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.02" steps="12"/></proof>
+  </goal>
+  <goal name="VC simp.22" expl="postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC simp.23" expl="variant decrease" proved="true">
+  <proof prover="0"><result status="valid" time="0.04" steps="142"/></proof>
+  </goal>
+  <goal name="VC simp.24" expl="postcondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.02" steps="16"/></proof>
+  </goal>
+  <goal name="VC simp.25" expl="postcondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.02" steps="34"/></proof>
+  </goal>
+  <goal name="VC simp.26" expl="exceptional postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.01"/></proof>
+  </goal>
+  <goal name="VC simp.27" expl="exceptional postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.01"/></proof>
+  </goal>
+  <goal name="VC simp.28" expl="exceptional postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.01"/></proof>
+  </goal>
+  <goal name="VC simp.29" expl="variant decrease" proved="true">
+  <proof prover="0"><result status="valid" time="0.04" steps="142"/></proof>
+  </goal>
+  <goal name="VC simp.30" expl="postcondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.02" steps="16"/></proof>
+  </goal>
+  <goal name="VC simp.31" expl="postcondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.02" steps="34"/></proof>
+  </goal>
+  <goal name="VC simp.32" expl="exceptional postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.01"/></proof>
+  </goal>
+  <goal name="VC simp.33" expl="exceptional postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.01"/></proof>
+  </goal>
+  <goal name="VC simp.34" expl="exceptional postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.01"/></proof>
+  </goal>
+ </transf>
+ </goal>
+ <goal name="VC simp_eq" expl="VC for simp_eq" proved="true">
+ <proof prover="2"><result status="valid" time="0.57"/></proof>
+ </goal>
+ <goal name="VC simp_ctx" expl="VC for simp_ctx" proved="true">
+ <proof prover="0"><result status="valid" time="0.51" steps="1700"/></proof>
+ </goal>
+ <goal name="VC decision" expl="VC for decision" proved="true">
+ <transf name="split_vc" proved="true" >
+  <goal name="VC decision.0" expl="precondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC decision.1" expl="precondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC decision.2" expl="precondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.05"/></proof>
+  </goal>
+  <goal name="VC decision.3" expl="postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.05"/></proof>
+  </goal>
+  <goal name="VC decision.4" expl="exceptional postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC decision.5" expl="exceptional postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC decision.6" expl="exceptional postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.01"/></proof>
+  </goal>
+ </transf>
+ </goal>
+</theory>
+<theory name="RationalCoeffs" proved="true">
+ <goal name="VC rzero" expl="VC for rzero" proved="true">
+ <proof prover="2"><result status="valid" time="0.02"/></proof>
+ </goal>
+ <goal name="VC rone" expl="VC for rone" proved="true">
+ <proof prover="2"><result status="valid" time="0.01"/></proof>
+ </goal>
+ <goal name="VC prod_compat_eq" expl="VC for prod_compat_eq" proved="true">
+ <proof prover="2"><result status="valid" time="0.03"/></proof>
+ </goal>
+ <goal name="VC cross_d" expl="VC for cross_d" proved="true">
+ <transf name="split_goal_right" proved="true" >
+  <goal name="VC cross_d.0" expl="assertion" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC cross_d.0.0" expl="assertion" proved="true">
+   <proof prover="2"><result status="valid" time="0.90"/></proof>
+   </goal>
+   <goal name="VC cross_d.0.1" expl="VC for cross_d" proved="true">
+   <transf name="introduce_premises" proved="true" >
+    <goal name="VC cross_d.0.1.0" expl="VC for cross_d" proved="true">
+    <transf name="apply" proved="true" arg1="prod_compat_eq" arg2="with" arg3="d">
+     <goal name="VC cross_d.0.1.0.0" proved="true">
+     <proof prover="2"><result status="valid" time="0.01"/></proof>
+     </goal>
+     <goal name="VC cross_d.0.1.0.1" proved="true">
+     <proof prover="2"><result status="valid" time="0.32"/></proof>
+     </goal>
+    </transf>
+    </goal>
+   </transf>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC cross_d.1" expl="postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.00"/></proof>
+  </goal>
+ </transf>
+ </goal>
+ <goal name="VC cross_ind" expl="VC for cross_ind" proved="true">
+ <transf name="split_goal_right" proved="true" >
+  <goal name="VC cross_ind.0" expl="assertion" proved="true">
+  <proof prover="2"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC cross_ind.1" expl="assertion" proved="true">
+  <proof prover="3" timelimit="10"><result status="valid" time="0.01"/></proof>
+  </goal>
+  <goal name="VC cross_ind.2" expl="assertion" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC cross_ind.2.0" expl="VC for cross_ind" proved="true">
+   <proof prover="3" timelimit="10"><result status="valid" time="3.88"/></proof>
+   </goal>
+   <goal name="VC cross_ind.2.1" expl="VC for cross_ind" proved="true">
+   <proof prover="0"><result status="valid" time="0.00" steps="8"/></proof>
+   </goal>
+   <goal name="VC cross_ind.2.2" expl="VC for cross_ind" proved="true">
+   <proof prover="3" timelimit="10"><result status="valid" time="3.58"/></proof>
+   </goal>
+   <goal name="VC cross_ind.2.3" expl="VC for cross_ind" proved="true">
+   <proof prover="2"><result status="valid" time="0.01"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC cross_ind.3" expl="assertion" proved="true">
+  <proof prover="2"><result status="valid" time="0.01"/></proof>
+  </goal>
+  <goal name="VC cross_ind.4" expl="postcondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.01" steps="13"/></proof>
+  </goal>
+ </transf>
+ </goal>
+ <goal name="cross" proved="true">
+ <proof prover="0"><result status="valid" time="0.00" steps="11"/></proof>
+ </goal>
+ <goal name="VC gcd" expl="VC for gcd" proved="true">
+ <proof prover="1"><result status="valid" time="0.30"/></proof>
+ <transf name="split_goal_right" proved="true" >
+  <goal name="VC gcd.0" expl="loop invariant init" proved="true">
+  <proof prover="2"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC gcd.1" expl="loop invariant init" proved="true">
+  <proof prover="2"><result status="valid" time="0.01"/></proof>
+  </goal>
+  <goal name="VC gcd.2" expl="loop invariant init" proved="true">
+  <proof prover="2"><result status="valid" time="0.01"/></proof>
+  </goal>
+  <goal name="VC gcd.3" expl="precondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC gcd.4" expl="precondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC gcd.5" expl="assertion" proved="true">
+  <proof prover="2"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC gcd.6" expl="loop variant decrease" proved="true">
+  <proof prover="2"><result status="valid" time="0.04"/></proof>
+  </goal>
+  <goal name="VC gcd.7" expl="loop invariant preservation" proved="true">
+  <proof prover="2"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC gcd.8" expl="loop invariant preservation" proved="true">
+  <proof prover="2"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC gcd.9" expl="loop invariant preservation" proved="true">
+  <proof prover="2"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC gcd.10" expl="postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC gcd.11" expl="postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.02"/></proof>
+  </goal>
+ </transf>
+ </goal>
+ <goal name="VC simp" expl="VC for simp" proved="true">
+ <transf name="split_goal_right" proved="true" >
+  <goal name="VC simp.0" expl="precondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC simp.1" expl="precondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC simp.2" expl="precondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC simp.3" expl="assertion" proved="true">
+  <proof prover="1"><result status="valid" time="0.06"/></proof>
+  </goal>
+  <goal name="VC simp.4" expl="assertion" proved="true">
+  <proof prover="0"><result status="valid" time="0.00" steps="8"/></proof>
+  </goal>
+  <goal name="VC simp.5" expl="postcondition" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC simp.5.0" expl="postcondition" proved="true">
+   <proof prover="2"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC simp.5.1" expl="postcondition" proved="true">
+   <proof prover="2"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC simp.5.2" expl="postcondition" proved="true">
+   <proof prover="2"><result status="valid" time="0.02"/></proof>
+   </goal>
+  </transf>
+  </goal>
+ </transf>
+ </goal>
+ <goal name="VC radd" expl="VC for radd" proved="true">
+ <transf name="split_goal_right" proved="true" >
+  <goal name="VC radd.0" expl="exceptional postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.01"/></proof>
+  </goal>
+  <goal name="VC radd.1" expl="assertion" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC radd.1.0" expl="assertion" proved="true">
+   <transf name="compute_in_goal" proved="true" >
+    <goal name="VC radd.1.0.0" expl="assertion" proved="true">
+    <proof prover="2"><result status="valid" time="0.19"/></proof>
+    </goal>
+   </transf>
+   </goal>
+   <goal name="VC radd.1.1" expl="VC for radd" proved="true">
+   <transf name="introduce_premises" proved="true" >
+    <goal name="VC radd.1.1.0" expl="VC for radd" proved="true">
+    <transf name="compute_in_goal" proved="true" >
+     <goal name="VC radd.1.1.0.0" expl="VC for radd" proved="true">
+     <transf name="replace" proved="true" arg1="(from_int a1 * from_int b1)" arg2="(from_int b1 * from_int a1)">
+      <goal name="VC radd.1.1.0.0.0" expl="VC for radd" proved="true">
+      <transf name="cut" proved="true" arg1="(inv1 (from_int b1) * from_int b1 = one)">
+       <goal name="VC radd.1.1.0.0.0.0" expl="VC for radd" proved="true">
+       <proof prover="0"><result status="valid" time="0.01" steps="7"/></proof>
+       </goal>
+       <goal name="VC radd.1.1.0.0.0.1" proved="true">
+       <proof prover="2"><result status="valid" time="0.02"/></proof>
+       </goal>
+      </transf>
+      </goal>
+      <goal name="VC radd.1.1.0.0.1" proved="true">
+      <proof prover="2"><result status="valid" time="0.01"/></proof>
+      </goal>
+     </transf>
+     </goal>
+    </transf>
+    </goal>
+   </transf>
+   </goal>
+   <goal name="VC radd.1.2" expl="VC for radd" proved="true">
+   <proof prover="2"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC radd.1.3" expl="VC for radd" proved="true">
+   <transf name="compute_in_goal" proved="true" >
+    <goal name="VC radd.1.3.0" expl="VC for radd" proved="true">
+    <proof prover="3" timelimit="10"><result status="valid" time="0.05"/></proof>
+    </goal>
+   </transf>
+   </goal>
+   <goal name="VC radd.1.4" expl="VC for radd" proved="true">
+   <transf name="introduce_premises" proved="true" >
+    <goal name="VC radd.1.4.0" expl="VC for radd" proved="true">
+    <transf name="apply" proved="true" arg1="prod_compat_eq" arg2="with" arg3="d">
+     <goal name="VC radd.1.4.0.0" proved="true">
+     <proof prover="2"><result status="valid" time="0.02"/></proof>
+     </goal>
+     <goal name="VC radd.1.4.0.1" proved="true">
+     <proof prover="0"><result status="valid" time="0.05" steps="23"/></proof>
+     </goal>
+    </transf>
+    </goal>
+   </transf>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC radd.2" expl="postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.03"/></proof>
+  </goal>
+ </transf>
+ </goal>
+ <goal name="VC rmul" expl="VC for rmul" proved="true">
+ <transf name="split_goal_right" proved="true" >
+  <goal name="VC rmul.0" expl="exceptional postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC rmul.1" expl="assertion" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC rmul.1.0" expl="assertion" proved="true">
+   <proof prover="0"><result status="valid" time="0.01" steps="6"/></proof>
+   </goal>
+   <goal name="VC rmul.1.1" expl="assertion" proved="true">
+   <proof prover="2"><result status="valid" time="0.01"/></proof>
+   </goal>
+   <goal name="VC rmul.1.2" expl="assertion" proved="true">
+   <proof prover="0"><result status="valid" time="0.70" steps="108"/></proof>
+   </goal>
+   <goal name="VC rmul.1.3" expl="assertion" proved="true">
+   <proof prover="0"><result status="valid" time="0.01" steps="6"/></proof>
+   </goal>
+   <goal name="VC rmul.1.4" expl="VC for rmul" proved="true">
+   <proof prover="2"><result status="valid" time="0.02"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC rmul.2" expl="postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.02"/></proof>
+  </goal>
+ </transf>
+ </goal>
+ <goal name="VC ropp" expl="VC for ropp" proved="true">
+ <transf name="compute_in_goal" proved="true" >
+  <goal name="VC ropp.0" expl="VC for ropp" proved="true">
+  <proof prover="0"><result status="valid" time="0.00" steps="6"/></proof>
+  </goal>
+ </transf>
+ </goal>
+ <goal name="VC req" expl="VC for req" proved="true">
+ <transf name="split_goal_right" proved="true" >
+  <goal name="VC req.0" expl="postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC req.1" expl="postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC req.2" expl="postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.01"/></proof>
+  </goal>
+ </transf>
+ </goal>
+ <goal name="VC rinv" expl="VC for rinv" proved="true">
+ <transf name="split_goal_right" proved="true" >
+  <goal name="VC rinv.0" expl="exceptional postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.01"/></proof>
+  </goal>
+  <goal name="VC rinv.1" expl="postcondition" proved="true">
+  <transf name="compute_in_goal" proved="true" >
+   <goal name="VC rinv.1.0" expl="postcondition" proved="true">
+   <proof prover="2"><result status="valid" time="0.02"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC rinv.2" expl="postcondition" proved="true">
+  <transf name="compute_in_goal" proved="true" >
+   <goal name="VC rinv.2.0" expl="postcondition" proved="true">
+   <proof prover="3" timelimit="10"><result status="valid" time="0.08"/></proof>
+   </goal>
+  </transf>
+  </goal>
+ </transf>
+ </goal>
+ <goal name="VC is_zero" expl="VC for is_zero" proved="true">
+ <transf name="split_vc" proved="true" >
+  <goal name="VC is_zero.0" expl="postcondition" proved="true">
+  <transf name="split_vc" proved="true" >
+   <goal name="VC is_zero.0.0" expl="VC for is_zero" proved="true">
+   <transf name="introduce_premises" proved="true" >
+    <goal name="VC is_zero.0.0.0" expl="VC for is_zero" proved="true">
+    <transf name="inline_goal" proved="true" >
+     <goal name="VC is_zero.0.0.0.0" expl="VC for is_zero" proved="true">
+     <proof prover="2"><result status="valid" time="0.01"/></proof>
+     </goal>
+    </transf>
+    </goal>
+   </transf>
+   </goal>
+   <goal name="VC is_zero.0.1" expl="VC for is_zero" proved="true">
+   <proof prover="2"><result status="valid" time="0.02"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC is_zero.1" expl="postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.02"/></proof>
+  </goal>
+ </transf>
+ </goal>
+</theory>
+<theory name="LinearDecisionRational" proved="true">
+ <goal name="C.A.Assoc" proved="true">
+ <proof prover="2"><result status="valid" time="0.02"/></proof>
+ </goal>
+ <goal name="C.A.Unit_def_l" proved="true">
+ <proof prover="2"><result status="valid" time="0.01"/></proof>
+ </goal>
+ <goal name="C.A.Unit_def_r" proved="true">
+ <proof prover="2"><result status="valid" time="0.02"/></proof>
+ </goal>
+ <goal name="C.A.Inv_def_l" proved="true">
+ <proof prover="2"><result status="valid" time="0.02"/></proof>
+ </goal>
+ <goal name="C.A.Inv_def_r" proved="true">
+ <proof prover="2"><result status="valid" time="0.02"/></proof>
+ </goal>
+ <goal name="C.A.Comm" proved="true">
+ <proof prover="2"><result status="valid" time="0.01"/></proof>
+ </goal>
+ <goal name="C.A.MulAssoc.Assoc" proved="true">
+ <proof prover="2"><result status="valid" time="0.00"/></proof>
+ </goal>
+ <goal name="C.A.Mul_distr_l" proved="true">
+ <proof prover="2"><result status="valid" time="0.02"/></proof>
+ </goal>
+ <goal name="C.A.Mul_distr_r" proved="true">
+ <proof prover="2"><result status="valid" time="0.01"/></proof>
+ </goal>
+ <goal name="C.A.MulComm.Comm" proved="true">
+ <proof prover="2"><result status="valid" time="0.01"/></proof>
+ </goal>
+ <goal name="C.A.Unitary" proved="true">
+ <proof prover="2"><result status="valid" time="0.02"/></proof>
+ </goal>
+ <goal name="C.A.NonTrivialRing" proved="true">
+ <proof prover="2"><result status="valid" time="0.01"/></proof>
+ </goal>
+ <goal name="C.A.ZeroLessOne" proved="true">
+ <proof prover="2"><result status="valid" time="0.01"/></proof>
+ </goal>
+ <goal name="C.A.CompatOrderAdd" proved="true">
+ <proof prover="2"><result status="valid" time="0.01"/></proof>
+ </goal>
+ <goal name="C.A.CompatOrderMult" proved="true">
+ <proof prover="2"><result status="valid" time="0.02"/></proof>
+ </goal>
+ <goal name="C.sub_def" proved="true">
+ <proof prover="2"><result status="valid" time="0.01"/></proof>
+ </goal>
+ <goal name="C.VC czero" expl="VC for czero" proved="true">
+ <proof prover="2"><result status="valid" time="0.01"/></proof>
+ </goal>
+ <goal name="C.VC cone" expl="VC for cone" proved="true">
+ <proof prover="2"><result status="valid" time="0.01"/></proof>
+ </goal>
+ <goal name="C.zero_def" proved="true">
+ <proof prover="2"><result status="valid" time="0.03"/></proof>
+ </goal>
+ <goal name="C.one_def" proved="true">
+ <transf name="compute_in_goal" proved="true" >
+  <goal name="one_def.0" proved="true">
+  <transf name="replace" proved="true" arg1="one" arg2="1.0">
+   <goal name="one_def.0.0" proved="true">
+   <proof prover="2"><result status="valid" time="0.03"/></proof>
+   </goal>
+   <goal name="one_def.0.1" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+  </transf>
+  </goal>
+ </transf>
+ </goal>
+ <goal name="C.VC add" expl="VC for add" proved="true">
+ <proof prover="2"><result status="valid" time="0.03"/></proof>
+ </goal>
+ <goal name="C.VC mul" expl="VC for mul" proved="true">
+ <proof prover="2"><result status="valid" time="0.01"/></proof>
+ </goal>
+ <goal name="C.VC opp" expl="VC for opp" proved="true">
+ <proof prover="2"><result status="valid" time="0.01"/></proof>
+ </goal>
+ <goal name="C.VC eq" expl="VC for eq" proved="true">
+ <proof prover="2"><result status="valid" time="0.01"/></proof>
+ </goal>
+ <goal name="C.VC inv" expl="VC for inv" proved="true">
+ <proof prover="2"><result status="valid" time="0.02"/></proof>
+ </goal>
+</theory>
+<theory name="LinearDecisionInt" proved="true">
+ <goal name="VC izero" expl="VC for izero" proved="true">
+ <proof prover="2"><result status="valid" time="0.02"/></proof>
+ </goal>
+ <goal name="VC ione" expl="VC for ione" proved="true">
+ <proof prover="2"><result status="valid" time="0.00"/></proof>
+ </goal>
+ <goal name="VC ieq" expl="VC for ieq" proved="true">
+ <proof prover="2"><result status="valid" time="0.01"/></proof>
+ </goal>
+ <goal name="VC iadd" expl="VC for iadd" proved="true">
+ <proof prover="2"><result status="valid" time="0.02"/></proof>
+ </goal>
+ <goal name="VC imul" expl="VC for imul" proved="true">
+ <proof prover="2"><result status="valid" time="0.02"/></proof>
+ </goal>
+ <goal name="VC iopp" expl="VC for iopp" proved="true">
+ <proof prover="2"><result status="valid" time="0.01"/></proof>
+ </goal>
+ <goal name="VC iinv" expl="VC for iinv" proved="true">
+ <proof prover="2"><result status="valid" time="0.01"/></proof>
+ </goal>
+ <goal name="C.A.Assoc" proved="true">
+ <proof prover="2"><result status="valid" time="0.01"/></proof>
+ </goal>
+ <goal name="C.A.Unit_def_l" proved="true">
+ <proof prover="2"><result status="valid" time="0.01"/></proof>
+ </goal>
+ <goal name="C.A.Unit_def_r" proved="true">
+ <proof prover="2"><result status="valid" time="0.01"/></proof>
+ </goal>
+ <goal name="C.A.Inv_def_l" proved="true">
+ <proof prover="2"><result status="valid" time="0.02"/></proof>
+ </goal>
+ <goal name="C.A.Inv_def_r" proved="true">
+ <proof prover="2"><result status="valid" time="0.02"/></proof>
+ </goal>
+ <goal name="C.A.Comm" proved="true">
+ <proof prover="2"><result status="valid" time="0.01"/></proof>
+ </goal>
+ <goal name="C.A.MulAssoc.Assoc" proved="true">
+ <proof prover="2"><result status="valid" time="0.01"/></proof>
+ </goal>
+ <goal name="C.A.Mul_distr_l" proved="true">
+ <proof prover="2"><result status="valid" time="0.01"/></proof>
+ </goal>
+ <goal name="C.A.Mul_distr_r" proved="true">
+ <proof prover="2"><result status="valid" time="0.01"/></proof>
+ </goal>
+ <goal name="C.A.MulComm.Comm" proved="true">
+ <proof prover="2"><result status="valid" time="0.01"/></proof>
+ </goal>
+ <goal name="C.A.Unitary" proved="true">
+ <proof prover="2"><result status="valid" time="0.01"/></proof>
+ </goal>
+ <goal name="C.A.NonTrivialRing" proved="true">
+ <proof prover="2"><result status="valid" time="0.01"/></proof>
+ </goal>
+ <goal name="C.A.ZeroLessOne" proved="true">
+ <proof prover="2"><result status="valid" time="0.01"/></proof>
+ </goal>
+ <goal name="C.A.CompatOrderAdd" proved="true">
+ <proof prover="2"><result status="valid" time="0.01"/></proof>
+ </goal>
+ <goal name="C.A.CompatOrderMult" proved="true">
+ <proof prover="2"><result status="valid" time="0.01"/></proof>
+ </goal>
+ <goal name="C.sub_def" proved="true">
+ <proof prover="2"><result status="valid" time="0.01"/></proof>
+ </goal>
+ <goal name="C.VC czero" expl="VC for czero" proved="true">
+ <proof prover="2"><result status="valid" time="0.01"/></proof>
+ </goal>
+ <goal name="C.VC cone" expl="VC for cone" proved="true">
+ <proof prover="2"><result status="valid" time="0.02"/></proof>
+ </goal>
+ <goal name="C.zero_def" proved="true">
+ <proof prover="2"><result status="valid" time="0.03"/></proof>
+ </goal>
+ <goal name="C.one_def" proved="true">
+ <proof prover="2"><result status="valid" time="0.02"/></proof>
+ </goal>
+ <goal name="C.VC add" expl="VC for add" proved="true">
+ <proof prover="2"><result status="valid" time="0.02"/></proof>
+ </goal>
+ <goal name="C.VC mul" expl="VC for mul" proved="true">
+ <proof prover="2"><result status="valid" time="0.02"/></proof>
+ </goal>
+ <goal name="C.VC opp" expl="VC for opp" proved="true">
+ <proof prover="2"><result status="valid" time="0.01"/></proof>
+ </goal>
+ <goal name="C.VC eq" expl="VC for eq" proved="true">
+ <proof prover="2"><result status="valid" time="0.01"/></proof>
+ </goal>
+ <goal name="C.VC inv" expl="VC for inv" proved="true">
+ <proof prover="2"><result status="valid" time="0.03"/></proof>
+ </goal>
+ <goal name="VC m_y" expl="VC for m_y" proved="true">
+ <proof prover="2"><result status="valid" time="0.01"/></proof>
+ </goal>
+ <goal name="VC m" expl="VC for m" proved="true">
+ <proof prover="0"><result status="valid" time="0.10" steps="114"/></proof>
+ </goal>
+ <goal name="VC m_cprod" expl="VC for m_cprod" proved="true">
+ <proof prover="0"><result status="valid" time="0.04" steps="201"/></proof>
+ </goal>
+ <goal name="VC m_expr" expl="VC for m_expr" proved="true">
+ <proof prover="0"><result status="valid" time="0.69" steps="2866"/></proof>
+ </goal>
+ <goal name="VC m_eq" expl="VC for m_eq" proved="true">
+ <proof prover="0"><result status="valid" time="0.04" steps="169"/></proof>
+ </goal>
+ <goal name="VC m_ctx" expl="VC for m_ctx" proved="true">
+ <proof prover="0"><result status="valid" time="0.31" steps="938"/></proof>
+ </goal>
+ <goal name="VC int_decision" expl="VC for int_decision" proved="true">
+ <transf name="split_vc" proved="true" >
+  <goal name="VC int_decision.0" expl="precondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.04"/></proof>
+  </goal>
+  <goal name="VC int_decision.1" expl="precondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC int_decision.2" expl="precondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.10"/></proof>
+  </goal>
+  <goal name="VC int_decision.3" expl="postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.12"/></proof>
+  </goal>
+  <goal name="VC int_decision.4" expl="exceptional postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC int_decision.5" expl="exceptional postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC int_decision.6" expl="exceptional postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.01"/></proof>
+  </goal>
+ </transf>
+ </goal>
+</theory>
+<theory name="Test" proved="true">
+ <goal name="g" proved="true">
+ <transf name="introduce_premises" proved="true" >
+  <goal name="g.0" proved="true">
+  <transf name="reflection_f" proved="true" arg1="decision">
+   <goal name="g.0.0" expl="reification check" proved="true">
+   <proof prover="2"><result status="valid" time="0.05"/></proof>
+   </goal>
+  </transf>
+  </goal>
+ </transf>
+ </goal>
+</theory>
+<theory name="TestInt" proved="true">
+ <goal name="g" proved="true">
+ <transf name="introduce_premises" proved="true" >
+  <goal name="g.0" proved="true">
+  <transf name="reflection_f" proved="true" arg1="int_decision">
+   <goal name="g.0.0" expl="reification check" proved="true">
+   <proof prover="2"><result status="valid" time="0.16"/></proof>
+   </goal>
+  </transf>
+  </goal>
+ </transf>
+ </goal>
+</theory>
+<theory name="MP64Coeffs" proved="true">
+ <goal name="VC mzero" expl="VC for mzero" proved="true">
+ <proof prover="2"><result status="valid" time="0.02"/></proof>
+ </goal>
+ <goal name="VC mone" expl="VC for mone" proved="true">
+ <proof prover="2"><result status="valid" time="0.01"/></proof>
+ </goal>
+ <goal name="qinterp_def" proved="true">
+ <transf name="compute_in_goal" proved="true" >
+ </transf>
+ </goal>
+ <goal name="VC opp_exp" expl="VC for opp_exp" proved="true">
+ <proof prover="0"><result status="valid" time="0.05" steps="182"/></proof>
+ </goal>
+ <goal name="VC add_sub_exp" expl="VC for add_sub_exp" proved="true">
+ <transf name="split_goal_right" proved="true" >
+  <goal name="VC add_sub_exp.0" expl="postcondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.01" steps="35"/></proof>
+  </goal>
+  <goal name="VC add_sub_exp.1" expl="postcondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.01" steps="22"/></proof>
+  </goal>
+  <goal name="VC add_sub_exp.2" expl="postcondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.02" steps="22"/></proof>
+  </goal>
+  <goal name="VC add_sub_exp.3" expl="variant decrease" proved="true">
+  <proof prover="2"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC add_sub_exp.4" expl="postcondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.06" steps="337"/></proof>
+  </goal>
+  <goal name="VC add_sub_exp.5" expl="variant decrease" proved="true">
+  <proof prover="2"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC add_sub_exp.6" expl="postcondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.03" steps="61"/></proof>
+  </goal>
+  <goal name="VC add_sub_exp.7" expl="exceptional postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.01"/></proof>
+  </goal>
+  <goal name="VC add_sub_exp.8" expl="exceptional postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.01"/></proof>
+  </goal>
+  <goal name="VC add_sub_exp.9" expl="variant decrease" proved="true">
+  <proof prover="2"><result status="valid" time="0.04"/></proof>
+  </goal>
+  <goal name="VC add_sub_exp.10" expl="postcondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.04" steps="344"/></proof>
+  </goal>
+  <goal name="VC add_sub_exp.11" expl="variant decrease" proved="true">
+  <proof prover="2"><result status="valid" time="0.05"/></proof>
+  </goal>
+  <goal name="VC add_sub_exp.12" expl="postcondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.10" steps="119"/></proof>
+  </goal>
+  <goal name="VC add_sub_exp.13" expl="exceptional postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.01"/></proof>
+  </goal>
+  <goal name="VC add_sub_exp.14" expl="exceptional postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.01"/></proof>
+  </goal>
+  <goal name="VC add_sub_exp.15" expl="postcondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.02" steps="49"/></proof>
+  </goal>
+  <goal name="VC add_sub_exp.16" expl="postcondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.02" steps="47"/></proof>
+  </goal>
+  <goal name="VC add_sub_exp.17" expl="exceptional postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.01"/></proof>
+  </goal>
+  <goal name="VC add_sub_exp.18" expl="postcondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.01" steps="39"/></proof>
+  </goal>
+  <goal name="VC add_sub_exp.19" expl="variant decrease" proved="true">
+  <proof prover="2"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC add_sub_exp.20" expl="postcondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.09" steps="341"/></proof>
+  </goal>
+  <goal name="VC add_sub_exp.21" expl="variant decrease" proved="true">
+  <proof prover="2"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC add_sub_exp.22" expl="postcondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.03" steps="61"/></proof>
+  </goal>
+  <goal name="VC add_sub_exp.23" expl="exceptional postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.01"/></proof>
+  </goal>
+  <goal name="VC add_sub_exp.24" expl="exceptional postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.01"/></proof>
+  </goal>
+  <goal name="VC add_sub_exp.25" expl="variant decrease" proved="true">
+  <proof prover="2"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC add_sub_exp.26" expl="postcondition" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC add_sub_exp.26.0" expl="postcondition" proved="true">
+   <transf name="split_goal_right" proved="true" >
+    <goal name="VC add_sub_exp.26.0.0" expl="postcondition" proved="true">
+    <proof prover="0"><result status="valid" time="0.04" steps="37"/></proof>
+    </goal>
+    <goal name="VC add_sub_exp.26.0.1" expl="postcondition" proved="true">
+    <proof prover="0"><result status="valid" time="0.02" steps="37"/></proof>
+    </goal>
+    <goal name="VC add_sub_exp.26.0.2" expl="postcondition" proved="true">
+    <proof prover="0"><result status="valid" time="0.03" steps="102"/></proof>
+    </goal>
+   </transf>
+   </goal>
+   <goal name="VC add_sub_exp.26.1" expl="postcondition" proved="true">
+   <transf name="split_goal_right" proved="true" >
+    <goal name="VC add_sub_exp.26.1.0" expl="postcondition" proved="true">
+    <proof prover="0"><result status="valid" time="0.02" steps="34"/></proof>
+    </goal>
+    <goal name="VC add_sub_exp.26.1.1" expl="postcondition" proved="true">
+    <proof prover="0"><result status="valid" time="0.02" steps="37"/></proof>
+    </goal>
+    <goal name="VC add_sub_exp.26.1.2" expl="postcondition" proved="true">
+    <proof prover="0"><result status="valid" time="0.02" steps="37"/></proof>
+    </goal>
+   </transf>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC add_sub_exp.27" expl="variant decrease" proved="true">
+  <proof prover="2"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC add_sub_exp.28" expl="postcondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.04" steps="119"/></proof>
+  </goal>
+  <goal name="VC add_sub_exp.29" expl="exceptional postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.01"/></proof>
+  </goal>
+  <goal name="VC add_sub_exp.30" expl="exceptional postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.01"/></proof>
+  </goal>
+  <goal name="VC add_sub_exp.31" expl="postcondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.03" steps="29"/></proof>
+  </goal>
+  <goal name="VC add_sub_exp.32" expl="postcondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.03" steps="49"/></proof>
+  </goal>
+  <goal name="VC add_sub_exp.33" expl="postcondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.02" steps="52"/></proof>
+  </goal>
+  <goal name="VC add_sub_exp.34" expl="postcondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.01" steps="18"/></proof>
+  </goal>
+  <goal name="VC add_sub_exp.35" expl="variant decrease" proved="true">
+  <proof prover="2"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC add_sub_exp.36" expl="postcondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.06" steps="386"/></proof>
+  </goal>
+  <goal name="VC add_sub_exp.37" expl="variant decrease" proved="true">
+  <proof prover="2"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC add_sub_exp.38" expl="postcondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.04" steps="67"/></proof>
+  </goal>
+  <goal name="VC add_sub_exp.39" expl="exceptional postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.01"/></proof>
+  </goal>
+  <goal name="VC add_sub_exp.40" expl="exceptional postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC add_sub_exp.41" expl="variant decrease" proved="true">
+  <proof prover="2"><result status="valid" time="0.04"/></proof>
+  </goal>
+  <goal name="VC add_sub_exp.42" expl="postcondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.05" steps="393"/></proof>
+  </goal>
+  <goal name="VC add_sub_exp.43" expl="variant decrease" proved="true">
+  <proof prover="2"><result status="valid" time="0.04"/></proof>
+  </goal>
+  <goal name="VC add_sub_exp.44" expl="postcondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.03" steps="132"/></proof>
+  </goal>
+  <goal name="VC add_sub_exp.45" expl="exceptional postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.01"/></proof>
+  </goal>
+  <goal name="VC add_sub_exp.46" expl="exceptional postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.01"/></proof>
+  </goal>
+  <goal name="VC add_sub_exp.47" expl="postcondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.02" steps="29"/></proof>
+  </goal>
+  <goal name="VC add_sub_exp.48" expl="postcondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.02" steps="17"/></proof>
+  </goal>
+  <goal name="VC add_sub_exp.49" expl="variant decrease" proved="true">
+  <proof prover="2"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC add_sub_exp.50" expl="postcondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.20" steps="1600"/></proof>
+  </goal>
+  <goal name="VC add_sub_exp.51" expl="variant decrease" proved="true">
+  <proof prover="2"><result status="valid" time="0.04"/></proof>
+  </goal>
+  <goal name="VC add_sub_exp.52" expl="postcondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.02" steps="148"/></proof>
+  </goal>
+  <goal name="VC add_sub_exp.53" expl="exceptional postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.01"/></proof>
+  </goal>
+  <goal name="VC add_sub_exp.54" expl="exceptional postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.01"/></proof>
+  </goal>
+  <goal name="VC add_sub_exp.55" expl="variant decrease" proved="true">
+  <proof prover="2"><result status="valid" time="0.04"/></proof>
+  </goal>
+  <goal name="VC add_sub_exp.56" expl="postcondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.19" steps="1703"/></proof>
+  </goal>
+  <goal name="VC add_sub_exp.57" expl="variant decrease" proved="true">
+  <proof prover="2"><result status="valid" time="0.04"/></proof>
+  </goal>
+  <goal name="VC add_sub_exp.58" expl="postcondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.03" steps="418"/></proof>
+  </goal>
+  <goal name="VC add_sub_exp.59" expl="exceptional postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.01"/></proof>
+  </goal>
+  <goal name="VC add_sub_exp.60" expl="exceptional postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC add_sub_exp.61" expl="exceptional postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC add_sub_exp.62" expl="variant decrease" proved="true">
+  <proof prover="2"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC add_sub_exp.63" expl="postcondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.06" steps="333"/></proof>
+  </goal>
+  <goal name="VC add_sub_exp.64" expl="variant decrease" proved="true">
+  <proof prover="2"><result status="valid" time="0.04"/></proof>
+  </goal>
+  <goal name="VC add_sub_exp.65" expl="postcondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.02" steps="94"/></proof>
+  </goal>
+  <goal name="VC add_sub_exp.66" expl="exceptional postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC add_sub_exp.67" expl="exceptional postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.01"/></proof>
+  </goal>
+  <goal name="VC add_sub_exp.68" expl="variant decrease" proved="true">
+  <proof prover="2"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC add_sub_exp.69" expl="postcondition" proved="true">
+  <transf name="eliminate_if" proved="true" >
+   <goal name="VC add_sub_exp.69.0" expl="postcondition" proved="true">
+   <transf name="split_goal_right" proved="true" >
+    <goal name="VC add_sub_exp.69.0.0" expl="postcondition" proved="true">
+    <transf name="split_goal_right" proved="true" >
+     <goal name="VC add_sub_exp.69.0.0.0" expl="postcondition" proved="true">
+     <proof prover="0"><result status="valid" time="0.02" steps="37"/></proof>
+     </goal>
+     <goal name="VC add_sub_exp.69.0.0.1" expl="postcondition" proved="true">
+     <proof prover="0"><result status="valid" time="0.02" steps="17"/></proof>
+     </goal>
+     <goal name="VC add_sub_exp.69.0.0.2" expl="postcondition" proved="true">
+     <proof prover="0"><result status="valid" time="0.02" steps="15"/></proof>
+     </goal>
+    </transf>
+    </goal>
+    <goal name="VC add_sub_exp.69.0.1" expl="postcondition" proved="true">
+    <transf name="split_goal_right" proved="true" >
+     <goal name="VC add_sub_exp.69.0.1.0" expl="postcondition" proved="true">
+     <proof prover="0"><result status="valid" time="0.02" steps="19"/></proof>
+     </goal>
+     <goal name="VC add_sub_exp.69.0.1.1" expl="postcondition" proved="true">
+     <proof prover="0"><result status="valid" time="0.01" steps="17"/></proof>
+     </goal>
+     <goal name="VC add_sub_exp.69.0.1.2" expl="postcondition" proved="true">
+     <proof prover="0"><result status="valid" time="0.02" steps="15"/></proof>
+     </goal>
+    </transf>
+    </goal>
+   </transf>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC add_sub_exp.70" expl="variant decrease" proved="true">
+  <proof prover="2"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC add_sub_exp.71" expl="postcondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.05" steps="206"/></proof>
+  </goal>
+  <goal name="VC add_sub_exp.72" expl="exceptional postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.01"/></proof>
+  </goal>
+  <goal name="VC add_sub_exp.73" expl="exceptional postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.01"/></proof>
+  </goal>
+  <goal name="VC add_sub_exp.74" expl="exceptional postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.01"/></proof>
+  </goal>
+  <goal name="VC add_sub_exp.75" expl="variant decrease" proved="true">
+  <proof prover="2"><result status="valid" time="0.04"/></proof>
+  </goal>
+  <goal name="VC add_sub_exp.76" expl="postcondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.02" steps="36"/></proof>
+  </goal>
+  <goal name="VC add_sub_exp.77" expl="variant decrease" proved="true">
+  <proof prover="2"><result status="valid" time="0.04"/></proof>
+  </goal>
+  <goal name="VC add_sub_exp.78" expl="postcondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.02" steps="18"/></proof>
+  </goal>
+  <goal name="VC add_sub_exp.79" expl="exceptional postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.00"/></proof>
+  </goal>
+  <goal name="VC add_sub_exp.80" expl="variant decrease" proved="true">
+  <proof prover="2"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC add_sub_exp.81" expl="postcondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.02" steps="16"/></proof>
+  </goal>
+  <goal name="VC add_sub_exp.82" expl="exceptional postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.01"/></proof>
+  </goal>
+  <goal name="VC add_sub_exp.83" expl="exceptional postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.01"/></proof>
+  </goal>
+  <goal name="VC add_sub_exp.84" expl="variant decrease" proved="true">
+  <proof prover="2"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC add_sub_exp.85" expl="postcondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.03" steps="36"/></proof>
+  </goal>
+  <goal name="VC add_sub_exp.86" expl="variant decrease" proved="true">
+  <proof prover="2"><result status="valid" time="0.04"/></proof>
+  </goal>
+  <goal name="VC add_sub_exp.87" expl="postcondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.02" steps="18"/></proof>
+  </goal>
+  <goal name="VC add_sub_exp.88" expl="exceptional postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.01"/></proof>
+  </goal>
+  <goal name="VC add_sub_exp.89" expl="variant decrease" proved="true">
+  <proof prover="2"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC add_sub_exp.90" expl="postcondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.02" steps="16"/></proof>
+  </goal>
+  <goal name="VC add_sub_exp.91" expl="exceptional postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.01"/></proof>
+  </goal>
+  <goal name="VC add_sub_exp.92" expl="exceptional postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.01"/></proof>
+  </goal>
+  <goal name="VC add_sub_exp.93" expl="postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.04"/></proof>
+  </goal>
+  <goal name="VC add_sub_exp.94" expl="exceptional postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.01"/></proof>
+  </goal>
+ </transf>
+ </goal>
+ <goal name="VC add_exp" expl="VC for add_exp" proved="true">
+ <proof prover="2"><result status="valid" time="0.02"/></proof>
+ <transf name="split_goal_right" proved="true" >
+  <goal name="VC add_exp.0" expl="postcondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.02" steps="7"/></proof>
+  </goal>
+  <goal name="VC add_exp.1" expl="exceptional postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.01"/></proof>
+  </goal>
+ </transf>
+ </goal>
+ <goal name="VC zero_exp" expl="VC for zero_exp" proved="true">
+ <transf name="split_goal_right" proved="true" >
+  <goal name="VC zero_exp.0" expl="variant decrease" proved="true">
+  <proof prover="2"><result status="valid" time="0.05"/></proof>
+  </goal>
+  <goal name="VC zero_exp.1" expl="variant decrease" proved="true">
+  <proof prover="2"><result status="valid" time="0.04"/></proof>
+  </goal>
+  <goal name="VC zero_exp.2" expl="variant decrease" proved="true">
+  <proof prover="2"><result status="valid" time="0.04"/></proof>
+  </goal>
+  <goal name="VC zero_exp.3" expl="variant decrease" proved="true">
+  <proof prover="2"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC zero_exp.4" expl="variant decrease" proved="true">
+  <proof prover="2"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC zero_exp.5" expl="postcondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.03" steps="46"/></proof>
+  </goal>
+  <goal name="VC zero_exp.6" expl="postcondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.01" steps="9"/></proof>
+  </goal>
+  <goal name="VC zero_exp.7" expl="exceptional postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.01"/></proof>
+  </goal>
+ </transf>
+ </goal>
+ <goal name="VC same_exp" expl="VC for same_exp" proved="true">
+ <transf name="split_goal_right" proved="true" >
+  <goal name="VC same_exp.0" expl="postcondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.08" steps="9"/></proof>
+  </goal>
+  <goal name="VC same_exp.1" expl="postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.04"/></proof>
+  </goal>
+  <goal name="VC same_exp.2" expl="exceptional postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC same_exp.3" expl="exceptional postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC same_exp.4" expl="postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.04"/></proof>
+  </goal>
+  <goal name="VC same_exp.5" expl="postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.05"/></proof>
+  </goal>
+  <goal name="VC same_exp.6" expl="exceptional postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC same_exp.7" expl="exceptional postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.01"/></proof>
+  </goal>
+  <goal name="VC same_exp.8" expl="variant decrease" proved="true">
+  <proof prover="2"><result status="valid" time="0.05"/></proof>
+  </goal>
+  <goal name="VC same_exp.9" expl="postcondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.02" steps="12"/></proof>
+  </goal>
+  <goal name="VC same_exp.10" expl="exceptional postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.01"/></proof>
+  </goal>
+  <goal name="VC same_exp.11" expl="postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.05"/></proof>
+  </goal>
+  <goal name="VC same_exp.12" expl="exceptional postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.01"/></proof>
+  </goal>
+  <goal name="VC same_exp.13" expl="exceptional postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.01"/></proof>
+  </goal>
+  <goal name="VC same_exp.14" expl="postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.04"/></proof>
+  </goal>
+  <goal name="VC same_exp.15" expl="exceptional postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC same_exp.16" expl="exceptional postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.02"/></proof>
+  </goal>
+ </transf>
+ </goal>
+ <goal name="VC madd" expl="VC for madd" proved="true">
+ <transf name="split_goal_right" proved="true" >
+  <goal name="VC madd.0" expl="postcondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.64" steps="161"/></proof>
+  </goal>
+  <goal name="VC madd.1" expl="postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.04"/></proof>
+  </goal>
+  <goal name="VC madd.2" expl="assertion" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC madd.2.0" expl="assertion" proved="true">
+   <proof prover="2"><result status="valid" time="0.05"/></proof>
+   </goal>
+   <goal name="VC madd.2.1" expl="assertion" proved="true">
+   <proof prover="3" timelimit="10"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC madd.2.2" expl="assertion" proved="true">
+   <proof prover="2"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC madd.2.3" expl="assertion" proved="true">
+   <proof prover="0"><result status="valid" time="0.03" steps="14"/></proof>
+   </goal>
+   <goal name="VC madd.2.4" expl="VC for madd" proved="true">
+   <proof prover="0"><result status="valid" time="0.03" steps="13"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC madd.3" expl="postcondition" proved="true">
+  <transf name="compute_in_goal" proved="true" >
+   <goal name="VC madd.3.0" expl="postcondition" proved="true">
+   <proof prover="2"><result status="valid" time="0.01"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC madd.4" expl="exceptional postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC madd.5" expl="exceptional postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC madd.6" expl="exceptional postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.01"/></proof>
+  </goal>
+ </transf>
+ </goal>
+ <goal name="VC mmul" expl="VC for mmul" proved="true">
+ <transf name="split_goal_right" proved="true" >
+  <goal name="VC mmul.0" expl="postcondition" proved="true">
+  <proof prover="3" timelimit="10"><result status="valid" time="0.07"/></proof>
+  </goal>
+  <goal name="VC mmul.1" expl="assertion" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC mmul.1.0" expl="assertion" proved="true">
+   <proof prover="2"><result status="valid" time="0.01"/></proof>
+   </goal>
+   <goal name="VC mmul.1.1" expl="VC for mmul" proved="true">
+   <proof prover="0"><result status="valid" time="0.03" steps="13"/></proof>
+   </goal>
+   <goal name="VC mmul.1.2" expl="VC for mmul" proved="true">
+   <proof prover="0"><result status="valid" time="0.03" steps="12"/></proof>
+   </goal>
+   <goal name="VC mmul.1.3" expl="VC for mmul" proved="true">
+   <proof prover="3" timelimit="10"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC mmul.1.4" expl="VC for mmul" proved="true">
+   <proof prover="0"><result status="valid" time="0.03" steps="9"/></proof>
+   </goal>
+   <goal name="VC mmul.1.5" expl="VC for mmul" proved="true">
+   <proof prover="0"><result status="valid" time="0.04" steps="12"/></proof>
+   </goal>
+   <goal name="VC mmul.1.6" expl="VC for mmul" proved="true">
+   <proof prover="0"><result status="valid" time="0.02" steps="13"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC mmul.2" expl="postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.01"/></proof>
+  </goal>
+  <goal name="VC mmul.3" expl="exceptional postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.01"/></proof>
+  </goal>
+  <goal name="VC mmul.4" expl="exceptional postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.01"/></proof>
+  </goal>
+ </transf>
+ </goal>
+ <goal name="VC mopp" expl="VC for mopp" proved="true">
+ <transf name="compute_in_goal" proved="true" >
+  <goal name="VC mopp.0" expl="VC for mopp" proved="true">
+  <proof prover="0"><result status="valid" time="0.03" steps="10"/></proof>
+  </goal>
+ </transf>
+ </goal>
+ <goal name="VC pure_same_exp" expl="VC for pure_same_exp" proved="true">
+ <proof prover="0"><result status="valid" time="0.24" steps="756"/></proof>
+ </goal>
+ <goal name="VC meq" expl="VC for meq" proved="true">
+ <transf name="split_goal_right" proved="true" >
+  <goal name="VC meq.0" expl="postcondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.67" steps="226"/></proof>
+  </goal>
+  <goal name="VC meq.1" expl="postcondition" proved="true">
+  <transf name="introduce_premises" proved="true" >
+   <goal name="VC meq.1.0" expl="postcondition" proved="true">
+   <transf name="inline_goal" proved="true" >
+    <goal name="VC meq.1.0.0" expl="postcondition" proved="true">
+    <proof prover="2"><result status="valid" time="0.14"/></proof>
+    </goal>
+   </transf>
+   </goal>
+  </transf>
+  </goal>
+ </transf>
+ </goal>
+ <goal name="VC minv" expl="VC for minv" proved="true">
+ <transf name="split_goal_right" proved="true" >
+  <goal name="VC minv.0" expl="precondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC minv.1" expl="postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.05"/></proof>
+  </goal>
+  <goal name="VC minv.2" expl="exceptional postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.02"/></proof>
+  </goal>
+ </transf>
+ </goal>
+</theory>
+<theory name="LinearDecisionRationalMP" proved="true">
+ <goal name="C.A.Assoc" proved="true">
+ <proof prover="2"><result status="valid" time="0.02"/></proof>
+ </goal>
+ <goal name="C.A.Unit_def_l" proved="true">
+ <proof prover="2"><result status="valid" time="0.02"/></proof>
+ </goal>
+ <goal name="C.A.Unit_def_r" proved="true">
+ <proof prover="2"><result status="valid" time="0.01"/></proof>
+ </goal>
+ <goal name="C.A.Inv_def_l" proved="true">
+ <proof prover="2"><result status="valid" time="0.01"/></proof>
+ </goal>
+ <goal name="C.A.Inv_def_r" proved="true">
+ <proof prover="2"><result status="valid" time="0.02"/></proof>
+ </goal>
+ <goal name="C.A.Comm" proved="true">
+ <proof prover="2"><result status="valid" time="0.01"/></proof>
+ </goal>
+ <goal name="C.A.MulAssoc.Assoc" proved="true">
+ <proof prover="2"><result status="valid" time="0.01"/></proof>
+ </goal>
+ <goal name="C.A.Mul_distr_l" proved="true">
+ <proof prover="2"><result status="valid" time="0.02"/></proof>
+ </goal>
+ <goal name="C.A.Mul_distr_r" proved="true">
+ <proof prover="2"><result status="valid" time="0.02"/></proof>
+ </goal>
+ <goal name="C.A.MulComm.Comm" proved="true">
+ <proof prover="2"><result status="valid" time="0.01"/></proof>
+ </goal>
+ <goal name="C.A.Unitary" proved="true">
+ <proof prover="2"><result status="valid" time="0.01"/></proof>
+ </goal>
+ <goal name="C.A.NonTrivialRing" proved="true">
+ <proof prover="2"><result status="valid" time="0.01"/></proof>
+ </goal>
+ <goal name="C.A.ZeroLessOne" proved="true">
+ <proof prover="2"><result status="valid" time="0.01"/></proof>
+ </goal>
+ <goal name="C.A.CompatOrderAdd" proved="true">
+ <proof prover="2"><result status="valid" time="0.01"/></proof>
+ </goal>
+ <goal name="C.A.CompatOrderMult" proved="true">
+ <proof prover="2"><result status="valid" time="0.01"/></proof>
+ </goal>
+ <goal name="C.sub_def" proved="true">
+ <proof prover="2"><result status="valid" time="0.01"/></proof>
+ </goal>
+ <goal name="C.VC czero" expl="VC for czero" proved="true">
+ <proof prover="2"><result status="valid" time="0.01"/></proof>
+ </goal>
+ <goal name="C.VC cone" expl="VC for cone" proved="true">
+ <proof prover="2"><result status="valid" time="0.01"/></proof>
+ </goal>
+ <goal name="C.zero_def" proved="true">
+ <proof prover="2"><result status="valid" time="0.02"/></proof>
+ </goal>
+ <goal name="C.one_def" proved="true">
+ <proof prover="0"><result status="valid" time="0.04" steps="17"/></proof>
+ </goal>
+ <goal name="C.VC add" expl="VC for add" proved="true">
+ <proof prover="2"><result status="valid" time="0.02"/></proof>
+ </goal>
+ <goal name="C.VC mul" expl="VC for mul" proved="true">
+ <proof prover="2"><result status="valid" time="0.02"/></proof>
+ </goal>
+ <goal name="C.VC opp" expl="VC for opp" proved="true">
+ <proof prover="2"><result status="valid" time="0.01"/></proof>
+ </goal>
+ <goal name="C.VC eq" expl="VC for eq" proved="true">
+ <proof prover="2"><result status="valid" time="0.01"/></proof>
+ </goal>
+ <goal name="C.VC inv" expl="VC for inv" proved="true">
+ <proof prover="2"><result status="valid" time="0.01"/></proof>
+ </goal>
+</theory>
+<theory name="LinearDecisionIntMP" proved="true">
+ <goal name="VC mpzero" expl="VC for mpzero" proved="true">
+ <proof prover="2"><result status="valid" time="0.02"/></proof>
+ </goal>
+ <goal name="VC mpone" expl="VC for mpone" proved="true">
+ <proof prover="2"><result status="valid" time="0.01"/></proof>
+ </goal>
+ <goal name="VC mpadd" expl="VC for mpadd" proved="true">
+ <proof prover="2"><result status="valid" time="0.02"/></proof>
+ </goal>
+ <goal name="VC mpmul" expl="VC for mpmul" proved="true">
+ <proof prover="2"><result status="valid" time="0.01"/></proof>
+ </goal>
+ <goal name="VC mpopp" expl="VC for mpopp" proved="true">
+ <proof prover="2"><result status="valid" time="0.01"/></proof>
+ </goal>
+ <goal name="VC mpeq" expl="VC for mpeq" proved="true">
+ <proof prover="2"><result status="valid" time="0.06"/></proof>
+ </goal>
+ <goal name="VC mpinv" expl="VC for mpinv" proved="true">
+ <proof prover="2"><result status="valid" time="0.01"/></proof>
+ </goal>
+ <goal name="C.A.Assoc" proved="true">
+ <proof prover="2"><result status="valid" time="0.01"/></proof>
+ </goal>
+ <goal name="C.A.Unit_def_l" proved="true">
+ <proof prover="2"><result status="valid" time="0.02"/></proof>
+ </goal>
+ <goal name="C.A.Unit_def_r" proved="true">
+ <proof prover="2"><result status="valid" time="0.02"/></proof>
+ </goal>
+ <goal name="C.A.Inv_def_l" proved="true">
+ <proof prover="2"><result status="valid" time="0.02"/></proof>
+ </goal>
+ <goal name="C.A.Inv_def_r" proved="true">
+ <proof prover="2"><result status="valid" time="0.02"/></proof>
+ </goal>
+ <goal name="C.A.Comm" proved="true">
+ <proof prover="2"><result status="valid" time="0.02"/></proof>
+ </goal>
+ <goal name="C.A.MulAssoc.Assoc" proved="true">
+ <proof prover="2"><result status="valid" time="0.02"/></proof>
+ </goal>
+ <goal name="C.A.Mul_distr_l" proved="true">
+ <proof prover="2"><result status="valid" time="0.02"/></proof>
+ </goal>
+ <goal name="C.A.Mul_distr_r" proved="true">
+ <proof prover="2"><result status="valid" time="0.02"/></proof>
+ </goal>
+ <goal name="C.A.MulComm.Comm" proved="true">
+ <proof prover="2"><result status="valid" time="0.02"/></proof>
+ </goal>
+ <goal name="C.A.Unitary" proved="true">
+ <proof prover="2"><result status="valid" time="0.02"/></proof>
+ </goal>
+ <goal name="C.A.NonTrivialRing" proved="true">
+ <proof prover="2"><result status="valid" time="0.01"/></proof>
+ </goal>
+ <goal name="C.A.ZeroLessOne" proved="true">
+ <proof prover="2"><result status="valid" time="0.02"/></proof>
+ </goal>
+ <goal name="C.A.CompatOrderAdd" proved="true">
+ <proof prover="2"><result status="valid" time="0.02"/></proof>
+ </goal>
+ <goal name="C.A.CompatOrderMult" proved="true">
+ <proof prover="2"><result status="valid" time="0.01"/></proof>
+ </goal>
+ <goal name="C.sub_def" proved="true">
+ <proof prover="2"><result status="valid" time="0.01"/></proof>
+ </goal>
+ <goal name="C.VC czero" expl="VC for czero" proved="true">
+ <proof prover="2"><result status="valid" time="0.02"/></proof>
+ </goal>
+ <goal name="C.VC cone" expl="VC for cone" proved="true">
+ <proof prover="2"><result status="valid" time="0.02"/></proof>
+ </goal>
+ <goal name="C.zero_def" proved="true">
+ <transf name="compute_in_goal" proved="true" >
+ </transf>
+ </goal>
+ <goal name="C.one_def" proved="true">
+ <proof prover="0"><result status="valid" time="0.04" steps="11"/></proof>
+ </goal>
+ <goal name="C.VC add" expl="VC for add" proved="true">
+ <proof prover="2"><result status="valid" time="0.02"/></proof>
+ </goal>
+ <goal name="C.VC mul" expl="VC for mul" proved="true">
+ <proof prover="2"><result status="valid" time="0.02"/></proof>
+ </goal>
+ <goal name="C.VC opp" expl="VC for opp" proved="true">
+ <proof prover="2"><result status="valid" time="0.02"/></proof>
+ </goal>
+ <goal name="C.VC eq" expl="VC for eq" proved="true">
+ <proof prover="2"><result status="valid" time="0.02"/></proof>
+ </goal>
+ <goal name="C.VC inv" expl="VC for inv" proved="true">
+ <proof prover="2"><result status="valid" time="0.02"/></proof>
+ </goal>
+ <goal name="VC m" expl="VC for m" proved="true">
+ <transf name="split_goal_right" proved="true" >
+  <goal name="VC m.0" expl="postcondition" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC m.0.0" expl="postcondition" proved="true">
+   <transf name="introduce_premises" proved="true" >
+    <goal name="VC m.0.0.0" expl="postcondition" proved="true">
+    <transf name="compute_in_goal" proved="true" >
+     <goal name="VC m.0.0.0.0" expl="postcondition" proved="true">
+     <proof prover="0"><result status="valid" time="0.08" steps="81"/></proof>
+     </goal>
+    </transf>
+    </goal>
+   </transf>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC m.1" expl="postcondition" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC m.1.0" expl="postcondition" proved="true">
+   <proof prover="0"><result status="valid" time="0.12" steps="116"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC m.2" expl="postcondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.08" steps="118"/></proof>
+  </goal>
+ </transf>
+ </goal>
+ <goal name="VC m_y" expl="VC for m_y" proved="true">
+ <proof prover="2"><result status="valid" time="0.01"/></proof>
+ </goal>
+ <goal name="VC m_cprod" expl="VC for m_cprod" proved="true">
+ <transf name="split_goal_right" proved="true" >
+  <goal name="VC m_cprod.0" expl="postcondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.06" steps="61"/></proof>
+  </goal>
+  <goal name="VC m_cprod.1" expl="postcondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.04" steps="67"/></proof>
+  </goal>
+ </transf>
+ </goal>
+ <goal name="VC m_expr" expl="VC for m_expr" proved="true">
+ <proof prover="0"><result status="valid" time="0.30" steps="1321"/></proof>
+ </goal>
+ <goal name="VC m_eq" expl="VC for m_eq" proved="true">
+ <proof prover="1"><result status="valid" time="0.30"/></proof>
+ </goal>
+ <goal name="VC m_ctx" expl="VC for m_ctx" proved="true">
+ <proof prover="0"><result status="valid" time="0.09" steps="719"/></proof>
+ </goal>
+ <goal name="VC mp_decision" expl="VC for mp_decision" proved="true">
+ <transf name="split_vc" proved="true" >
+  <goal name="VC mp_decision.0" expl="precondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC mp_decision.1" expl="precondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC mp_decision.2" expl="precondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.14"/></proof>
+  </goal>
+  <goal name="VC mp_decision.3" expl="postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.23"/></proof>
+  </goal>
+  <goal name="VC mp_decision.4" expl="exceptional postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.01"/></proof>
+  </goal>
+  <goal name="VC mp_decision.5" expl="exceptional postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.01"/></proof>
+  </goal>
+  <goal name="VC mp_decision.6" expl="exceptional postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.02"/></proof>
+  </goal>
+ </transf>
+ </goal>
+</theory>
+<theory name="EqPropMP" proved="true">
+ <goal name="VC expr_bound&#39;" expl="VC for expr_bound'" proved="true">
+ <transf name="split_goal_right" proved="true" >
+  <goal name="VC expr_bound&#39;.0" expl="variant decrease" proved="true">
+  <proof prover="0"><result status="valid" time="0.08" steps="200"/></proof>
+  </goal>
+  <goal name="VC expr_bound&#39;.1" expl="variant decrease" proved="true">
+  <proof prover="0"><result status="valid" time="0.07" steps="201"/></proof>
+  </goal>
+  <goal name="VC expr_bound&#39;.2" expl="variant decrease" proved="true">
+  <proof prover="0"><result status="valid" time="0.10" steps="200"/></proof>
+  </goal>
+  <goal name="VC expr_bound&#39;.3" expl="variant decrease" proved="true">
+  <proof prover="0"><result status="valid" time="0.10" steps="201"/></proof>
+  </goal>
+  <goal name="VC expr_bound&#39;.4" expl="variant decrease" proved="true">
+  <proof prover="0"><result status="valid" time="0.10" steps="200"/></proof>
+  </goal>
+  <goal name="VC expr_bound&#39;.5" expl="variant decrease" proved="true">
+  <proof prover="0"><result status="valid" time="0.10" steps="200"/></proof>
+  </goal>
+ </transf>
+ </goal>
+ <goal name="VC eq_bound&#39;" expl="VC for eq_bound'" proved="true">
+ <transf name="split_goal_right" proved="true" >
+ </transf>
+ </goal>
+ <goal name="VC ctx_bound&#39;" expl="VC for ctx_bound'" proved="true">
+ <transf name="split_goal_right" proved="true" >
+ </transf>
+ </goal>
+ <goal name="VC expr_bound_w&#39;" expl="VC for expr_bound_w'" proved="true">
+ <transf name="split_goal_right" proved="true" >
+  <goal name="VC expr_bound_w&#39;.0" expl="variant decrease" proved="true">
+  <proof prover="0"><result status="valid" time="0.10" steps="213"/></proof>
+  </goal>
+  <goal name="VC expr_bound_w&#39;.1" expl="precondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.10"/></proof>
+  </goal>
+  <goal name="VC expr_bound_w&#39;.2" expl="precondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.05" steps="51"/></proof>
+  </goal>
+  <goal name="VC expr_bound_w&#39;.3" expl="variant decrease" proved="true">
+  <proof prover="0"><result status="valid" time="0.10" steps="214"/></proof>
+  </goal>
+  <goal name="VC expr_bound_w&#39;.4" expl="precondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.06"/></proof>
+  </goal>
+  <goal name="VC expr_bound_w&#39;.5" expl="precondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.06" steps="52"/></proof>
+  </goal>
+  <goal name="VC expr_bound_w&#39;.6" expl="variant decrease" proved="true">
+  <proof prover="0"><result status="valid" time="0.07" steps="213"/></proof>
+  </goal>
+  <goal name="VC expr_bound_w&#39;.7" expl="precondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.06"/></proof>
+  </goal>
+  <goal name="VC expr_bound_w&#39;.8" expl="precondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.07" steps="51"/></proof>
+  </goal>
+  <goal name="VC expr_bound_w&#39;.9" expl="variant decrease" proved="true">
+  <proof prover="0"><result status="valid" time="0.10" steps="214"/></proof>
+  </goal>
+  <goal name="VC expr_bound_w&#39;.10" expl="precondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.08"/></proof>
+  </goal>
+  <goal name="VC expr_bound_w&#39;.11" expl="precondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.07" steps="52"/></proof>
+  </goal>
+  <goal name="VC expr_bound_w&#39;.12" expl="variant decrease" proved="true">
+  <proof prover="0"><result status="valid" time="0.07" steps="208"/></proof>
+  </goal>
+  <goal name="VC expr_bound_w&#39;.13" expl="precondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.06"/></proof>
+  </goal>
+  <goal name="VC expr_bound_w&#39;.14" expl="precondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.07" steps="51"/></proof>
+  </goal>
+  <goal name="VC expr_bound_w&#39;.15" expl="variant decrease" proved="true">
+  <proof prover="0"><result status="valid" time="0.09" steps="208"/></proof>
+  </goal>
+  <goal name="VC expr_bound_w&#39;.16" expl="precondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.08"/></proof>
+  </goal>
+  <goal name="VC expr_bound_w&#39;.17" expl="precondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.08" steps="51"/></proof>
+  </goal>
+  <goal name="VC expr_bound_w&#39;.18" expl="postcondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.11" steps="337"/></proof>
+  </goal>
+ </transf>
+ </goal>
+ <goal name="eq_bound_w&#39;" proved="true">
+ <proof prover="0"><result status="valid" time="0.09" steps="112"/></proof>
+ </goal>
+ <goal name="VC ctx_bound_w&#39;" expl="VC for ctx_bound_w'" proved="true">
+ <transf name="split_goal_right" proved="true" >
+  <goal name="VC ctx_bound_w&#39;.0" expl="variant decrease" proved="true">
+  <proof prover="2"><result status="valid" time="0.24"/></proof>
+  </goal>
+  <goal name="VC ctx_bound_w&#39;.1" expl="precondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.08" steps="52"/></proof>
+  </goal>
+  <goal name="VC ctx_bound_w&#39;.2" expl="precondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.07"/></proof>
+  </goal>
+  <goal name="VC ctx_bound_w&#39;.3" expl="postcondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.08" steps="106"/></proof>
+  </goal>
+ </transf>
+ </goal>
+ <goal name="VC max_var&#39;" expl="VC for max_var'" proved="true">
+ <transf name="split_goal_right" proved="true" >
+  <goal name="VC max_var&#39;.0" expl="variant decrease" proved="true">
+  <proof prover="0"><result status="valid" time="0.07" steps="211"/></proof>
+  </goal>
+  <goal name="VC max_var&#39;.1" expl="precondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.16"/></proof>
+  </goal>
+  <goal name="VC max_var&#39;.2" expl="variant decrease" proved="true">
+  <proof prover="0"><result status="valid" time="0.06" steps="213"/></proof>
+  </goal>
+  <goal name="VC max_var&#39;.3" expl="precondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.16"/></proof>
+  </goal>
+  <goal name="VC max_var&#39;.4" expl="variant decrease" proved="true">
+  <proof prover="0"><result status="valid" time="0.07" steps="211"/></proof>
+  </goal>
+  <goal name="VC max_var&#39;.5" expl="precondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.20"/></proof>
+  </goal>
+  <goal name="VC max_var&#39;.6" expl="variant decrease" proved="true">
+  <proof prover="0"><result status="valid" time="0.09" steps="213"/></proof>
+  </goal>
+  <goal name="VC max_var&#39;.7" expl="precondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.22"/></proof>
+  </goal>
+  <goal name="VC max_var&#39;.8" expl="variant decrease" proved="true">
+  <proof prover="0"><result status="valid" time="0.08" steps="206"/></proof>
+  </goal>
+  <goal name="VC max_var&#39;.9" expl="precondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.29"/></proof>
+  </goal>
+  <goal name="VC max_var&#39;.10" expl="variant decrease" proved="true">
+  <proof prover="0"><result status="valid" time="0.10" steps="206"/></proof>
+  </goal>
+  <goal name="VC max_var&#39;.11" expl="precondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.28"/></proof>
+  </goal>
+  <goal name="VC max_var&#39;.12" expl="postcondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.06" steps="170"/></proof>
+  </goal>
+  <goal name="VC max_var&#39;.13" expl="postcondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.15" steps="430"/></proof>
+  </goal>
+ </transf>
+ </goal>
+ <goal name="VC max_var_e&#39;" expl="VC for max_var_e'" proved="true">
+ <transf name="split_goal_right" proved="true" >
+  <goal name="VC max_var_e&#39;.0" expl="precondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.14"/></proof>
+  </goal>
+  <goal name="VC max_var_e&#39;.1" expl="precondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.16"/></proof>
+  </goal>
+  <goal name="VC max_var_e&#39;.2" expl="postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.29"/></proof>
+  </goal>
+  <goal name="VC max_var_e&#39;.3" expl="postcondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.06" steps="107"/></proof>
+  </goal>
+ </transf>
+ </goal>
+ <goal name="VC max_var_ctx&#39;" expl="VC for max_var_ctx'" proved="true">
+ <transf name="split_goal_right" proved="true" >
+  <goal name="VC max_var_ctx&#39;.0" expl="variant decrease" proved="true">
+  <proof prover="2"><result status="valid" time="0.16"/></proof>
+  </goal>
+  <goal name="VC max_var_ctx&#39;.1" expl="precondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.18"/></proof>
+  </goal>
+  <goal name="VC max_var_ctx&#39;.2" expl="precondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.22"/></proof>
+  </goal>
+  <goal name="VC max_var_ctx&#39;.3" expl="postcondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.06" steps="63"/></proof>
+  </goal>
+  <goal name="VC max_var_ctx&#39;.4" expl="postcondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.11" steps="166"/></proof>
+  </goal>
+ </transf>
+ </goal>
+ <goal name="VC interp_ctx_valid&#39;" expl="VC for interp_ctx_valid'" proved="true">
+ <transf name="split_goal_right" proved="true" >
+  <goal name="VC interp_ctx_valid&#39;.0" expl="variant decrease" proved="true">
+  <proof prover="2"><result status="valid" time="0.22"/></proof>
+  </goal>
+  <goal name="VC interp_ctx_valid&#39;.1" expl="postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.18"/></proof>
+  </goal>
+ </transf>
+ </goal>
+ <goal name="VC interp_ctx_wr&#39;" expl="VC for interp_ctx_wr'" proved="true">
+ <transf name="split_goal_right" proved="true" >
+  <goal name="VC interp_ctx_wr&#39;.0" expl="variant decrease" proved="true">
+  <proof prover="2"><result status="valid" time="0.23"/></proof>
+  </goal>
+  <goal name="VC interp_ctx_wr&#39;.1" expl="postcondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.12" steps="178"/></proof>
+  </goal>
+ </transf>
+ </goal>
+ <goal name="VC interp_ctx_wl&#39;" expl="VC for interp_ctx_wl'" proved="true">
+ <transf name="split_goal_right" proved="true" >
+  <goal name="VC interp_ctx_wl&#39;.0" expl="variant decrease" proved="true">
+  <proof prover="2"><result status="valid" time="0.25"/></proof>
+  </goal>
+  <goal name="VC interp_ctx_wl&#39;.1" expl="postcondition" proved="true">
+  <transf name="introduce_premises" proved="true" >
+   <goal name="VC interp_ctx_wl&#39;.1.0" expl="postcondition" proved="true">
+   <transf name="compute_in_goal" proved="true" >
+    <goal name="VC interp_ctx_wl&#39;.1.0.0" expl="postcondition" proved="true">
+    <proof prover="0"><result status="valid" time="0.22" steps="688"/></proof>
+    </goal>
+   </transf>
+   </goal>
+  </transf>
+  </goal>
+ </transf>
+ </goal>
+ <goal name="VC interp_ctx_cons&#39;" expl="VC for interp_ctx_cons'" proved="true">
+ <transf name="split_goal_right" proved="true" >
+  <goal name="VC interp_ctx_cons&#39;.0" expl="postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.18"/></proof>
+  </goal>
+ </transf>
+ </goal>
+ <goal name="VC holds_interp_ctx&#39;" expl="VC for holds_interp_ctx'" proved="true">
+ <transf name="split_goal_right" proved="true" >
+  <goal name="VC holds_interp_ctx&#39;.0" expl="variant decrease" proved="true">
+  <proof prover="2"><result status="valid" time="0.23"/></proof>
+  </goal>
+  <goal name="VC holds_interp_ctx&#39;.1" expl="precondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.09" steps="61"/></proof>
+  </goal>
+  <goal name="VC holds_interp_ctx&#39;.2" expl="postcondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.10" steps="60"/></proof>
+  </goal>
+ </transf>
+ </goal>
+ <goal name="VC interp_holds&#39;" expl="VC for interp_holds'" proved="true">
+ <transf name="split_goal_right" proved="true" >
+  <goal name="VC interp_holds&#39;.0" expl="variant decrease" proved="true">
+  <proof prover="2"><result status="valid" time="0.21"/></proof>
+  </goal>
+  <goal name="VC interp_holds&#39;.1" expl="precondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.08" steps="78"/></proof>
+  </goal>
+  <goal name="VC interp_holds&#39;.2" expl="precondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.08" steps="54"/></proof>
+  </goal>
+  <goal name="VC interp_holds&#39;.3" expl="postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.17"/></proof>
+  </goal>
+ </transf>
+ </goal>
+ <goal name="VC impl_holds&#39;" expl="VC for impl_holds'" proved="true">
+ <transf name="split_goal_right" proved="true" >
+  <goal name="VC impl_holds&#39;.0" expl="precondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.06" steps="75"/></proof>
+  </goal>
+  <goal name="VC impl_holds&#39;.1" expl="precondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.07"/></proof>
+  </goal>
+  <goal name="VC impl_holds&#39;.2" expl="variant decrease" proved="true">
+  <proof prover="2"><result status="valid" time="0.18"/></proof>
+  </goal>
+  <goal name="VC impl_holds&#39;.3" expl="precondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.07" steps="55"/></proof>
+  </goal>
+  <goal name="VC impl_holds&#39;.4" expl="precondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.10"/></proof>
+  </goal>
+  <goal name="VC impl_holds&#39;.5" expl="precondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.09"/></proof>
+  </goal>
+  <goal name="VC impl_holds&#39;.6" expl="postcondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.07" steps="89"/></proof>
+  </goal>
+ </transf>
+ </goal>
+ <goal name="VC ctx_impl&#39;" expl="VC for ctx_impl'" proved="true">
+ <transf name="split_goal_right" proved="true" >
+  <goal name="VC ctx_impl&#39;.0" expl="precondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.08"/></proof>
+  </goal>
+  <goal name="VC ctx_impl&#39;.1" expl="precondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.07"/></proof>
+  </goal>
+  <goal name="VC ctx_impl&#39;.2" expl="precondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC ctx_impl&#39;.3" expl="precondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.10"/></proof>
+  </goal>
+  <goal name="VC ctx_impl&#39;.4" expl="precondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC ctx_impl&#39;.5" expl="precondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC ctx_impl&#39;.6" expl="postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.21"/></proof>
+  </goal>
+ </transf>
+ </goal>
+ <goal name="VC interp_ctx_impl&#39;" expl="VC for interp_ctx_impl'" proved="true">
+ <transf name="split_goal_right" proved="true" >
+  <goal name="VC interp_ctx_impl&#39;.0" expl="variant decrease" proved="true">
+  <proof prover="2"><result status="valid" time="0.20"/></proof>
+  </goal>
+  <goal name="VC interp_ctx_impl&#39;.1" expl="precondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.19"/></proof>
+  </goal>
+  <goal name="VC interp_ctx_impl&#39;.2" expl="postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.22"/></proof>
+  </goal>
+ </transf>
+ </goal>
+ <goal name="VC impl_cons" expl="VC for impl_cons" proved="true">
+ <transf name="split_goal_right" proved="true" >
+  <goal name="VC impl_cons.0" expl="postcondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.06" steps="30"/></proof>
+  </goal>
+ </transf>
+ </goal>
+ <goal name="VC impl_wl&#39;" expl="VC for impl_wl'" proved="true">
+ <transf name="split_goal_right" proved="true" >
+  <goal name="VC impl_wl&#39;.0" expl="variant decrease" proved="true">
+  <proof prover="2"><result status="valid" time="0.19"/></proof>
+  </goal>
+  <goal name="VC impl_wl&#39;.1" expl="precondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.06" steps="52"/></proof>
+  </goal>
+  <goal name="VC impl_wl&#39;.2" expl="postcondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.12" steps="149"/></proof>
+  </goal>
+ </transf>
+ </goal>
+ <goal name="VC impl_self" expl="VC for impl_self" proved="true">
+ <transf name="split_goal_right" proved="true" >
+  <goal name="VC impl_self.0" expl="variant decrease" proved="true">
+  <proof prover="2"><result status="valid" time="0.16"/></proof>
+  </goal>
+  <goal name="VC impl_self.1" expl="precondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.16"/></proof>
+  </goal>
+  <goal name="VC impl_self.2" expl="postcondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.08" steps="155"/></proof>
+  </goal>
+ </transf>
+ </goal>
+ <goal name="VC prop_ctx" expl="VC for prop_ctx" proved="true">
+ <transf name="split_goal_right" proved="true" >
+  <goal name="VC prop_ctx.0" expl="precondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.10"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.1" expl="precondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.08"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.2" expl="array creation size" proved="true">
+  <proof prover="2"><result status="valid" time="0.20"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.3" expl="variant decrease" proved="true">
+  <proof prover="0"><result status="valid" time="0.13" steps="248"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.4" expl="variant decrease" proved="true">
+  <proof prover="0"><result status="valid" time="0.11" steps="254"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.5" expl="variant decrease" proved="true">
+  <proof prover="0"><result status="valid" time="0.13" steps="248"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.6" expl="variant decrease" proved="true">
+  <proof prover="0"><result status="valid" time="0.14" steps="254"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.7" expl="postcondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.30" steps="956"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.8" expl="postcondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.13" steps="167"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.9" expl="assertion" proved="true">
+  <proof prover="0"><result status="valid" time="0.18" steps="498"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.10" expl="index in array bounds" proved="true">
+  <proof prover="0"><result status="valid" time="0.15" steps="455"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.11" expl="postcondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.33" steps="491"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.12" expl="postcondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.14" steps="162"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.13" expl="assertion" proved="true">
+  <proof prover="0"><result status="valid" time="0.24" steps="474"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.14" expl="index in array bounds" proved="true">
+  <proof prover="0"><result status="valid" time="0.18" steps="439"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.15" expl="postcondition" proved="true">
+  <proof prover="0" timelimit="5" memlimit="2000"><result status="valid" time="3.42" steps="4075"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.16" expl="postcondition" proved="true">
+  <proof prover="0" timelimit="5" memlimit="2000"><result status="valid" time="0.11" steps="162"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.17" expl="assertion" proved="true">
+  <proof prover="0"><result status="valid" time="0.20" steps="474"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.18" expl="index in array bounds" proved="true">
+  <proof prover="0"><result status="valid" time="0.24" steps="439"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.19" expl="postcondition" proved="true">
+  <proof prover="0" timelimit="5" memlimit="2000"><result status="valid" time="3.17" steps="3992"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.20" expl="postcondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.15" steps="257"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.21" expl="postcondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.13" steps="30"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.22" expl="variant decrease" proved="true">
+  <proof prover="2"><result status="valid" time="0.32"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.23" expl="precondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.18"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.24" expl="precondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.10" steps="69"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.25" expl="precondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.08" steps="75"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.26" expl="postcondition" proved="true">
+  <proof prover="0" timelimit="5" memlimit="2000"><result status="valid" time="0.10" steps="100"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.27" expl="precondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.27"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.28" expl="precondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.24"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.29" expl="array creation size" proved="true">
+  <proof prover="2"><result status="valid" time="0.19"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.30" expl="postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.15"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.31" expl="postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.32" expl="postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.01"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.33" expl="variant decrease" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC prop_ctx.33.0" expl="VC for prop_ctx" proved="true">
+   <proof prover="2"><result status="valid" time="0.29"/></proof>
+   </goal>
+   <goal name="VC prop_ctx.33.1" expl="VC for prop_ctx" proved="true">
+   <proof prover="2"><result status="valid" time="0.08"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC prop_ctx.34" expl="precondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.14"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.35" expl="precondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.09"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.36" expl="postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.09"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.37" expl="postcondition" proved="true">
+  <proof prover="0"><result status="valid" time="1.42" steps="602"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.38" expl="postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.21"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.39" expl="exceptional postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.01"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.40" expl="exceptional postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.41" expl="postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.04"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.42" expl="postcondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.82" steps="473"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.43" expl="postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.01"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.44" expl="exceptional postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.01"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.45" expl="exceptional postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.46" expl="variant decrease" proved="true">
+  <proof prover="0"><result status="valid" time="0.20" steps="352"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.47" expl="precondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.11"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.48" expl="precondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.08"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.49" expl="variant decrease" proved="true">
+  <proof prover="0"><result status="valid" time="0.15" steps="365"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.50" expl="precondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.04"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.51" expl="precondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.27"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.52" expl="postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.05"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.53" expl="postcondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.07" steps="112"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.54" expl="postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.22"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.55" expl="exceptional postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.56" expl="exceptional postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.57" expl="variant decrease" proved="true">
+  <proof prover="0"><result status="valid" time="0.12" steps="352"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.58" expl="precondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.09"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.59" expl="precondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.08"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.60" expl="variant decrease" proved="true">
+  <proof prover="0"><result status="valid" time="0.19" steps="365"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.61" expl="precondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.06"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.62" expl="precondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.33"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.63" expl="postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.04"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.64" expl="postcondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.06" steps="114"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.65" expl="postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.34"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.66" expl="exceptional postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.67" expl="exceptional postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.01"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.68" expl="variant decrease" proved="true">
+  <proof prover="0"><result status="valid" time="0.12" steps="347"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.69" expl="precondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.16"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.70" expl="precondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.16"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.71" expl="postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.04"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.72" expl="postcondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.06" steps="107"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.73" expl="postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.32"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.74" expl="exceptional postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.75" expl="assertion" proved="true">
+  <transf name="split_vc" proved="true" >
+   <goal name="VC prop_ctx.75.0" expl="VC for prop_ctx" proved="true">
+   <proof prover="0"><result status="valid" time="0.05" steps="90"/></proof>
+   </goal>
+   <goal name="VC prop_ctx.75.1" expl="VC for prop_ctx" proved="true">
+   <proof prover="2"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC prop_ctx.75.2" expl="VC for prop_ctx" proved="true">
+   <proof prover="0"><result status="valid" time="0.06" steps="44"/></proof>
+   </goal>
+   <goal name="VC prop_ctx.75.3" expl="VC for prop_ctx" proved="true">
+   <transf name="unfold" proved="true" arg1="numof">
+    <goal name="VC prop_ctx.75.3.0" expl="VC for prop_ctx" proved="true">
+    <transf name="split_all_full" proved="true" >
+     <goal name="VC prop_ctx.75.3.0.0" expl="VC for prop_ctx" proved="true">
+     <proof prover="1" timelimit="10" memlimit="4000"><result status="valid" time="10.72"/></proof>
+     </goal>
+    </transf>
+    </goal>
+   </transf>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC prop_ctx.76" expl="index in array bounds" proved="true">
+  <proof prover="2"><result status="valid" time="0.26"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.77" expl="postcondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.14" steps="39"/></proof>
+  <proof prover="2"><result status="valid" time="0.08"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.78" expl="postcondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.07" steps="44"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.79" expl="postcondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.08" steps="104"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.80" expl="precondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.07"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.81" expl="precondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.13"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.82" expl="index in array bounds" proved="true">
+  <proof prover="2"><result status="valid" time="0.23"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.83" expl="postcondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.31" steps="445"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.84" expl="postcondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.11" steps="158"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.85" expl="postcondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.09" steps="181"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.86" expl="exceptional postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.87" expl="exceptional postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.88" expl="loop invariant init" proved="true">
+  <proof prover="2"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.89" expl="index in array bounds" proved="true">
+  <proof prover="2"><result status="valid" time="0.28"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.90" expl="precondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.10"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.91" expl="precondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.92" expl="loop invariant preservation" proved="true">
+  <proof prover="2"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.93" expl="exceptional postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.01"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.94" expl="loop invariant preservation" proved="true">
+  <proof prover="2"><result status="valid" time="0.10"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.95" expl="postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.96" expl="postcondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.19" steps="154"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.97" expl="exceptional postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.98" expl="variant decrease" proved="true">
+  <proof prover="0"><result status="valid" time="0.09" steps="225"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.99" expl="variant decrease" proved="true">
+  <proof prover="0"><result status="valid" time="0.08" steps="225"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.100" expl="postcondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.10" steps="85"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.101" expl="exceptional postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.01"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.102" expl="exceptional postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.01"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.103" expl="variant decrease" proved="true">
+  <proof prover="0"><result status="valid" time="0.08" steps="225"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.104" expl="variant decrease" proved="true">
+  <proof prover="0"><result status="valid" time="0.11" steps="225"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.105" expl="postcondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.08" steps="87"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.106" expl="exceptional postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.01"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.107" expl="exceptional postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.108" expl="variant decrease" proved="true">
+  <proof prover="0"><result status="valid" time="0.09" steps="221"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.109" expl="postcondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.10" steps="85"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.110" expl="exceptional postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.01"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.111" expl="postcondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.10" steps="40"/></proof>
+  <proof prover="2"><result status="valid" time="0.20"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.112" expl="postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.113" expl="postcondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.10" steps="125"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.114" expl="postcondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.10" steps="98"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.115" expl="exceptional postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.01"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.116" expl="postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.16"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.117" expl="postcondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.08" steps="37"/></proof>
+  <proof prover="2"><result status="valid" time="0.16"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.118" expl="postcondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.18" steps="167"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.119" expl="postcondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.10" steps="91"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.120" expl="exceptional postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.01"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.121" expl="variant decrease" proved="true">
+  <proof prover="0"><result status="valid" time="0.06" steps="83"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.122" expl="variant decrease" proved="true">
+  <proof prover="0"><result status="valid" time="0.06" steps="83"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.123" expl="postcondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.11" steps="91"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.124" expl="postcondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.11" steps="190"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.125" expl="exceptional postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.126" expl="exceptional postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.127" expl="postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.13"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.128" expl="postcondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.09" steps="39"/></proof>
+  <proof prover="2"><result status="valid" time="0.24"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.129" expl="postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.07"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.130" expl="postcondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.10" steps="19"/></proof>
+  <proof prover="2"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.131" expl="variant decrease" proved="true">
+  <proof prover="0"><result status="valid" time="0.14" steps="293"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.132" expl="precondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.07" steps="77"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.133" expl="precondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.16"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.134" expl="postcondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.10" steps="42"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.135" expl="postcondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.27" steps="142"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.136" expl="postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.17"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.137" expl="postcondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.09" steps="217"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.138" expl="exceptional postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.139" expl="exceptional postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.140" expl="variant decrease" proved="true">
+  <proof prover="0"><result status="valid" time="0.14" steps="293"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.141" expl="precondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.06" steps="77"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.142" expl="precondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.16"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.143" expl="postcondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.08" steps="42"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.144" expl="postcondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.29" steps="142"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.145" expl="postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.15"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.146" expl="postcondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.12" steps="217"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.147" expl="exceptional postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.148" expl="exceptional postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.149" expl="variant decrease" proved="true">
+  <proof prover="0"><result status="valid" time="0.11" steps="303"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.150" expl="precondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.08" steps="77"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.151" expl="precondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.15"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.152" expl="variant decrease" proved="true">
+  <proof prover="0"><result status="valid" time="0.18" steps="310"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.153" expl="precondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.06" steps="79"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.154" expl="precondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.22"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.155" expl="postcondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.09" steps="44"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.156" expl="postcondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.12" steps="146"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.157" expl="postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.16"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.158" expl="postcondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.12" steps="228"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.159" expl="exceptional postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.160" expl="exceptional postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.161" expl="variant decrease" proved="true">
+  <proof prover="0"><result status="valid" time="0.13" steps="303"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.162" expl="precondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.10" steps="77"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.163" expl="precondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.26"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.164" expl="variant decrease" proved="true">
+  <proof prover="0"><result status="valid" time="0.14" steps="310"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.165" expl="precondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.09" steps="79"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.166" expl="precondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.22"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.167" expl="postcondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.09" steps="44"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.168" expl="postcondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.14" steps="150"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.169" expl="postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.25"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.170" expl="postcondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.12" steps="228"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.171" expl="exceptional postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.01"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.172" expl="exceptional postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.01"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.173" expl="postcondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.10" steps="37"/></proof>
+  <proof prover="2"><result status="valid" time="0.32"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.174" expl="postcondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.08" steps="95"/></proof>
+  <proof prover="2"><result status="valid" time="0.16"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.175" expl="postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.19"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.176" expl="postcondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.10" steps="99"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.177" expl="exceptional postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.178" expl="precondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.10" steps="36"/></proof>
+  <proof prover="2"><result status="valid" time="0.16"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.179" expl="precondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.23"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.180" expl="precondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.06" steps="38"/></proof>
+  <proof prover="2"><result status="valid" time="0.16"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.181" expl="precondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.15"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.182" expl="postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.26"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.183" expl="postcondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.31" steps="330"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.184" expl="postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.27"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.185" expl="postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.27"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.186" expl="exceptional postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.187" expl="exceptional postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.188" expl="postcondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.14" steps="37"/></proof>
+  <proof prover="2"><result status="valid" time="0.28"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.189" expl="postcondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.09" steps="38"/></proof>
+  <proof prover="2"><result status="valid" time="0.23"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.190" expl="postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.12"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.191" expl="postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.192" expl="postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.17"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.193" expl="precondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.09" steps="82"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.194" expl="precondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.25"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.195" expl="variant decrease" proved="true">
+  <proof prover="2"><result status="valid" time="0.18"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.196" expl="precondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.10" steps="85"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.197" expl="precondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.10" steps="86"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.198" expl="precondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.20"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.199" expl="postcondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.09" steps="48"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.200" expl="postcondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.12" steps="141"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.201" expl="postcondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.05" steps="52"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.202" expl="postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.24"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.203" expl="postcondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.08" steps="264"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.204" expl="exceptional postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.205" expl="exceptional postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.206" expl="precondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.22"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.207" expl="precondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.12"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.208" expl="precondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.21"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.209" expl="precondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.19"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.210" expl="precondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.04"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.211" expl="postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.04"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.212" expl="postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.27"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.213" expl="postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.21"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.214" expl="exceptional postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.215" expl="exceptional postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.01"/></proof>
+  </goal>
+  <goal name="VC prop_ctx.216" expl="out of loop bounds" proved="true">
+  <proof prover="2"><result status="valid" time="0.19"/></proof>
+  </goal>
+ </transf>
+ </goal>
+ <goal name="VC prop_mp_decision" expl="VC for prop_mp_decision" proved="true">
+ <transf name="split_goal_right" proved="true" >
+  <goal name="VC prop_mp_decision.0" expl="precondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.08"/></proof>
+  </goal>
+  <goal name="VC prop_mp_decision.1" expl="precondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.10"/></proof>
+  </goal>
+  <goal name="VC prop_mp_decision.2" expl="precondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.06"/></proof>
+  </goal>
+  <goal name="VC prop_mp_decision.3" expl="precondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.07"/></proof>
+  </goal>
+  <goal name="VC prop_mp_decision.4" expl="precondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.14"/></proof>
+  </goal>
+  <goal name="VC prop_mp_decision.5" expl="postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.22"/></proof>
+  </goal>
+  <goal name="VC prop_mp_decision.6" expl="exceptional postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC prop_mp_decision.7" expl="exceptional postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC prop_mp_decision.8" expl="exceptional postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC prop_mp_decision.9" expl="exceptional postcondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.02"/></proof>
+  </goal>
+ </transf>
+ </goal>
+</theory>
+<theory name="TestMP" proved="true">
+ <goal name="g" proved="true">
+ <transf name="introduce_premises" proved="true" >
+  <goal name="g.0" proved="true">
+  <transf name="reflection_f" proved="true" arg1="mp_decision">
+   <goal name="g.0.0" expl="reification check" proved="true">
+   <proof prover="0"><result status="valid" time="0.04" steps="53"/></proof>
+   </goal>
+   <goal name="g.0.1" proved="true">
+   <proof prover="2"><result status="valid" time="0.24"/></proof>
+   </goal>
+   <goal name="g.0.2" proved="true">
+   <proof prover="2"><result status="valid" time="0.24"/></proof>
+   </goal>
+  </transf>
+  </goal>
+ </transf>
+ </goal>
+ <goal name="g&#39;" proved="true">
+ <transf name="introduce_premises" proved="true" >
+  <goal name="g&#39;.0" proved="true">
+  <transf name="reflection_f" proved="true" arg1="prop_mp_decision">
+   <goal name="g&#39;.0.0" expl="reification check" proved="true">
+   <proof prover="0"><result status="valid" time="0.08" steps="49"/></proof>
+   </goal>
+   <goal name="g&#39;.0.1" proved="true">
+   <proof prover="2"><result status="valid" time="0.19"/></proof>
+   </goal>
+   <goal name="g&#39;.0.2" proved="true">
+   <proof prover="2"><result status="valid" time="0.16"/></proof>
+   </goal>
+   <goal name="g&#39;.0.3" proved="true">
+   <proof prover="2"><result status="valid" time="0.16"/></proof>
+   </goal>
+  </transf>
+  <transf name="subst" proved="true" arg1="j">
+   <goal name="g&#39;.0.0" proved="true">
+   <transf name="reflection_f" proved="true" arg1="mp_decision">
+    <goal name="g&#39;.0.0.0" expl="reification check" proved="true">
+    <proof prover="0"><result status="valid" time="0.08" steps="47"/></proof>
+    </goal>
+    <goal name="g&#39;.0.0.1" proved="true">
+    <proof prover="2"><result status="valid" time="0.17"/></proof>
+    </goal>
+    <goal name="g&#39;.0.0.2" proved="true">
+    <proof prover="2"><result status="valid" time="0.19"/></proof>
+    </goal>
+   </transf>
+   </goal>
+  </transf>
+  </goal>
+ </transf>
+ </goal>
+ <goal name="g&#39;&#39;" proved="true">
+ <transf name="introduce_premises" proved="true" >
+  <goal name="g&#39;&#39;.0" proved="true">
+  <transf name="replace" proved="true" arg1="c" arg2="0">
+   <goal name="g&#39;&#39;.0.0" proved="true">
+   <transf name="replace" proved="true" arg1="c" arg2="0" arg3="in" arg4="H2">
+    <goal name="g&#39;&#39;.0.0.0" proved="true">
+    <transf name="reflection_f" proved="true" arg1="mp_decision">
+     <goal name="g&#39;&#39;.0.0.0.0" expl="reification check" proved="true">
+     <proof prover="0"><result status="valid" time="0.05" steps="49"/></proof>
+     </goal>
+     <goal name="g&#39;&#39;.0.0.0.1" proved="true">
+     <proof prover="2"><result status="valid" time="0.25"/></proof>
+     </goal>
+     <goal name="g&#39;&#39;.0.0.0.2" proved="true">
+     <proof prover="2"><result status="valid" time="0.26"/></proof>
+     </goal>
+    </transf>
+    </goal>
+    <goal name="g&#39;&#39;.0.0.1" proved="true">
+    <proof prover="2"><result status="valid" time="0.02"/></proof>
+    </goal>
+   </transf>
+   </goal>
+   <goal name="g&#39;&#39;.0.1" proved="true">
+   <proof prover="2"><result status="valid" time="0.02"/></proof>
+   </goal>
+  </transf>
+  </goal>
+ </transf>
+ </goal>
+</theory>
+<theory name="Test2">
+ <goal name="g">
+ <transf name="introduce_premises" >
+  <goal name="g.0">
+  <transf name="reflection_f" arg1="int_decision">
+   <goal name="g.0.0" expl="reification check" proved="true">
+   <proof prover="2"><result status="valid" time="0.14"/></proof>
+   </goal>
+   <goal name="g.0.1">
+   </goal>
+  </transf>
+  </goal>
+ </transf>
+ </goal>
+</theory>
+<theory name="Fmla" proved="true">
+ <goal name="VC f" expl="VC for f" proved="true">
+ <proof prover="2"><result status="valid" time="0.02"/></proof>
+ </goal>
+</theory>
+<theory name="TestFmla">
+ <goal name="g">
+ <transf name="introduce_premises" >
+  <goal name="g.0">
+  <transf name="reflection_f" arg1="f">
+   <goal name="g.0.0" expl="reification check" proved="true">
+   <proof prover="2"><result status="valid" time="0.01"/></proof>
+   </goal>
+   <goal name="g.0.1">
+   </goal>
+  </transf>
+  </goal>
+ </transf>
+ </goal>
+</theory>
+</file>
+</why3session>
diff --git a/examples/multiprecision/lineardecision/why3shapes.gz b/examples/multiprecision/lineardecision/why3shapes.gz
new file mode 100644
index 0000000000000000000000000000000000000000..d69103c28b5533853f1c0ed2f1e49a28e3635a05
GIT binary patch
literal 55540
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
Jb#oaD0|24Y(a`_^

literal 0
HcmV?d00001

diff --git a/examples/multiprecision/logical.mlw b/examples/multiprecision/logical.mlw
new file mode 100644
index 0000000000..f13301d839
--- /dev/null
+++ b/examples/multiprecision/logical.mlw
@@ -0,0 +1,389 @@
+module Logical
+
+  use import int.Int
+  use import mach.int.Int32
+  use import mach.int.UInt64GMP as Limb
+  use import int.Power
+  use import ref.Ref
+  use import mach.c.C
+  use import array.Array
+  use import map.Map
+  use import types.Types
+  use import lemmas.Lemmas
+  use import int.EuclideanDivision
+
+  let lemma pow2_64 ()
+    ensures { power 2 64 = radix }
+  =
+    assert { power 2 2 = 4 };
+    assert { power 2 4 = (power 2 2)*(power 2 2) };
+    assert { power 2 8 = (power 2 4)*(power 2 4) };
+    assert { power 2 16 = (power 2 8)*(power 2 8) };
+    assert { power 2 32 = (power 2 16)*(power 2 16) };
+    assert { power 2 64 = (power 2 32)*(power 2 32) = radix}
+
+  (* is a logical lemma in ComputerDivision*)
+  let lemma mod_mult (x y z:int)
+    requires { x > 0 }
+    ensures { mod (x * y + z) x = mod z x }
+  =
+    ()
+
+  let lsld_ext (x cnt:limb) : (limb,limb)
+    requires { 0 <= cnt < Limb.length }
+    returns { (r,d) -> uint64'int r + radix * uint64'int d = (power 2 cnt) * x }
+    returns { (r,_d) -> mod (l2i r) (power 2 cnt) = 0 }
+    returns { (r,_d) -> l2i r <= radix - (power 2 cnt) }
+    returns { (_r,d) -> l2i d < power 2 cnt }
+  =
+    let uzero = Limb.of_int 0 in
+    if (Limb.(=) cnt uzero) then (x, uzero)
+    else
+    begin
+    let (r:limb,d:limb) = lsld x cnt in
+    let ghost p = power 2 (l2i cnt) in
+    let ghost q = power 2 (Limb.length - l2i cnt) in
+    assert { p > 0 /\ q > 0 };
+    assert { radix = p * q by
+                radix = power 2 Limb.length = power 2 (cnt + (Limb.length - cnt))
+                = p*q };
+    assert { mod radix p = 0
+             by mod radix p
+                = mod (p * q + 0) p
+                = mod 0 p
+                = 0 };
+    assert { r < radix };
+    mod_mult p (q*l2i d) (l2i r);
+    mod_mult p (l2i x) 0;
+    assert { mod (r) p = 0
+             by
+             mod (r) p = mod (p * (q * d) + r) p
+             so p * (q * d) = radix * d
+             so mod (r) p = mod (radix * d + r) p
+                = mod (p * x) p
+                = mod 0 p
+                = 0 };
+    assert { r <= radix - p
+             by
+             r = p * (div (r) p) + (mod (r) p)
+                   = p * (div (r) p)
+             so
+             radix = p * q
+             so
+             r < radix
+             so (div (r) p >= q -> (r = p * div (r) p >= p*q = radix)
+                                   -> false)
+             so div (r) p <= q-1
+             so r = p * div (r) p <= p * (q-1) = p*q - p = radix - p };
+    assert { d < p
+             by
+             r + radix * d = p * x
+             so
+             radix * d <= p * x
+             so
+             x < radix /\ p > 0
+             so p * x < p * radix
+             so radix * d < p * radix
+             so d < p
+             };
+    (r,d)
+    end
+
+  let clz_ext (x:limb) : int32
+    requires { x > 0 }
+    ensures { power 2 result * x < radix }
+    ensures { 2 * power 2 result * x >= radix }
+    ensures { 0 <= result < Limb.length }
+    ensures { power 2 result * x <= radix - power 2 result }
+  =
+    let r = count_leading_zeros x in
+    let ghost p = power 2 (p2i r) in
+    let ghost q = power 2 (Limb.length - p2i r) in
+    assert { p * x <= radix - p
+             by
+             p * q = radix
+             so p > 0 so q > 0
+             so mod radix p = mod (q * p) p = 0
+             so mod (p * x) p = 0
+             so p * x < p * q
+             so (x < q by p > 0)
+             so radix - p = p * (q - 1)
+             so x <= q - 1
+             so p * x <= p * (q - 1)
+           };
+    r
+
+  (** [lshift r x sz cnt] shifts [(x,sz)] [cnt] bits to the left and
+      writes the result in [(r, sz)]. Returns the [cnt] most significant
+      bits of [(x, sz)]. Corresponds to [mpn_lshift]. *)
+  (*TODO overlapping allowed if r >= x*)
+  let lshift (r x:t) (sz:int32) (cnt:limb) : limb
+    requires { 0 < cnt < Limb.length }
+    requires { valid r sz }
+    requires { valid x sz }
+    requires { 0 < sz }
+    ensures { value r sz + (power radix sz) * result =
+              value x sz * (power 2 (cnt)) }
+  =
+    let limb_zero = Limb.of_int 0 in
+    let zero = Int32.of_int 0 in
+    let one = Int32.of_int 1 in
+    let msb = Int32.(-) sz one in
+    let xp = ref (C.incr x msb) in
+    let rp = ref (C.incr r msb) in
+    let high = ref limb_zero in
+    let low = ref (C.get !xp) in
+    let i = ref msb in
+    let l, retval = lsld_ext !low cnt in
+    high := l;
+    while (Int32.(>) !i zero) do
+      variant { p2i !i }
+      invariant { 0 <= !i < sz }
+      invariant { radix * value_sub (pelts r) (r.offset + 1 + !i) (r.offset + sz)
+                  + (power radix (sz - !i)) * retval + !high
+                = value !xp (sz - !i)
+                  * (power 2 (cnt)) }
+      invariant { (!rp).offset = r.offset + !i }
+      invariant { (!xp).offset = x.offset + !i }
+      invariant { plength !rp = plength r }
+      invariant { !rp.min = r.min }
+      invariant { !rp.max = r.max }
+      invariant { pelts !rp = pelts r }
+      invariant { plength !xp = plength x }
+      invariant { !xp.min = x.min }
+      invariant { !xp.max = x.max }
+      invariant { pelts !xp = pelts x }
+      invariant { !high <= radix - power 2 (cnt) }
+      label StartLoop in
+      xp.contents <- C.incr !xp (-1);
+      low := C.get !xp;
+      let l,h = lsld_ext !low cnt in
+      assert { !high + h < radix  };
+      let ghost v = Limb.(+) !high h in
+      value_sub_update_no_change (pelts r) (!rp).offset (r.offset + 1 + p2i !i)
+                                 (r.offset + p2i sz) v;
+      C.set !rp (Limb.(+) !high h);
+      rp.contents <- C.incr !rp (-1);
+      high := l;
+      let ghost k = p2i !i in
+      i := Int32.(-) !i one;
+      value_sub_head (pelts r) (r.offset + k) (r.offset + p2i sz);
+      value_sub_head (pelts !xp) (!xp).offset (x.offset + p2i sz);
+      assert { radix
+               * value_sub (pelts r) (r.offset + k) (r.offset + sz)
+               + (power radix (sz - !i)) * retval + !high
+              = value !xp (sz - !i)
+                * (power 2 (cnt))
+             by
+               (pelts r)[r.offset + k]
+             = (pelts r)[(!rp.offset at StartLoop)]
+             = (!high at StartLoop) + h
+             so
+                power radix (sz - !i)
+              = power radix (sz - (k - 1))
+              = power radix ((sz - k) +1)
+              = radix * power radix (sz - k)
+             so
+              !low = (pelts x)[(!xp).offset]
+             so
+               radix * value_sub (pelts r) (r.offset + k) (r.offset + sz)
+                + (power radix (sz - !i)) * retval + !high
+             = radix * value_sub (pelts r) (r.offset + k) (r.offset + sz)
+                + radix * (power radix (sz - k)) * retval + !high
+             = radix * ( (pelts r)[r.offset + k]
+                          + radix * (value_sub (pelts r)
+                                         (r.offset + 1 + k) (r.offset + sz)))
+               + radix * (power radix (sz - k)) * retval + !high
+             =  radix * ( (!high at StartLoop) + h
+                          + radix * (value_sub (pelts r)
+                                         (r.offset + 1 + k) (r.offset + sz)))
+               + radix * (power radix (sz - k)) * retval + !high
+             = radix * ( (!high at StartLoop)
+                          + radix * (value_sub (pelts r)
+                                         (r.offset + 1 + k) (r.offset + sz)))
+               + radix * h
+               + radix * (power radix (sz - k)) * retval + !high
+             = radix * ( (!high at StartLoop)
+                          + radix * (value_sub (pelts r)
+                                         (r.offset + 1 + k) (r.offset + sz)))
+               + radix * h
+               + radix * (power radix (sz - k)) * retval + l
+             = radix * ( (!high at StartLoop)
+                          + radix * (value_sub (pelts r)
+                                         (r.offset + 1 + k) (r.offset + sz)))
+               + radix * (power radix (sz - k)) * retval + l
+               + radix * h
+             = radix * ( (!high at StartLoop)
+                          + radix * (value_sub (pelts r)
+                                         (r.offset + 1 + k) (r.offset + sz)))
+               + radix * (power radix (sz - k)) * retval
+               + (power 2 (cnt)) * !low
+             = radix * ( (!high at StartLoop)
+                          + radix * (value_sub (pelts r)
+                                         (r.offset + 1 + k) (r.offset + sz)))
+               + radix * (power radix (sz - k)) * retval
+               + (power 2 (cnt)) * (pelts x)[(!xp).offset]
+             = radix * ( (!high at StartLoop)
+                          + radix * (value_sub (pelts r)
+                                         (r.offset + 1 + k) (r.offset + sz))
+                          + power radix (sz - k) * retval )
+               + (power 2 (cnt)) * (pelts x)[(!xp).offset]
+             = radix * ( radix * (value_sub (pelts r)
+                                         (r.offset + 1 + k) (r.offset + sz))
+                         + power radix (sz - k) * retval
+                         + (!high at StartLoop) )
+               + (power 2 (cnt)) * (pelts x)[(!xp).offset]
+             = radix * value (!xp at StartLoop) (sz - k)
+                     * (power 2 (cnt))
+               + (power 2 (cnt)) * (pelts x)[(!xp).offset]
+             = (power 2 (cnt)) *
+                      ((pelts x)[(!xp).offset]
+                      + radix * value (!xp at StartLoop) (sz - k))
+             = (power 2 (cnt)) * value !xp (sz - !i)
+   };
+   done;
+   assert { !high + radix * value_sub (pelts r) (r.offset + 1) (r.offset + sz)
+                  + (power radix sz) * retval
+                = value !xp sz
+                  * (power 2 (cnt)) };
+   value_sub_update_no_change (pelts r) r.offset (r.offset+1)
+                              (r.offset + p2i sz) !high;
+   C.set r !high;
+   value_sub_head (pelts r) r.offset (r.offset + p2i sz);
+   retval
+
+  (** [rshift r x sz cnt] shifts [(x,sz)] [cnt] bits to the right and
+      writes the result in [(r, sz)]. Returns the [cnt] least significant
+      bits of [(x, sz)]. Corresponds to [mpn_rshift]. *)
+  (*TODO overlapping allowed if r <= x*)
+  let rshift (r x:t) (sz:int32) (cnt:limb) : limb
+    requires { valid x sz }
+    requires { valid r sz }
+    requires { 0 < cnt < Limb.length }
+    requires { 0 < sz }
+    ensures { result + radix * value r sz
+              = value x sz * (power 2 (Limb.length - cnt)) }
+  =
+    let tnc = Limb.(-) (Limb.of_int Limb.length) cnt in
+    let zero = Int32.of_int 0 in
+    let one = Int32.of_int 1 in
+    let msb = Int32.(-) sz one in
+    let xp = ref (C.incr x zero) in
+    let rp = ref (C.incr r zero) in
+    let high = ref (C.get !xp) in
+    let retval, h = lsld_ext !high tnc in
+    let low = ref h in
+    let i = ref zero in
+    let ghost c = power 2 (l2i tnc) in
+    while (Int32.(<) !i msb) do
+      variant { sz - !i }
+      invariant { 0 <= !i <= msb }
+      invariant { retval + radix * (value r !i
+                  + (power radix !i) * !low)
+                  = value x (!i+1) * c }
+      invariant { (!rp).offset = r.offset + !i }
+      invariant { (!xp).offset = x.offset + !i }
+      invariant { plength !rp = plength r }
+      invariant { !rp.min = r.min }
+      invariant { !rp.max = r.max }
+      invariant { plength !xp = plength x }
+      invariant { !xp.min = x.min }
+      invariant { !xp.max = x.max }
+      invariant { pelts !rp = pelts r }
+      invariant { pelts !xp = pelts x }
+      invariant { !low < c}
+      label StartLoop in
+      xp.contents <- C.incr !xp one;
+      high := C.get !xp;
+      let l,h = lsld_ext !high tnc in
+      assert { !low + l < radix };
+      let ghost v = Limb.(+) !low l in
+      value_sub_shift_no_change (pelts r) r.offset (p2i !i) (p2i !i) v;
+      C.set !rp (Limb.(+) !low l);
+      assert { value r !i = value (r at StartLoop) !i };
+      value_tail r !i;
+      value_tail x (!i+1);
+      assert { (pelts r)[r.offset + !i] = !low + l };
+      low := h;
+      assert { value x (!i+2) * c = value x (!i+1) * c
+               + power radix (!i+1) * l + power radix (!i+2) * h
+               by (pelts x)[offset x + !i + 1] = !high
+               so value x (!i+2) * c =
+                  (value x (!i+1) + power radix (!i+1)* !high) * c
+               so !high * c = l + radix * h };
+      (*nonlinear part*)
+      assert { retval + radix * (value r (!i+1)
+                 + (power radix (!i+1)) * !low)
+                 = value x (!i+2) * c
+               (* by
+                 (pelts r)[r.offset + k]
+               = (pelts r)[(!rp.offset at StartLoop)]
+               = (!low at StartLoop) + l
+               so
+                 !high = (pelts x)[(!xp).offset]
+               so
+                 retval + radix * (value r !i
+                                      + (power radix !i) * !low)
+               = retval + radix * (value r k
+                              + power radix k * (pelts r)[r.offset+k]
+                              + power radix !i * !low)
+               = retval + radix * (value r k
+                              + power radix k * ((!low at StartLoop) + l)
+                              + power radix !i * !low)
+               = retval + radix * (value r k
+                              + power radix k * (!low at StartLoop)
+                              + power radix k * l
+                              + power radix !i * !low)
+               = retval + radix * (value r k
+                              + power radix k * (!low at StartLoop))
+                 + radix * (power radix k * l
+                            + power radix !i * !low)
+               = value x (k+1) * power 2 (tnc)
+                 + radix * (power radix k * l
+                            + power radix !i * !low)
+               = value x !i * power 2 (tnc)
+                 + radix * (power radix k * l
+                            + power radix !i * !low)
+               = value x !i * power 2 (tnc)
+                 + radix * (power radix k * l
+                            + power radix k * radix * !low)
+               = value x !i * power 2 (tnc)
+                 + radix * (power radix k * (l + radix * !low))
+               = value x !i * power 2 (tnc)
+                 + radix * (power radix k * !high * power 2 (tnc))
+               = value x !i * power 2 (tnc)
+                 + power radix !i * !high * power 2 (tnc)
+               = (value x !i + power radix !i * !high)
+                 * power 2 (tnc)
+               = (value x !i
+                  + power radix !i * (pelts x)[x.offset + !i])
+                 * power 2 (tnc)
+               = value x (1 + !i) * power 2 (tnc) *)
+      };
+      i := Int32.(+) !i one;
+      rp.contents <- C.incr !rp one;
+    done;
+    label EndLoop in
+    assert { retval + radix * (value r msb
+                  + (power radix msb) * !low)
+             = value x sz * c };
+    value_sub_tail (pelts r) r.offset (r.offset + p2i msb);
+    assert { (!rp).offset = r.offset + msb };
+    value_sub_shift_no_change (pelts r) r.offset
+                              (r.offset + p2i msb) (r.offset + p2i msb) !low;
+    C.set !rp !low;
+    assert { pelts r = Map.set (pelts (r at EndLoop)) (r.offset + msb) !low};
+    value_sub_tail (pelts r) r.offset (r.offset + p2i msb);
+    assert { value r sz
+           = value r msb + power radix msb * !low
+           by value r sz
+              = value r msb + power radix msb * (pelts r)[r.offset + msb] };
+    assert { value r sz
+           = value (r at EndLoop) msb
+             + power radix msb * !low
+           by
+           value (r at EndLoop) msb = value r msb
+           };
+    retval
+
+end
\ No newline at end of file
diff --git a/examples/multiprecision/logical/why3session.xml b/examples/multiprecision/logical/why3session.xml
new file mode 100644
index 0000000000..486932016b
--- /dev/null
+++ b/examples/multiprecision/logical/why3session.xml
@@ -0,0 +1,899 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE why3session PUBLIC "-//Why3//proof session v5//EN"
+"http://why3.lri.fr/why3session.dtd">
+<why3session shape_version="4">
+<prover id="0" name="Eprover" version="1.9.1-001" timelimit="5" steplimit="0" memlimit="2000"/>
+<prover id="1" name="CVC3" version="2.4.1" timelimit="5" steplimit="0" memlimit="2000"/>
+<prover id="2" name="CVC4" version="1.4" timelimit="5" steplimit="0" memlimit="1000"/>
+<prover id="3" name="Z3" version="4.5.0" timelimit="1" steplimit="0" memlimit="1000"/>
+<prover id="4" name="Z3" version="4.4.1" timelimit="5" steplimit="0" memlimit="1000"/>
+<prover id="5" name="Alt-Ergo" version="2.0.0" timelimit="5" steplimit="0" memlimit="1000"/>
+<file name="../logical.mlw" proved="true">
+<theory name="Logical" proved="true">
+ <goal name="VC pow2_64" expl="VC for pow2_64" proved="true">
+ <transf name="split_goal_right" proved="true" >
+  <goal name="VC pow2_64.0" expl="assertion" proved="true">
+  <proof prover="5"><result status="valid" time="0.03" steps="10"/></proof>
+  </goal>
+  <goal name="VC pow2_64.1" expl="assertion" proved="true">
+  <proof prover="5"><result status="valid" time="0.03" steps="10"/></proof>
+  </goal>
+  <goal name="VC pow2_64.2" expl="assertion" proved="true">
+  <proof prover="5"><result status="valid" time="0.04" steps="11"/></proof>
+  </goal>
+  <goal name="VC pow2_64.3" expl="assertion" proved="true">
+  <proof prover="5"><result status="valid" time="0.03" steps="12"/></proof>
+  </goal>
+  <goal name="VC pow2_64.4" expl="assertion" proved="true">
+  <proof prover="5"><result status="valid" time="0.04" steps="13"/></proof>
+  </goal>
+  <goal name="VC pow2_64.5" expl="assertion" proved="true">
+  <proof prover="5"><result status="valid" time="0.03" steps="14"/></proof>
+  </goal>
+  <goal name="VC pow2_64.6" expl="postcondition" proved="true">
+  <proof prover="5"><result status="valid" time="0.04" steps="13"/></proof>
+  </goal>
+ </transf>
+ </goal>
+ <goal name="VC mod_mult" expl="VC for mod_mult" proved="true">
+ <proof prover="5"><result status="valid" time="0.03" steps="9"/></proof>
+ </goal>
+ <goal name="VC lsld_ext" expl="VC for lsld_ext" proved="true">
+ <transf name="split_goal_right" proved="true" >
+  <goal name="VC lsld_ext.0" expl="integer overflow" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC lsld_ext.0.0" expl="integer overflow" proved="true">
+   <proof prover="4"><result status="valid" time="0.02"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC lsld_ext.1" expl="precondition" proved="true">
+  <proof prover="0" memlimit="1000"><result status="valid" time="0.03"/></proof>
+  <proof prover="1" memlimit="1000"><result status="valid" time="0.04"/></proof>
+  <proof prover="2"><result status="valid" time="0.05"/></proof>
+  <proof prover="5"><result status="valid" time="0.01" steps="12"/></proof>
+  </goal>
+  <goal name="VC lsld_ext.2" expl="assertion" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC lsld_ext.2.0" expl="VC for lsld_ext" proved="true">
+   <proof prover="4"><result status="valid" time="0.04"/></proof>
+   </goal>
+   <goal name="VC lsld_ext.2.1" expl="VC for lsld_ext" proved="true">
+   <proof prover="4"><result status="valid" time="0.05"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC lsld_ext.3" expl="assertion" proved="true">
+  <proof prover="4"><result status="valid" time="0.36"/></proof>
+  </goal>
+  <goal name="VC lsld_ext.4" expl="assertion" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC lsld_ext.4.0" expl="VC for lsld_ext" proved="true">
+   <proof prover="0"><result status="valid" time="0.02"/></proof>
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC lsld_ext.4.1" expl="VC for lsld_ext" proved="true">
+   <proof prover="0"><result status="valid" time="0.15"/></proof>
+   </goal>
+   <goal name="VC lsld_ext.4.2" expl="VC for lsld_ext" proved="true">
+   <proof prover="0"><result status="valid" time="0.08"/></proof>
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC lsld_ext.4.3" expl="VC for lsld_ext" proved="true">
+   <proof prover="0"><result status="valid" time="0.02"/></proof>
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC lsld_ext.5" expl="assertion" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC lsld_ext.5.0" expl="assertion" proved="true">
+   <proof prover="0" memlimit="1000"><result status="valid" time="0.06"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC lsld_ext.6" expl="precondition" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC lsld_ext.6.0" expl="precondition" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC lsld_ext.7" expl="precondition" proved="true">
+  <proof prover="5"><result status="valid" time="0.04" steps="19"/></proof>
+  </goal>
+  <goal name="VC lsld_ext.8" expl="assertion" proved="true">
+  <proof prover="0"><result status="valid" time="0.05"/></proof>
+  </goal>
+  <goal name="VC lsld_ext.9" expl="assertion" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC lsld_ext.9.0" expl="VC for lsld_ext" proved="true">
+   <proof prover="5"><result status="valid" time="0.05" steps="22"/></proof>
+   </goal>
+   <goal name="VC lsld_ext.9.1" expl="VC for lsld_ext" proved="true">
+   <proof prover="3"><result status="valid" time="0.01"/></proof>
+   </goal>
+   <goal name="VC lsld_ext.9.2" expl="VC for lsld_ext" proved="true">
+   <proof prover="3"><result status="valid" time="0.01"/></proof>
+   </goal>
+   <goal name="VC lsld_ext.9.3" expl="VC for lsld_ext" proved="true">
+   <proof prover="3"><result status="valid" time="0.01"/></proof>
+   </goal>
+   <goal name="VC lsld_ext.9.4" expl="VC for lsld_ext" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC lsld_ext.9.5" expl="VC for lsld_ext" proved="true">
+   <proof prover="1"><result status="valid" time="0.04"/></proof>
+   </goal>
+   <goal name="VC lsld_ext.9.6" expl="VC for lsld_ext" proved="true">
+   <proof prover="2" timelimit="1"><result status="valid" time="0.06"/></proof>
+   </goal>
+   <goal name="VC lsld_ext.9.7" expl="VC for lsld_ext" proved="true">
+   <proof prover="0"><result status="valid" time="0.67"/></proof>
+   </goal>
+   <goal name="VC lsld_ext.9.8" expl="VC for lsld_ext" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC lsld_ext.9.9" expl="VC for lsld_ext" proved="true">
+   <proof prover="3"><result status="valid" time="0.01"/></proof>
+   </goal>
+   <goal name="VC lsld_ext.9.10" expl="VC for lsld_ext" proved="true">
+   <proof prover="3"><result status="valid" time="0.03"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC lsld_ext.10" expl="assertion" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC lsld_ext.10.0" expl="VC for lsld_ext" proved="true">
+   <proof prover="3"><result status="valid" time="0.01"/></proof>
+   </goal>
+   <goal name="VC lsld_ext.10.1" expl="VC for lsld_ext" proved="true">
+   <proof prover="3"><result status="valid" time="0.03"/></proof>
+   </goal>
+   <goal name="VC lsld_ext.10.2" expl="VC for lsld_ext" proved="true">
+   <proof prover="3"><result status="valid" time="0.04"/></proof>
+   </goal>
+   <goal name="VC lsld_ext.10.3" expl="VC for lsld_ext" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC lsld_ext.10.4" expl="VC for lsld_ext" proved="true">
+   <proof prover="5" timelimit="1"><result status="valid" time="0.06" steps="29"/></proof>
+   </goal>
+   <goal name="VC lsld_ext.10.5" expl="VC for lsld_ext" proved="true">
+   <proof prover="3"><result status="valid" time="0.03"/></proof>
+   </goal>
+   <goal name="VC lsld_ext.10.6" expl="VC for lsld_ext" proved="true">
+   <proof prover="3"><result status="valid" time="0.01"/></proof>
+   </goal>
+   <goal name="VC lsld_ext.10.7" expl="VC for lsld_ext" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC lsld_ext.11" expl="postcondition" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC lsld_ext.11.0" expl="postcondition" proved="true">
+   <proof prover="1" memlimit="1000"><result status="valid" time="0.06"/></proof>
+   </goal>
+   <goal name="VC lsld_ext.11.1" expl="postcondition" proved="true">
+   <proof prover="1" memlimit="1000"><result status="valid" time="0.09"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC lsld_ext.12" expl="postcondition" proved="true">
+  <proof prover="2" timelimit="1"><result status="valid" time="0.06"/></proof>
+  </goal>
+  <goal name="VC lsld_ext.13" expl="postcondition" proved="true">
+  <proof prover="5"><result status="valid" time="0.36" steps="50"/></proof>
+  </goal>
+  <goal name="VC lsld_ext.14" expl="postcondition" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC lsld_ext.14.0" expl="postcondition" proved="true">
+   <proof prover="0" memlimit="1000"><result status="valid" time="0.03"/></proof>
+   </goal>
+   <goal name="VC lsld_ext.14.1" expl="postcondition" proved="true">
+   <transf name="inline_all" proved="true" >
+    <goal name="VC lsld_ext.14.1.0" expl="postcondition" proved="true">
+    <proof prover="0" memlimit="1000"><result status="valid" time="0.03"/></proof>
+    </goal>
+   </transf>
+   </goal>
+  </transf>
+  </goal>
+ </transf>
+ </goal>
+ <goal name="VC clz_ext" expl="VC for clz_ext" proved="true">
+ <transf name="split_goal_right" proved="true" >
+  <goal name="VC clz_ext.0" expl="precondition" proved="true">
+  <proof prover="4"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC clz_ext.1" expl="assertion" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC clz_ext.1.0" expl="VC for clz_ext" proved="true">
+   <proof prover="5" memlimit="2000"><result status="valid" time="0.03" steps="15"/></proof>
+   </goal>
+   <goal name="VC clz_ext.1.1" expl="VC for clz_ext" proved="true">
+   <proof prover="1" timelimit="20"><result status="valid" time="0.08"/></proof>
+   </goal>
+   <goal name="VC clz_ext.1.2" expl="VC for clz_ext" proved="true">
+   <proof prover="5" memlimit="2000"><result status="valid" time="0.05" steps="14"/></proof>
+   </goal>
+   <goal name="VC clz_ext.1.3" expl="VC for clz_ext" proved="true">
+   <proof prover="5" memlimit="2000"><result status="valid" time="0.02" steps="15"/></proof>
+   </goal>
+   <goal name="VC clz_ext.1.4" expl="VC for clz_ext" proved="true">
+   <proof prover="1"><result status="valid" time="0.66"/></proof>
+   </goal>
+   <goal name="VC clz_ext.1.5" expl="VC for clz_ext" proved="true">
+   <proof prover="1"><result status="valid" time="0.10"/></proof>
+   </goal>
+   <goal name="VC clz_ext.1.6" expl="VC for clz_ext" proved="true">
+   <proof prover="4"><result status="valid" time="0.04"/></proof>
+   </goal>
+   <goal name="VC clz_ext.1.7" expl="VC for clz_ext" proved="true">
+   <proof prover="4"><result status="valid" time="0.04"/></proof>
+   </goal>
+   <goal name="VC clz_ext.1.8" expl="VC for clz_ext" proved="true">
+   <proof prover="1"><result status="valid" time="0.04"/></proof>
+   <transf name="remove" proved="true" arg1="real,bool,tuple0,unit,tuple2,map,t,ref,zone,limb,zero,one,(&gt;=),abs,div,div1,mod1,get,([]),const,map_eq_sub,max,to_int,in_bounds,zero_unsigned,radix,int32&#39;maxInt,int32&#39;minInt,min_int32,max_int32,in_bounds4,uint32&#39;minInt,to_int1,zero_unsigned1,is_msb_set,(!),uint64&#39;minInt,in_bounds2,zero_unsigned2,is_msb_set1,length1,([]),make,in_us_bounds,null_zone,data,offset,min,zone,plength,pelts,valid_ptr_shift,valid,is_not_null,map_eq_sub_shift,l2i,value_sub,value,Assoc,Unit_def_l,Unit_def_r,Inv_def_l,Inv_def_r,Comm,Assoc1,Mul_distr_l,Mul_distr_r,Comm1,Unitary,NonTrivialRing,Refl,Trans,Antisymm,Total,ZeroLessOne,CompatOrderAdd,CompatOrderMult,Abs_le,Abs_pos,Div_mod,Mod_bound,Div_unique,Div_bound,Mod_1,Div_1,Div_inf,Div_inf_neg,Mod_0,Div_1_left,Div_minus1_left,Mod_1_left,Mod_minus1_left,Div_mult,Mod_mult,Div_mod1,Div_bound1,Mod_bound1,Div_sign_pos,Div_sign_neg,Mod_sign_pos,Mod_sign_neg,Rounds_toward_zero,Div_11,Mod_11,Div_inf1,Mod_inf,Div_mult1,Mod_mult1,Power_0,Power_s,Power_s_alt,Power_1,Power_sum,Power_mult,Power_comm1,Power_comm2,Power_non_neg,Power_monotonic,to_int_in_bounds,extensionality,zero_unsigned_is_zero,radix_def,to_int_in_bounds3,extensionality3,to_int_in_bounds1,extensionality1,zero_unsigned_is_zero1,is_msb_set_spec,to_int_in_bounds2,extensionality2,zero_unsigned_is_zero2,is_msb_set_spec1,array&#39;invariant,make_spec,valid_itv_to_shift,is_not_null_spec,map_eq_shift,map_eq_shift_zero,limb_max_bound,prod_compat_strict_r,prod_compat_r,value_sub_def,value_sub_frame,value_sub_frame_shift,value_sub_tail,value_sub_concat,value_sub_head,value_sub_update,value_zero,value_sub_update_no_change,value_sub_shift_no_change,value_sub_lower_bound,value_sub_upper_bound,value_sub_lower_bound_tight,value_sub_upper_bound_tight,value_tail,value_concat,pow2_64,mod_mult">
+    <goal name="VC clz_ext.1.8.0" expl="VC for clz_ext" proved="true">
+    <proof prover="1" timelimit="1"><result status="valid" time="0.02"/></proof>
+    <proof prover="3"><result status="valid" time="0.02"/></proof>
+    </goal>
+   </transf>
+   </goal>
+   <goal name="VC clz_ext.1.9" expl="VC for clz_ext" proved="true">
+   <proof prover="5" memlimit="2000"><result status="valid" time="0.03" steps="20"/></proof>
+   </goal>
+   <goal name="VC clz_ext.1.10" expl="VC for clz_ext" proved="true">
+   <proof prover="5" memlimit="2000"><result status="valid" time="0.04" steps="21"/></proof>
+   </goal>
+   <goal name="VC clz_ext.1.11" expl="VC for clz_ext" proved="true">
+   <proof prover="1" memlimit="1000"><result status="valid" time="0.06"/></proof>
+   </goal>
+   <goal name="VC clz_ext.1.12" expl="VC for clz_ext" proved="true">
+   <proof prover="1"><result status="valid" time="0.04"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC clz_ext.2" expl="postcondition" proved="true">
+  <proof prover="4"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC clz_ext.3" expl="postcondition" proved="true">
+  <proof prover="4"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC clz_ext.4" expl="postcondition" proved="true">
+  <proof prover="4"><result status="valid" time="0.01"/></proof>
+  </goal>
+  <goal name="VC clz_ext.5" expl="postcondition" proved="true">
+  <proof prover="4"><result status="valid" time="0.02"/></proof>
+  </goal>
+ </transf>
+ </goal>
+ <goal name="VC lshift" expl="VC for lshift" proved="true">
+ <transf name="split_goal_right" proved="true" >
+  <goal name="VC lshift.0" expl="integer overflow" proved="true">
+  <proof prover="5"><result status="valid" time="0.04" steps="23"/></proof>
+  </goal>
+  <goal name="VC lshift.1" expl="integer overflow" proved="true">
+  <proof prover="5"><result status="valid" time="0.04" steps="24"/></proof>
+  </goal>
+  <goal name="VC lshift.2" expl="integer overflow" proved="true">
+  <proof prover="0" memlimit="1000"><result status="valid" time="0.06"/></proof>
+  <proof prover="1" memlimit="1000"><result status="valid" time="0.06"/></proof>
+  <proof prover="2"><result status="valid" time="0.06"/></proof>
+  <proof prover="4"><result status="valid" time="0.03"/></proof>
+  <proof prover="5"><result status="valid" time="0.03" steps="25"/></proof>
+  </goal>
+  <goal name="VC lshift.3" expl="integer overflow" proved="true">
+  <proof prover="4"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC lshift.4" expl="precondition" proved="true">
+  <proof prover="5"><result status="valid" time="0.04" steps="26"/></proof>
+  </goal>
+  <goal name="VC lshift.5" expl="precondition" proved="true">
+  <proof prover="5"><result status="valid" time="0.04" steps="33"/></proof>
+  </goal>
+  <goal name="VC lshift.6" expl="precondition" proved="true">
+  <proof prover="5" timelimit="1"><result status="valid" time="0.02" steps="40"/></proof>
+  </goal>
+  <goal name="VC lshift.7" expl="precondition" proved="true">
+  <proof prover="4"><result status="valid" time="0.03"/></proof>
+  <proof prover="5"><result status="valid" time="0.03" steps="30"/></proof>
+  </goal>
+  <goal name="VC lshift.8" expl="loop invariant init" proved="true">
+  <proof prover="4"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC lshift.9" expl="loop invariant init" proved="true">
+  <transf name="introduce_premises" proved="true" >
+   <goal name="VC lshift.9.0" expl="loop invariant init" proved="true">
+   <transf name="replace" proved="true" arg1="(sz - msb)" arg2="1">
+    <goal name="VC lshift.9.0.0" expl="loop invariant init" proved="true">
+    <transf name="cut" proved="true" arg1="(value o3 1 = get (pelts o3) (offset o3))">
+     <goal name="VC lshift.9.0.0.0" expl="loop invariant init" proved="true">
+     <proof prover="5" timelimit="1"><result status="valid" time="0.02" steps="64"/></proof>
+     </goal>
+     <goal name="VC lshift.9.0.0.1" proved="true">
+     <proof prover="2" timelimit="1"><result status="valid" time="0.44"/></proof>
+     </goal>
+    </transf>
+    </goal>
+    <goal name="VC lshift.9.0.1" proved="true">
+    <proof prover="3"><result status="valid" time="0.04"/></proof>
+    </goal>
+   </transf>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC lshift.10" expl="loop invariant init" proved="true">
+  <proof prover="5"><result status="valid" time="0.10" steps="38"/></proof>
+  </goal>
+  <goal name="VC lshift.11" expl="loop invariant init" proved="true">
+  <proof prover="5"><result status="valid" time="0.05" steps="38"/></proof>
+  </goal>
+  <goal name="VC lshift.12" expl="loop invariant init" proved="true">
+  <proof prover="2"><result status="valid" time="0.07"/></proof>
+  </goal>
+  <goal name="VC lshift.13" expl="loop invariant init" proved="true">
+  <proof prover="3"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC lshift.14" expl="loop invariant init" proved="true">
+  <proof prover="3"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC lshift.15" expl="loop invariant init" proved="true">
+  <proof prover="2"><result status="valid" time="0.10"/></proof>
+  <proof prover="4"><result status="valid" time="0.06"/></proof>
+  </goal>
+  <goal name="VC lshift.16" expl="loop invariant init" proved="true">
+  <proof prover="4"><result status="valid" time="0.03"/></proof>
+  <proof prover="5"><result status="valid" time="0.07" steps="38"/></proof>
+  </goal>
+  <goal name="VC lshift.17" expl="loop invariant init" proved="true">
+  <proof prover="3"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC lshift.18" expl="loop invariant init" proved="true">
+  <proof prover="3"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC lshift.19" expl="loop invariant init" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC lshift.19.0" expl="loop invariant init" proved="true">
+   <proof prover="5" timelimit="1"><result status="valid" time="0.06" steps="38"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC lshift.20" expl="loop invariant init" proved="true">
+  <proof prover="4"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC lshift.21" expl="precondition" proved="true">
+  <proof prover="4"><result status="valid" time="0.21"/></proof>
+  </goal>
+  <goal name="VC lshift.22" expl="precondition" proved="true">
+  <proof prover="5" timelimit="1"><result status="valid" time="0.05" steps="74"/></proof>
+  </goal>
+  <goal name="VC lshift.23" expl="precondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.07"/></proof>
+  </goal>
+  <goal name="VC lshift.24" expl="assertion" proved="true">
+  <proof prover="4"><result status="valid" time="0.08"/></proof>
+  </goal>
+  <goal name="VC lshift.25" expl="integer overflow" proved="true">
+  <proof prover="3"><result status="valid" time="0.05"/></proof>
+  </goal>
+  <goal name="VC lshift.26" expl="precondition" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC lshift.26.0" expl="precondition" proved="true">
+   <proof prover="2"><result status="valid" time="0.16"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC lshift.27" expl="precondition" proved="true">
+  <proof prover="4"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC lshift.28" expl="integer overflow" proved="true">
+  <proof prover="4"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC lshift.29" expl="precondition" proved="true">
+  <proof prover="2" timelimit="1"><result status="valid" time="0.11"/></proof>
+  </goal>
+  <goal name="VC lshift.30" expl="precondition" proved="true">
+  <proof prover="3"><result status="valid" time="0.25"/></proof>
+  </goal>
+  <goal name="VC lshift.31" expl="integer overflow" proved="true">
+  <proof prover="4"><result status="valid" time="0.04"/></proof>
+  </goal>
+  <goal name="VC lshift.32" expl="precondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.08"/></proof>
+  </goal>
+  <goal name="VC lshift.33" expl="precondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.17"/></proof>
+  </goal>
+  <goal name="VC lshift.34" expl="assertion" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC lshift.34.0" expl="VC for lshift" proved="true">
+   <proof prover="0"><result status="valid" time="0.03"/></proof>
+   </goal>
+   <goal name="VC lshift.34.1" expl="VC for lshift" proved="true">
+   <proof prover="2" timelimit="1"><result status="valid" time="0.24"/></proof>
+   </goal>
+   <goal name="VC lshift.34.2" expl="VC for lshift" proved="true">
+   <proof prover="2" timelimit="1"><result status="valid" time="0.24"/></proof>
+   </goal>
+   <goal name="VC lshift.34.3" expl="VC for lshift" proved="true">
+   <proof prover="3"><result status="valid" time="0.01"/></proof>
+   </goal>
+   <goal name="VC lshift.34.4" expl="VC for lshift" proved="true">
+   <proof prover="3"><result status="valid" time="0.04"/></proof>
+   </goal>
+   <goal name="VC lshift.34.5" expl="VC for lshift" proved="true">
+   <proof prover="3"><result status="valid" time="0.04"/></proof>
+   </goal>
+   <goal name="VC lshift.34.6" expl="VC for lshift" proved="true">
+   <proof prover="0"><result status="valid" time="0.03"/></proof>
+   </goal>
+   <goal name="VC lshift.34.7" expl="VC for lshift" proved="true">
+   <proof prover="0"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC lshift.34.8" expl="VC for lshift" proved="true">
+   <proof prover="2" timelimit="1"><result status="valid" time="0.18"/></proof>
+   </goal>
+   <goal name="VC lshift.34.9" expl="VC for lshift" proved="true">
+   <proof prover="3"><result status="valid" time="0.01"/></proof>
+   </goal>
+   <goal name="VC lshift.34.10" expl="VC for lshift" proved="true">
+   <proof prover="3"><result status="valid" time="0.03"/></proof>
+   </goal>
+   <goal name="VC lshift.34.11" expl="VC for lshift" proved="true">
+   <proof prover="3"><result status="valid" time="0.03"/></proof>
+   </goal>
+   <goal name="VC lshift.34.12" expl="VC for lshift" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC lshift.34.13" expl="VC for lshift" proved="true">
+   <transf name="introduce_premises" proved="true" >
+    <goal name="VC lshift.34.13.0" expl="VC for lshift" proved="true">
+    <transf name="rewrite" proved="true" arg1="H">
+     <goal name="VC lshift.34.13.0.0" expl="VC for lshift" proved="true">
+     <proof prover="3"><result status="valid" time="0.02"/></proof>
+     </goal>
+    </transf>
+    </goal>
+   </transf>
+   </goal>
+   <goal name="VC lshift.34.14" expl="VC for lshift" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC lshift.34.15" expl="VC for lshift" proved="true">
+   <proof prover="3"><result status="valid" time="0.01"/></proof>
+   </goal>
+   <goal name="VC lshift.34.16" expl="VC for lshift" proved="true">
+   <proof prover="1"><result status="valid" time="2.00"/></proof>
+   </goal>
+   <goal name="VC lshift.34.17" expl="VC for lshift" proved="true">
+   <proof prover="3"><result status="valid" time="0.01"/></proof>
+   </goal>
+   <goal name="VC lshift.34.18" expl="VC for lshift" proved="true">
+   <transf name="introduce_premises" proved="true" >
+    <goal name="VC lshift.34.18.0" expl="VC for lshift" proved="true">
+    <proof prover="0"><result status="valid" time="0.16"/></proof>
+    </goal>
+   </transf>
+   </goal>
+   <goal name="VC lshift.34.19" expl="VC for lshift" proved="true">
+   <proof prover="2" timelimit="1"><result status="valid" time="0.08"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC lshift.35" expl="loop variant decrease" proved="true">
+  <proof prover="4"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC lshift.36" expl="loop invariant preservation" proved="true">
+  <proof prover="2" timelimit="1"><result status="valid" time="0.07"/></proof>
+  </goal>
+  <goal name="VC lshift.37" expl="loop invariant preservation" proved="true">
+  <proof prover="0"><result status="valid" time="2.54"/></proof>
+  </goal>
+  <goal name="VC lshift.38" expl="loop invariant preservation" proved="true">
+  <proof prover="2" timelimit="1"><result status="valid" time="0.10"/></proof>
+  </goal>
+  <goal name="VC lshift.39" expl="loop invariant preservation" proved="true">
+  <proof prover="2" timelimit="1"><result status="valid" time="0.13"/></proof>
+  </goal>
+  <goal name="VC lshift.40" expl="loop invariant preservation" proved="true">
+  <proof prover="4"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC lshift.41" expl="loop invariant preservation" proved="true">
+  <proof prover="3"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC lshift.42" expl="loop invariant preservation" proved="true">
+  <proof prover="3"><result status="valid" time="0.04"/></proof>
+  </goal>
+  <goal name="VC lshift.43" expl="loop invariant preservation" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC lshift.43.0" expl="loop invariant preservation" proved="true">
+   <proof prover="0"><result status="valid" time="0.02"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC lshift.44" expl="loop invariant preservation" proved="true">
+  <proof prover="4"><result status="valid" time="0.04"/></proof>
+  </goal>
+  <goal name="VC lshift.45" expl="loop invariant preservation" proved="true">
+  <proof prover="3"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC lshift.46" expl="loop invariant preservation" proved="true">
+  <proof prover="3"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC lshift.47" expl="loop invariant preservation" proved="true">
+  <proof prover="4"><result status="valid" time="0.04"/></proof>
+  </goal>
+  <goal name="VC lshift.48" expl="loop invariant preservation" proved="true">
+  <proof prover="4"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC lshift.49" expl="assertion" proved="true">
+  <proof prover="1" timelimit="20" memlimit="3000"><result status="valid" time="0.09"/></proof>
+  </goal>
+  <goal name="VC lshift.50" expl="precondition" proved="true">
+  <proof prover="3"><result status="valid" time="0.01"/></proof>
+  </goal>
+  <goal name="VC lshift.51" expl="precondition" proved="true">
+  <proof prover="3"><result status="valid" time="0.04"/></proof>
+  </goal>
+  <goal name="VC lshift.52" expl="precondition" proved="true">
+  <proof prover="2" timelimit="1"><result status="valid" time="0.08"/></proof>
+  </goal>
+  <goal name="VC lshift.53" expl="precondition" proved="true">
+  <transf name="inline_all" proved="true" >
+   <goal name="VC lshift.53.0" expl="precondition" proved="true">
+   <proof prover="1" memlimit="1000"><result status="valid" time="0.12"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC lshift.54" expl="postcondition" proved="true">
+  <proof prover="1"><result status="valid" time="1.98"/></proof>
+  </goal>
+ </transf>
+ </goal>
+ <goal name="VC rshift" expl="VC for rshift" proved="true">
+ <transf name="split_goal_right" proved="true" >
+  <goal name="VC rshift.0" expl="integer overflow" proved="true">
+  <proof prover="2"><result status="valid" time="0.12"/></proof>
+  </goal>
+  <goal name="VC rshift.1" expl="integer overflow" proved="true">
+  <proof prover="4"><result status="valid" time="0.04"/></proof>
+  </goal>
+  <goal name="VC rshift.2" expl="integer overflow" proved="true">
+  <proof prover="4"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC rshift.3" expl="integer overflow" proved="true">
+  <transf name="inline_all" proved="true" >
+   <goal name="VC rshift.3.0" expl="integer overflow" proved="true">
+   <proof prover="1" memlimit="1000"><result status="valid" time="0.05"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC rshift.4" expl="integer overflow" proved="true">
+  <proof prover="2"><result status="valid" time="0.08"/></proof>
+  <proof prover="4"><result status="valid" time="0.01"/></proof>
+  </goal>
+  <goal name="VC rshift.5" expl="precondition" proved="true">
+  <proof prover="4"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC rshift.6" expl="precondition" proved="true">
+  <proof prover="4"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC rshift.7" expl="precondition" proved="true">
+  <proof prover="5" timelimit="1"><result status="valid" time="0.02" steps="41"/></proof>
+  </goal>
+  <goal name="VC rshift.8" expl="precondition" proved="true">
+  <proof prover="4"><result status="valid" time="0.01"/></proof>
+  </goal>
+  <goal name="VC rshift.9" expl="loop invariant init" proved="true">
+  <proof prover="4"><result status="valid" time="0.01"/></proof>
+  </goal>
+  <goal name="VC rshift.10" expl="loop invariant init" proved="true">
+  <proof prover="5" timelimit="1"><result status="valid" time="0.11" steps="120"/></proof>
+  </goal>
+  <goal name="VC rshift.11" expl="loop invariant init" proved="true">
+  <proof prover="4"><result status="valid" time="0.04"/></proof>
+  </goal>
+  <goal name="VC rshift.12" expl="loop invariant init" proved="true">
+  <proof prover="4"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC rshift.13" expl="loop invariant init" proved="true">
+  <proof prover="4"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC rshift.14" expl="loop invariant init" proved="true">
+  <proof prover="3"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC rshift.15" expl="loop invariant init" proved="true">
+  <proof prover="3"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC rshift.16" expl="loop invariant init" proved="true">
+  <proof prover="4"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC rshift.17" expl="loop invariant init" proved="true">
+  <proof prover="3"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC rshift.18" expl="loop invariant init" proved="true">
+  <proof prover="3"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC rshift.19" expl="loop invariant init" proved="true">
+  <proof prover="2"><result status="valid" time="0.05"/></proof>
+  <proof prover="4"><result status="valid" time="0.04"/></proof>
+  </goal>
+  <goal name="VC rshift.20" expl="loop invariant init" proved="true">
+  <proof prover="2" memlimit="2000"><result status="valid" time="0.05"/></proof>
+  </goal>
+  <goal name="VC rshift.21" expl="loop invariant init" proved="true">
+  <proof prover="0" memlimit="1000"><result status="valid" time="0.04"/></proof>
+  <proof prover="2"><result status="valid" time="0.05"/></proof>
+  <proof prover="4"><result status="valid" time="0.01"/></proof>
+  </goal>
+  <goal name="VC rshift.22" expl="precondition" proved="true">
+  <proof prover="2" timelimit="1"><result status="valid" time="0.08"/></proof>
+  </goal>
+  <goal name="VC rshift.23" expl="precondition" proved="true">
+  <proof prover="2" memlimit="2000"><result status="valid" time="0.10"/></proof>
+  </goal>
+  <goal name="VC rshift.24" expl="precondition" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC rshift.24.0" expl="VC for rshift" proved="true">
+   <proof prover="3"><result status="valid" time="0.03"/></proof>
+   </goal>
+   <goal name="VC rshift.24.1" expl="VC for rshift" proved="true">
+   <transf name="introduce_premises" proved="true" >
+    <goal name="VC rshift.24.1.0" expl="VC for rshift" proved="true">
+    <transf name="inline_goal" proved="true" >
+     <goal name="VC rshift.24.1.0.0" expl="VC for rshift" proved="true">
+     <proof prover="0"><result status="valid" time="4.17"/></proof>
+     </goal>
+    </transf>
+    </goal>
+   </transf>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC rshift.25" expl="assertion" proved="true">
+  <proof prover="2"><result status="valid" time="0.13"/></proof>
+  <proof prover="4"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC rshift.26" expl="integer overflow" proved="true">
+  <proof prover="2"><result status="valid" time="0.08"/></proof>
+  <proof prover="4"><result status="valid" time="0.06"/></proof>
+  </goal>
+  <goal name="VC rshift.27" expl="precondition" proved="true">
+  <proof prover="0" memlimit="1000"><result status="valid" time="0.03"/></proof>
+  <proof prover="2"><result status="valid" time="0.14"/></proof>
+  <proof prover="4"><result status="valid" time="0.05"/></proof>
+  </goal>
+  <goal name="VC rshift.28" expl="precondition" proved="true">
+  <proof prover="4"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC rshift.29" expl="integer overflow" proved="true">
+  <proof prover="4"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC rshift.30" expl="precondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.19"/></proof>
+  </goal>
+  <goal name="VC rshift.31" expl="assertion" proved="true">
+  <proof prover="0"><result status="valid" time="0.29"/></proof>
+  </goal>
+  <goal name="VC rshift.32" expl="precondition" proved="true">
+  <proof prover="4"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC rshift.33" expl="integer overflow" proved="true">
+  <proof prover="2"><result status="valid" time="0.09"/></proof>
+  <proof prover="4"><result status="valid" time="0.07"/></proof>
+  </goal>
+  <goal name="VC rshift.34" expl="precondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.15"/></proof>
+  </goal>
+  <goal name="VC rshift.35" expl="assertion" proved="true">
+  <proof prover="0" timelimit="10"><result status="valid" time="0.08"/></proof>
+  </goal>
+  <goal name="VC rshift.36" expl="assertion" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC rshift.36.0" expl="VC for rshift" proved="true">
+   <proof prover="0" timelimit="10"><result status="valid" time="0.03"/></proof>
+   </goal>
+   <goal name="VC rshift.36.1" expl="VC for rshift" proved="true">
+   <proof prover="1" timelimit="10"><result status="valid" time="0.10"/></proof>
+   </goal>
+   <goal name="VC rshift.36.2" expl="VC for rshift" proved="true">
+   <proof prover="3"><result status="valid" time="0.03"/></proof>
+   </goal>
+   <goal name="VC rshift.36.3" expl="VC for rshift" proved="true">
+   <proof prover="1" timelimit="10"><result status="valid" time="1.00"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC rshift.37" expl="assertion" proved="true">
+  <transf name="introduce_premises" proved="true" >
+   <goal name="VC rshift.37.0" expl="assertion" proved="true">
+   <transf name="use_th" proved="true" arg1="lineardecision.LinearDecisionIntMP">
+    <goal name="VC rshift.37.0.0" expl="assertion" proved="true">
+    <transf name="reflection_f" proved="true" arg1="mp_decision">
+     <goal name="VC rshift.37.0.0.0" expl="assertion" proved="true">
+     <proof prover="0"><result status="valid" time="0.40"/></proof>
+     </goal>
+     <goal name="VC rshift.37.0.0.1" proved="true">
+     <proof prover="3"><result status="valid" time="0.28"/></proof>
+     </goal>
+     <goal name="VC rshift.37.0.0.2" proved="true">
+     <proof prover="3"><result status="valid" time="0.27"/></proof>
+     </goal>
+    </transf>
+    </goal>
+   </transf>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC rshift.38" expl="integer overflow" proved="true">
+  <proof prover="3"><result status="valid" time="0.05"/></proof>
+  </goal>
+  <goal name="VC rshift.39" expl="precondition" proved="true">
+  <proof prover="4"><result status="valid" time="0.47"/></proof>
+  </goal>
+  <goal name="VC rshift.40" expl="loop variant decrease" proved="true">
+  <proof prover="2"><result status="valid" time="0.08"/></proof>
+  <proof prover="4"><result status="valid" time="0.05"/></proof>
+  </goal>
+  <goal name="VC rshift.41" expl="loop invariant preservation" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC rshift.41.0" expl="VC for rshift" proved="true">
+   <proof prover="0"><result status="valid" time="0.24"/></proof>
+   </goal>
+   <goal name="VC rshift.41.1" expl="VC for rshift" proved="true">
+   <proof prover="3"><result status="valid" time="0.04"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC rshift.42" expl="loop invariant preservation" proved="true">
+  <transf name="introduce_premises" proved="true" >
+   <goal name="VC rshift.42.0" expl="loop invariant preservation" proved="true">
+   <transf name="cut" proved="true" arg1="(i = i1+1)">
+    <goal name="VC rshift.42.0.0" expl="loop invariant preservation" proved="true">
+    <transf name="rewrite" proved="true" arg1="h">
+     <goal name="VC rshift.42.0.0.0" expl="loop invariant preservation" proved="true">
+     <proof prover="3"><result status="valid" time="0.02"/></proof>
+     </goal>
+    </transf>
+    </goal>
+    <goal name="VC rshift.42.0.1" proved="true">
+    <proof prover="3"><result status="valid" time="0.04"/></proof>
+    </goal>
+   </transf>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC rshift.43" expl="loop invariant preservation" proved="true">
+  <proof prover="0"><result status="valid" time="3.35"/></proof>
+  <proof prover="2" memlimit="2000"><result status="valid" time="0.17"/></proof>
+  </goal>
+  <goal name="VC rshift.44" expl="loop invariant preservation" proved="true">
+  <proof prover="2"><result status="valid" time="0.19"/></proof>
+  </goal>
+  <goal name="VC rshift.45" expl="loop invariant preservation" proved="true">
+  <proof prover="2"><result status="valid" time="0.20"/></proof>
+  <proof prover="4"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC rshift.46" expl="loop invariant preservation" proved="true">
+  <proof prover="3"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC rshift.47" expl="loop invariant preservation" proved="true">
+  <proof prover="3"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC rshift.48" expl="loop invariant preservation" proved="true">
+  <proof prover="0"><result status="valid" time="0.12"/></proof>
+  <proof prover="2" memlimit="2000"><result status="valid" time="0.10"/></proof>
+  <proof prover="4" memlimit="2000"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC rshift.49" expl="loop invariant preservation" proved="true">
+  <proof prover="3"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC rshift.50" expl="loop invariant preservation" proved="true">
+  <proof prover="3"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC rshift.51" expl="loop invariant preservation" proved="true">
+  <proof prover="2"><result status="valid" time="0.22"/></proof>
+  </goal>
+  <goal name="VC rshift.52" expl="loop invariant preservation" proved="true">
+  <proof prover="2" memlimit="2000"><result status="valid" time="0.18"/></proof>
+  </goal>
+  <goal name="VC rshift.53" expl="loop invariant preservation" proved="true">
+  <proof prover="2"><result status="valid" time="0.16"/></proof>
+  <proof prover="4"><result status="valid" time="0.01"/></proof>
+  </goal>
+  <goal name="VC rshift.54" expl="assertion" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC rshift.54.0" expl="assertion" proved="true">
+   <transf name="introduce_premises" proved="true" >
+    <goal name="VC rshift.54.0.0" expl="assertion" proved="true">
+    <transf name="inline_goal" proved="true" >
+     <goal name="VC rshift.54.0.0.0" expl="assertion" proved="true">
+     <proof prover="0"><result status="valid" time="0.08"/></proof>
+     </goal>
+    </transf>
+    </goal>
+   </transf>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC rshift.55" expl="precondition" proved="true">
+  <proof prover="4"><result status="valid" time="0.04"/></proof>
+  </goal>
+  <goal name="VC rshift.56" expl="assertion" proved="true">
+  <proof prover="0"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC rshift.57" expl="precondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.09"/></proof>
+  </goal>
+  <goal name="VC rshift.58" expl="precondition" proved="true">
+  <proof prover="2" memlimit="2000"><result status="valid" time="0.09"/></proof>
+  </goal>
+  <goal name="VC rshift.59" expl="precondition" proved="true">
+  <proof prover="2" timelimit="1"><result status="valid" time="0.10"/></proof>
+  </goal>
+  <goal name="VC rshift.60" expl="assertion" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC rshift.60.0" expl="assertion" proved="true">
+   <proof prover="0"><result status="valid" time="0.02"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC rshift.61" expl="precondition" proved="true">
+  <proof prover="0" memlimit="1000"><result status="valid" time="1.94"/></proof>
+  <proof prover="2"><result status="valid" time="0.14"/></proof>
+  <proof prover="4"><result status="valid" time="0.05"/></proof>
+  </goal>
+  <goal name="VC rshift.62" expl="assertion" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC rshift.62.0" expl="VC for rshift" proved="true">
+   <transf name="introduce_premises" proved="true" >
+    <goal name="VC rshift.62.0.0" expl="VC for rshift" proved="true">
+    <transf name="cut" proved="true" arg1="(sz = msb + 1)">
+     <goal name="VC rshift.62.0.0.0" expl="VC for rshift" proved="true">
+     <transf name="rewrite" proved="true" arg1="h">
+      <goal name="VC rshift.62.0.0.0.0" expl="VC for rshift" proved="true">
+      <proof prover="2" timelimit="1"><result status="valid" time="0.08"/></proof>
+      </goal>
+     </transf>
+     </goal>
+     <goal name="VC rshift.62.0.0.1" proved="true">
+     <proof prover="2" timelimit="1"><result status="valid" time="0.06"/></proof>
+     </goal>
+    </transf>
+    </goal>
+   </transf>
+   </goal>
+   <goal name="VC rshift.62.1" expl="VC for rshift" proved="true">
+   <proof prover="2" timelimit="1"><result status="valid" time="0.37"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC rshift.63" expl="assertion" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC rshift.63.0" expl="VC for rshift" proved="true">
+   <proof prover="0"><result status="valid" time="0.41"/></proof>
+   </goal>
+   <goal name="VC rshift.63.1" expl="VC for rshift" proved="true">
+   <transf name="introduce_premises" proved="true" >
+    <goal name="VC rshift.63.1.0" expl="VC for rshift" proved="true">
+    <transf name="inline_goal" proved="true" >
+     <goal name="VC rshift.63.1.0.0" expl="VC for rshift" proved="true">
+     <proof prover="0"><result status="valid" time="0.08"/></proof>
+     </goal>
+    </transf>
+    </goal>
+   </transf>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC rshift.64" expl="postcondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.02"/></proof>
+  </goal>
+ </transf>
+ </goal>
+</theory>
+</file>
+</why3session>
diff --git a/examples/multiprecision/logical/why3shapes.gz b/examples/multiprecision/logical/why3shapes.gz
new file mode 100644
index 0000000000000000000000000000000000000000..aaa3eed43263f1cc131488e1f9cc8a8611bf413f
GIT binary patch
literal 10701
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
E0BDr*vj6}9

literal 0
HcmV?d00001

diff --git a/examples/multiprecision/mul.mlw b/examples/multiprecision/mul.mlw
new file mode 100644
index 0000000000..39db51cca9
--- /dev/null
+++ b/examples/multiprecision/mul.mlw
@@ -0,0 +1,601 @@
+module Mul
+
+  use import int.Int
+  use import mach.int.Int32
+  use import mach.int.UInt64GMP as Limb
+  use import int.Power
+  use import ref.Ref
+  use import mach.c.C
+  use import array.Array
+  use import map.Map
+  use import types.Types
+  use import lemmas.Lemmas
+  use import util.Util
+  use import add.Add
+
+
+    (** [mul_limb r x y sz] multiplies [x[0..sz-1]] by the limb [y] and
+    writes the n least significant limbs in [r], and returns the most
+    significant limb. It corresponds to [mpn_mul_1]. *)
+  let mul_limb (r x:t) (y:limb) (sz:int32) : limb
+    requires { valid x sz }
+    requires { valid r sz }
+    ensures { value r sz + (power radix sz) * result
+                = value x sz * y }
+    ensures { forall j. (j < offset r \/ offset r + sz <= j)
+              -> (pelts r)[j] = old (pelts r)[j] }
+    writes { r.data.elts }
+  =
+    let limb_zero = Limb.of_int 0 in
+    let lx = ref limb_zero in
+    let c = ref limb_zero in
+    let i = ref (Int32.of_int 0) in
+    while Int32.(<) !i sz do
+      variant { sz - !i }
+      invariant { 0 <= !i <= sz }
+      invariant { value r !i + (power radix !i) * !c =
+                  value x !i * y }
+      invariant { forall j. (j < offset r \/ offset r + sz <= j)
+                -> (pelts r)[j] = old (pelts r)[j] }
+      label StartLoop in
+      lx := get_ofs x !i;
+      let rl, rh = Limb.mul_double !lx y in
+      let res, carry = Limb.add_with_carry rl !c limb_zero in
+      label BeforeWrite in
+      value_sub_shift_no_change (pelts r) r.offset (p2i !i) (p2i !i) res;
+      set_ofs r !i res;
+      assert { value r !i + (power radix !i) * !c =
+                  value x !i * y };
+      assert { rh < radix - 1
+               by
+               (!lx * y <= !lx * (radix-1) <= (radix-1)*(radix-1)
+                 by
+                0 <= !lx <= radix - 1 /\ 0 <= y <= radix -1)
+                 /\
+               (radix * rh <= !lx * y
+                 by
+               rl + radix * rh = !lx * y)
+               so
+               radix * rh <= (radix -1) * (radix -1)
+               };
+      c := Limb.(+) rh carry;
+      value_tail r !i;
+      value_tail x !i;
+      assert { value x (!i+1) * y
+               = value x !i * y + power radix !i * (!lx * y) };
+               (*nonlinear, needed for reflection*)
+      assert { value r (!i+1) + (power radix (!i+1)) * !c =
+               value x (!i+1) * y
+              (* by
+                 value r !i + !c * (power radix !i)
+               = value r k + res * (power radix k)
+                     + (power radix !i) * !c
+               = value r k + (power radix k) * res
+                     + (power radix k) * radix * !c
+               = value r k + (power radix k) * (res + radix * !c)
+               = value r k + (power radix k) *
+                                   (res + radix * (rh + carry))
+               = value r k + (power radix k) *
+                                   (res + radix * carry + radix * rh)
+               = value r k + (power radix k) *
+                                   ((!c at StartLoop) + rl + radix*rh)
+               = value r k + (power radix k) *
+                                   ((!c at StartLoop) + !lx * y)
+               = value r k + (power radix k) * (!c at StartLoop)
+                                 + (power radix k) * !lx * y
+               = value x k * y + (power radix k) * !lx * y
+               = (value x k + (power radix k) * !lx) * y
+               = value x !i * y *)
+               };
+      i := Int32.(+) !i (Int32.of_int 1);
+    done;
+    !c
+
+  (** [addmul_limb r x y sz] multiplies [(x, sz)] by [y], adds the [sz]
+      least significant limbs to [(r, sz)] and writes the result in [(r,sz)].
+      Returns the most significant limb of the product plus the carry
+      of the addition. Corresponds to [mpn_addmul_1].*)
+  let addmul_limb (r x:t) (y:limb) (sz:int32):limb
+    requires { valid x sz }
+    requires { valid r sz }
+    ensures { value r sz + (power radix sz) * result
+            = value (old r) sz
+              + value x sz * y }
+    writes { r.data.elts }
+    ensures { forall j. (j < r.offset \/ r.offset + sz <= j) ->
+              (pelts r)[j] = (pelts (old r))[j] }
+  =
+    let limb_zero = Limb.of_int 0 in
+    let lx = ref limb_zero in
+    let lr = ref limb_zero in
+    let c = ref limb_zero in
+    let i = ref (Int32.of_int 0) in
+    while Int32.(<) !i sz do
+      variant { sz - !i }
+      invariant { 0 <= !i <= sz }
+      invariant { value r !i + (power radix !i) * !c
+                 = value (old r) !i
+                   + value x !i * y }
+      invariant { forall j. !i <= j < sz ->
+                 (pelts (old r)) [r.offset+j] = (pelts r)[r.offset + j]  }
+      invariant { forall j. j < r.offset \/ r.offset + sz <= j ->
+                 (pelts r)[j] = (pelts (old r))[j] }
+      label StartLoop in
+      lx := get_ofs x !i;
+      lr := get_ofs r !i;
+      assert { !lr = (pelts (old r))[r.offset + !i] };
+      let rl, rh = Limb.mul_double !lx y in
+      let res, carry = Limb.add3 !lr rl !c in
+      value_tail r !i;
+      value_tail x !i;
+      assert { value (old r) (!i+1) = value (old r) !i + power radix !i * !lr };
+      (* value_tail (old r) !i... *)
+      value_sub_update (pelts r) (r.offset + p2i !i)
+                       r.offset (r.offset + p2i !i +1) res;
+      set_ofs r !i res;
+      assert { forall j. (!i + 1) <= j < sz ->
+               (pelts (old r))[r.offset+j] = (pelts r)[r.offset+j]
+               by
+               (pelts r)[r.offset+j] = ((pelts r) at StartLoop)[r.offset+j]
+                                  = (pelts (old r))[r.offset+j] };
+      assert { value r (!i + 1)
+              = value (r at StartLoop) (!i + 1)
+                + (power radix !i) * (res - !lr) };
+      assert { rl + radix * rh <= (radix-1)*(radix-1)
+               by
+               (!lx * y <= !lx * (radix-1) <= (radix-1)*(radix-1)
+                 by
+                0 <= !lx <= radix - 1 /\ 0 <= y <= radix -1)
+                /\
+                rl + radix * rh = !lx * y };
+      assert { rh < radix - 1
+               by
+               rl + radix * rh  <= (radix -1) * (radix -1)
+               so
+               radix * rh <= (radix -1) * (radix -1) };
+      assert { rh = radix - 2 -> rl <= 1
+               by
+               rl + radix * rh <= (radix-1)*(radix-1) };
+      assert { rh = radix - 2 -> carry <= 1
+               by rl <= 1 };
+      c := Limb.(+) rh carry;
+      assert { value x (!i + 1) * y
+               = value x !i * y + (power radix !i) * (!lx * y) };
+               (* nonlinear part *)
+      assert { value r (!i+1) + (power radix (!i+1)) * !c
+                 = value (old r) (!i+1)
+                   + value x (!i+1) * y
+               (* by
+                (value r !i + (power radix !i) * !c
+                = value (r at StartLoop) !i +
+                   (power radix k) * (res - !lr)
+                   + (power radix !i) * !c
+                = value (r at StartLoop) !i +
+                   (power radix k) * (res - !lr)
+                   + (power radix !i) * (rh + carry)
+                = value (r at StartLoop) !i +
+                   (power radix k) * (res - !lr)
+                   + (power radix k) * radix * (rh + carry)
+                = value (r at StartLoop) !i +
+                   (power radix k) * (res - !lr
+                                   + radix * (rh + carry))
+                = value (r at StartLoop) !i +
+                   (power radix k) * (res + radix * carry
+                          - !lr + radix * rh)
+                = value (r at StartLoop) !i +
+                   (power radix k) * (rl + !lr + (!c at StartLoop)
+                          - !lr + radix * rh)
+                = value (r at StartLoop) !i +
+                   (power radix k) * (rl + radix * rh + (!c at StartLoop))
+                = value (r at StartLoop) !i +
+                   (power radix k) * (!lx * y + (!c at StartLoop))
+                = value (r at StartLoop) k
+                    + (power radix k) * !lr
+                    + (power radix k) * (!lx * y + (!c at StartLoop))
+                = value (r at StartLoop) k
+                    + (power radix k) * (!c at StartLoop)
+                    + (power radix k) * (!lx * y + !lr)
+                = value (old r) k
+                    + value x k * y
+                    + (power radix k) * (!lx * y + !lr)
+                = value (old r) k
+                    + (power radix k) * !lr
+                    + (value x k + (power radix k)* (!lx)) * y
+                = value (old r) !i
+                    + (value x k + (power radix k)* (!lx)) * y
+                = value (old r) !i
+                    + value x !i * y
+                    by
+                  value (old r) !i = value (old r) k
+                     + (power radix k) * (!lr)
+                     ) *)
+                    };
+      i := Int32.(+) !i (Int32.of_int 1);
+    done;
+    !c
+
+  (** [mul_limbs r x y sz] multiplies [(x, sz)] and [(y, sz)] and
+  writes the result to [(r, 2*sz)]. [r] must not overlap with either
+  [x] or [y]. Corresponds to [mpn_mul_n].  *)
+  let mul_limbs (r x y:t) (sz:int32) : unit
+    requires { sz > 0 }
+    requires { valid x sz }
+    requires { valid y sz }
+    requires { valid r (sz + sz) }
+    writes { r.data.elts }
+    ensures { value r (sz + sz)
+              = value x sz * value y sz }
+    ensures { forall j. (j < offset r \/ offset r + (sz + sz) <= j)
+              -> (pelts r)[j] = old (pelts r)[j] }
+  =
+    zero r sz;
+    let limb_zero = Limb.of_int 0 in
+    let one = Int32.of_int 1 in
+    let rp = ref (C.incr r (Int32.of_int 0)) in
+    let ly = ref limb_zero in
+    let i = ref (Int32.of_int 0) in
+    while Int32.(<) !i sz do
+      invariant { 0 <= !i <= sz }
+      invariant { value r (!i + sz) = value x sz * value y !i }
+      invariant { (!rp).offset = r.offset + !i }
+      invariant { plength !rp = plength r }
+      invariant { !rp.min = r.min }
+      invariant { !rp.max = r.max }
+      invariant { pelts !rp = pelts r }
+      invariant { forall j. (j < offset r \/ offset r + (sz + sz) <= j)
+                -> (pelts r)[j] = old (pelts r)[j] }
+      variant { sz - !i }
+      label StartLoop in
+      value_concat r !i (!i + sz);
+      assert { value !rp sz
+               = value_sub (pelts r) (offset r + !i) (offset r + (!i + sz)) };
+      ly := get_ofs y !i;
+      let c' =  addmul_limb !rp x !ly sz in
+      assert { value !rp sz + power radix sz * c'
+              = value (!rp at StartLoop) sz + value x sz * !ly };
+      assert { MapEq.map_eq_sub (pelts r) (pelts r at StartLoop)
+                r.offset (!rp).offset
+                by (!rp).offset = r.offset + !i
+                so forall j. r.offset <= j < (!rp).offset
+                   ->
+                   (j < (!rp).offset
+                    so (pelts !rp)[j] = (pelts !rp at StartLoop)[j]
+                         = (pelts r at StartLoop)[j]) };
+      label BeforeCarry in
+      value_sub_update_no_change (pelts r) ((!rp).offset + p2i sz)
+                        r.offset (r.offset + p2i !i) c';
+      set_ofs !rp sz c';
+      assert { (pelts !rp)[offset !rp + sz] = c'
+                = (pelts r)[offset r + (!i + sz)] };
+      assert { value r !i = value (r at BeforeCarry) !i
+             = value (r at StartLoop) !i};
+      value_tail r (!i + sz);
+      assert { value r (!i + sz + 1) = value r (!i + sz)
+                     + power radix (!i + sz) * (pelts r)[offset r + (!i + sz)] };
+      value_tail y !i;
+      value_concat r !i (!i + sz);
+      assert { value_sub (pelts r) (r.offset + !i) (r.offset + (!i + sz))
+               = value !rp sz };
+      assert { value !rp sz = value (!rp at BeforeCarry) sz };
+      assert { value !rp sz + power radix sz * c'
+                 = value (!rp at StartLoop) sz + value x sz * !ly };
+      assert { value (r at StartLoop) !i
+                 + (power radix !i) * value_sub (pelts r at StartLoop)
+                                   (r.offset + !i) (r.offset + (!i + sz))
+                 = value (r at StartLoop) (!i + sz) };
+      assert { value x sz * value y (!i + 1)
+               = value x sz * value y !i + (power radix !i) * (value x sz * !ly) };
+             (* nonlinear *)
+      assert { value r (!i + sz + 1) = value x sz * value y (!i+1) };
+      i := Int32.(+) !i one;
+      rp.contents <- C.incr !rp one;
+    done
+
+ let addmul_limbs (r x y:t) (sz:int32) : limb
+    requires { sz > 0 }
+    requires { valid x sz }
+    requires { valid y sz }
+    requires { valid r (sz +  sz) }
+    writes { r.data.elts }
+    ensures { value r (sz + sz)
+                + power radix (sz + sz) * result
+              = value (old r) (sz + sz)
+                + value x sz * value y sz }
+  =
+    let limb_zero = Limb.of_int 0 in
+    let one = Int32.of_int 1 in
+    let rp = ref (C.incr r (Int32.of_int 0)) in
+    let ly = ref limb_zero in
+    let lr = ref limb_zero in
+    let c = ref limb_zero in
+    let i = ref (Int32.of_int 0) in
+    while Int32.(<) !i sz do
+      invariant { 0 <= !i <= sz }
+      invariant { value r (!i + sz)
+                    + (power radix (!i + sz)) * !c
+                  = value (old r) (!i + sz)
+                    + value x sz * value y !i }
+      invariant { (!rp).offset = r.offset + !i }
+      invariant { !rp.min = r.min }
+      invariant { !rp.max = r.max }
+      invariant { r.data = (!rp).data }
+      invariant { 0 <= !c <= 1 }
+      invariant { forall j. (!rp).offset + sz <= j ->
+                 (pelts (old r)) [j] = (pelts r)[j] }
+      variant { sz - !i }
+      label StartLoop in
+      value_concat r !i (!i+sz);
+      assert { value !rp sz
+               = value_sub (pelts r) (r.offset + !i) (r.offset + (!i + sz)) };
+      ly := get_ofs y !i;
+      let c' =  addmul_limb !rp x !ly sz in
+      assert { forall j. (!rp).offset + sz <= j ->
+                 (pelts (old r)) [j] = (pelts r)[j]
+                 by (pelts r)[j]
+                 = (pelts !rp)[j]
+                 = (pelts !rp)[j] at StartLoop
+                 = (pelts (old r))[j]};
+      assert { value !rp sz + power radix sz * c'
+              = value (!rp at StartLoop) sz + value x sz * !ly };
+      assert { MapEq.map_eq_sub (pelts r) (pelts r at StartLoop)
+                r.offset (!rp).offset
+                by (!rp).offset = r.offset + !i
+                so forall j. r.offset <= j < (!rp).offset
+                   ->
+                   (j < (!rp).offset
+                    so (pelts !rp)[j] = (pelts !rp at StartLoop)[j]
+                         = (pelts r at StartLoop)[j]) };
+      lr := get_ofs !rp sz;
+      assert { !lr = (pelts (old r))[(old r).offset + (!i + sz)] };
+      let (res, carry) = add_with_carry c' !lr !c in
+      label BeforeCarry in
+      value_sub_update_no_change (pelts r) ((!rp).offset + p2i sz)
+                        r.offset  (r.offset + p2i !i) res;
+      set_ofs !rp sz res;
+      assert { value !rp sz = value (!rp at BeforeCarry) sz };
+      c:= carry;
+      assert { value r !i = value (r at BeforeCarry) !i
+               = value (r at StartLoop) !i};
+      value_tail r (!i+sz);
+      value_tail y !i;
+      assert { value (old r) ((!i+sz)+1)
+               = value (old r) (!i+sz) + power radix (!i+sz) * !lr };
+      assert { (pelts r)[r.offset + (!i + sz)] = res };
+      value_concat r !i (!i+sz);
+      assert { value_sub (pelts r) (r.offset + !i) (r.offset+(!i+sz))
+               = value !rp sz };
+      assert { value x sz * value y (!i+1)
+               = value x sz * value y !i + power radix !i * (value x sz * !ly) };
+             (* nonlinear *)
+      assert { value r (!i + sz + 1)
+                    + (power radix (!i + sz + 1)) * !c
+                  = value (old r) (!i + sz + 1)
+                    + value x sz
+                      * value y (!i + 1)
+               (*by
+                 power radix (k + sz) = power radix k * power radix sz
+               so
+                 power radix (!i + sz) = power radix k * power radix sz * radix
+               so
+                 value (r at StartLoop) k
+                 + (power radix k) * value_sub (pelts r at StartLoop)
+                                   (r.offset + k) (r.offset + k + sz)
+                 = value (r at StartLoop) (k + sz)
+               so (value (old r) (!i+sz)
+                  = value (old r) (k+sz)
+                  + power radix (k+sz) * !lr
+                  by !lr = (pelts (old r))[r.offset + k + sz])
+               so
+                  value !rp sz + (power radix sz) * c' =
+                  value (!rp at StartLoop) sz
+                  + value x sz * !ly
+               so
+                 value r (!i + sz)
+                    + (power radix (!i + sz)) * !c
+               = value r (k + sz)
+                    + (power radix (k + sz)) * res
+                    + (power radix (!i + sz)) * !c
+               = value r k
+                    + (power radix k) * value !rp sz
+                    + (power radix (k + sz)) * res
+                    + (power radix (!i + sz)) * !c
+               = value r k
+                    + (power radix k) * value !rp sz
+                    + (power radix k) * (power radix sz) * res
+                    + (power radix (!i + sz)) * !c
+               = value r k
+                    + (power radix k) * value !rp sz
+                    + (power radix k) * (power radix sz) * res
+                    + (power radix k) * (power radix sz) * radix * !c
+               = value r k
+                    + (power radix k) * value !rp sz
+                    + (power radix k) * (power radix sz)
+                             * (res + radix * !c)
+               = value r k
+                    + (power radix k) * value !rp sz
+                    + (power radix k) * (power radix sz)
+                             * (c' + (!c at StartLoop) + !lr)
+               = value r k + (power radix k)
+                    * (value !rp sz
+                      + power radix sz * (c'+ (!c at StartLoop) + !lr))
+               = value r k + (power radix k)
+                    * (value !rp sz
+                      + power radix sz * c'
+                      + power radix sz * ((!c at StartLoop) + !lr))
+               = value r k + (power radix k)
+                    * (value (!rp at StartLoop) sz
+                       + value x sz * !ly
+                       + (power radix sz) * ((!c at StartLoop) + !lr))
+               = value r k
+                 + power radix k * (value (!rp at StartLoop) sz)
+                 + power radix k * (value x sz * !ly
+                    + (power radix sz) * ((!c at StartLoop) + !lr))
+               = value (r at StartLoop) k
+                 + power radix k * (value (!rp at StartLoop) sz)
+                 + power radix k * (value x sz * !ly
+                    + (power radix sz) * ((!c at StartLoop) + !lr))
+               = value (r at StartLoop) k
+                 + power radix k * (value_sub (pelts r at StartLoop) (r.offset+k)
+                                              (r.offset+k+ sz))
+                 + power radix k * (value x sz * !ly
+                    + (power radix sz) * ((!c at StartLoop) + !lr))
+               = value (r at StartLoop) (k + sz)
+                 + power radix k * (value x sz * !ly
+                    + (power radix sz) * ((!c at StartLoop) + !lr))
+               = value (r at StartLoop) (k + sz)
+                 + power radix k * value x sz * !ly
+                 + power radix k * power radix sz * ((!c at StartLoop) + !lr)
+               = value (r at StartLoop) (k + sz)
+                 + power radix k * power radix sz * ((!c at StartLoop) + !lr)
+                 + power radix k * value x sz * !ly
+               = value (r at StartLoop) (k + sz)
+                 + power radix (k + sz) * ((!c at StartLoop) + !lr)
+                 + power radix k * value x sz * !ly
+               = value (r at StartLoop) (k + sz)
+                 + power radix (k + sz) * ((!c at StartLoop))
+                 + power radix (k + sz) * !lr
+                 + power radix k * value x sz * !ly
+               = value (old r) (k+sz)
+                 + value x sz * value y k
+                 + power radix (k + sz) * !lr
+                 + power radix k * value x sz * !ly
+               = value (old r) (k+sz)
+                 + power radix (k + sz) * !lr
+                 + value x sz * value y k
+                 + power radix k * value x sz * !ly
+               = value (old r) (k+sz)
+                 + power radix (k + sz) * !lr
+                 + value x sz * (value y k + power radix k * !ly)
+               = value (old r) (k+sz)
+                 + power radix (k + sz) * !lr
+                 + value x sz * value y !i
+               = value (old r) (!i +sz)
+                 + value x sz * value y !i *)
+             };
+      i := Int32.(+) !i one;
+      rp.contents <- C.incr !rp one;
+      assert { forall j. (!rp).offset + sz <= j ->
+                 (pelts (old r)) [j] = (pelts r)[j] };
+    done;
+    !c
+
+  (** [mul r x y sx sy] multiplies [(x, sx)] and [(y,sy)] and writes
+  the result in [(r, sx+sy)]. [sx] must be greater than or equal to
+  [sy]. Corresponds to [mpn_mul]. *)
+  let mul (r x y:t) (sx sy:int32) : unit
+    requires { 0 < sy <= sx }
+    requires { valid x sx }
+    requires { valid y sy }
+    requires { valid r (sy + sx) }
+    writes   { r.data.elts }
+    ensures  { value r (sy + sx) = value x sx * value y sy }
+    ensures { forall j. (j < offset r \/ offset r + (sy + sx) <= j)
+              -> (pelts r)[j] = old (pelts r)[j] }
+    (*ensures  { result = (pelts r)[r.offset + sx + sy - 1] }*)
+  =
+    let ly = ref (C.get y) in
+    let c = mul_limb r x !ly sx in
+    value_sub_update_no_change (pelts r) (r.offset + p2i sx)
+                               r.offset (r.offset + p2i sx - 1) c;
+    set_ofs r sx c;
+    value_sub_tail (pelts r) r.offset (r.offset + p2i sx);
+    assert { value r (sx + 1) = value x sx * value y 1
+             by value y 1 = !ly
+             so value r sx + power radix sx * c = value x sx * value y 1 };
+    let one = Int32.of_int 1 in
+    let rp = ref (C.incr r (Int32.of_int 1)) in
+    let i = ref (Int32.of_int 1) in
+    while Int32.(<) !i sy do
+      invariant { 1 <= !i <= sy }
+      invariant { value r (!i + sx) = value x sx * value y !i }
+      invariant { (!rp).offset = r.offset + !i }
+      invariant { plength !rp = plength r }
+      invariant { !rp.min = r.min }
+      invariant { !rp.max = r.max }
+      invariant { pelts !rp = pelts r }
+      invariant { forall j. (j < offset r \/ offset r + (sy + sx) <= j)
+                -> (pelts r)[j] = old (pelts r)[j] }
+      variant { sy - !i }
+      label StartLoop in
+      value_concat r !i (!i + sx);
+      assert { value !rp sx =
+               value_sub (pelts r) (r.offset + !i) (r.offset + (!i + sx)) };
+      ly := get_ofs y !i;
+      let res =  addmul_limb !rp x !ly sx in
+      assert { value !rp sx + power radix sx * res
+              = value (!rp at StartLoop) sx + value x sx * !ly };
+      assert { MapEq.map_eq_sub (pelts r) (pelts r at StartLoop)
+                r.offset (!rp).offset
+                by (!rp).offset = r.offset + !i
+                so forall j. r.offset <= j < (!rp).offset
+                   ->
+                   (j < (!rp).offset
+                    so (pelts !rp)[j] = (pelts !rp at StartLoop)[j]
+                         = (pelts r at StartLoop)[j]) };
+      label BeforeCarry in
+      value_sub_update_no_change (pelts r) ((!rp).offset + p2i sx)
+                        r.offset  (r.offset + p2i !i) res;
+      set_ofs !rp sx res;
+      assert { value !rp sx = value (!rp at BeforeCarry) sx };
+      assert { value r !i = value (r at BeforeCarry) !i
+             = value (r at StartLoop) !i };
+      value_tail r (!i + sx);
+      value_tail y !i;
+      value_concat r !i (!i+sx);
+      assert { value_sub (pelts r) (r.offset + !i) (r.offset+(!i+sx))
+               = value !rp sx };
+      assert { (pelts r)[r.offset + (!i+sx)] = res };
+      assert { value x sx * value y (!i+1)
+               = value x sx * value y !i
+                 + power radix !i * (value x sx * !ly) };
+             (*nonlinear*)
+      assert { value r (!i + sx + 1) = value x sx * value y (!i+1)
+               (*by (value !rp sx + power radix sx * res
+                   = value (!rp at StartLoop) sx + value x sx * !ly
+                   by value !rp sx = value (!rp at BeforeCarry) sx)
+               so power radix (k + sx) = power radix k * power radix sx
+               so
+                 value (r at StartLoop) k
+                 + (power radix k) * value_sub (pelts r at StartLoop)
+                                   (r.offset + k) (r.offset + k + sx)
+                 = value (r at StartLoop) (k + sx)
+               so
+                 value r (!i + sx)
+               = value r (k + sx)
+                    + (power radix (k + sx)) * res
+               = value r k
+                    + (power radix k) * value !rp sx
+                    + (power radix (k + sx)) * res
+               = value r k
+                    + (power radix k) * value !rp sx
+                    + (power radix k) * (power radix sx) * res
+               = value r k
+                    + (power radix k) * value !rp sx
+                    + (power radix k) * (power radix sx) * res
+               = value r k
+                    + (power radix k) * (value !rp sx + (power radix sx) * res)
+               = value r k + (power radix k)
+                    * (value (!rp at StartLoop) sx
+                       + value x sx * !ly)
+               = value r k
+                 + power radix k * (value (!rp at StartLoop) sx)
+                 + power radix k * (value x sx * !ly)
+               = value (r at StartLoop) k
+                 + power radix k * (value (!rp at StartLoop) sx)
+                 + power radix k * (value x sx * !ly)
+               = value (r at StartLoop) k
+                 + power radix k * (value_sub (pelts r at StartLoop) (r.offset+k)
+                                              (r.offset+k+ sx))
+                 + power radix k * (value x sx * !ly)
+               = value (r at StartLoop) (k + sx)
+                 + power radix k * (value x sx * !ly)
+               = value x sx * value y k
+                + power radix k * value x sx * !ly
+               = value x sx *
+                 (value y k + power radix k * !ly)
+               = value x sx * value y !i *) };
+      i := Int32.(+) !i one;
+      rp.contents <- C.incr !rp one;
+    done;
+
+end
\ No newline at end of file
diff --git a/examples/multiprecision/mul/why3session.xml b/examples/multiprecision/mul/why3session.xml
new file mode 100644
index 0000000000..1c65994f5f
--- /dev/null
+++ b/examples/multiprecision/mul/why3session.xml
@@ -0,0 +1,1471 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE why3session PUBLIC "-//Why3//proof session v5//EN"
+"http://why3.lri.fr/why3session.dtd">
+<why3session shape_version="4">
+<prover id="0" name="Eprover" version="1.9.1-001" timelimit="5" steplimit="0" memlimit="2000"/>
+<prover id="1" name="CVC3" version="2.4.1" timelimit="5" steplimit="0" memlimit="1000"/>
+<prover id="2" name="CVC4" version="1.4" timelimit="1" steplimit="0" memlimit="1000"/>
+<prover id="3" name="Z3" version="4.5.0" timelimit="1" steplimit="0" memlimit="1000"/>
+<prover id="4" name="Z3" version="4.4.1" timelimit="5" steplimit="0" memlimit="1000"/>
+<prover id="5" name="Alt-Ergo" version="2.0.0" timelimit="5" steplimit="0" memlimit="1000"/>
+<file name="../mul.mlw" proved="true">
+<theory name="Mul" proved="true">
+ <goal name="VC mul_limb" expl="VC for mul_limb" proved="true">
+ <transf name="split_goal_right" proved="true" >
+  <goal name="VC mul_limb.0" expl="integer overflow" proved="true">
+  <proof prover="4"><result status="valid" time="0.04"/></proof>
+  </goal>
+  <goal name="VC mul_limb.1" expl="integer overflow" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC mul_limb.1.0" expl="integer overflow" proved="true">
+   <proof prover="5"><result status="valid" time="0.04" steps="20"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC mul_limb.2" expl="loop invariant init" proved="true">
+  <proof prover="5"><result status="valid" time="0.02" steps="11"/></proof>
+  </goal>
+  <goal name="VC mul_limb.3" expl="loop invariant init" proved="true">
+  <proof prover="5" timelimit="1"><result status="valid" time="0.04" steps="70"/></proof>
+  </goal>
+  <goal name="VC mul_limb.4" expl="loop invariant init" proved="true">
+  <proof prover="3"><result status="valid" time="0.01"/></proof>
+  </goal>
+  <goal name="VC mul_limb.5" expl="precondition" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC mul_limb.5.0" expl="VC for mul_limb" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC mul_limb.5.1" expl="VC for mul_limb" proved="true">
+   <proof prover="5" timelimit="1"><result status="valid" time="0.06" steps="20"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC mul_limb.6" expl="precondition" proved="true">
+  <proof prover="4"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC mul_limb.7" expl="precondition" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC mul_limb.7.0" expl="precondition" proved="true">
+   <proof prover="4"><result status="valid" time="0.04"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC mul_limb.8" expl="precondition" proved="true">
+  <proof prover="4"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC mul_limb.9" expl="precondition" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC mul_limb.9.0" expl="VC for mul_limb" proved="true">
+   <proof prover="3"><result status="valid" time="0.01"/></proof>
+   </goal>
+   <goal name="VC mul_limb.9.1" expl="VC for mul_limb" proved="true">
+   <proof prover="3"><result status="valid" time="0.03"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC mul_limb.10" expl="assertion" proved="true">
+  <proof prover="5" timelimit="1"><result status="valid" time="0.05" steps="56"/></proof>
+  </goal>
+  <goal name="VC mul_limb.11" expl="assertion" proved="true">
+  <proof prover="5" timelimit="1"><result status="valid" time="0.06" steps="56"/></proof>
+  </goal>
+  <goal name="VC mul_limb.12" expl="integer overflow" proved="true">
+  <proof prover="4"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC mul_limb.13" expl="precondition" proved="true">
+  <proof prover="5"><result status="valid" time="0.05" steps="36"/></proof>
+  </goal>
+  <goal name="VC mul_limb.14" expl="precondition" proved="true">
+  <proof prover="4"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC mul_limb.15" expl="assertion" proved="true">
+  <proof prover="5" timelimit="1"><result status="valid" time="0.28" steps="38"/></proof>
+  </goal>
+  <goal name="VC mul_limb.16" expl="assertion" proved="true">
+  <transf name="introduce_premises" proved="true" >
+   <goal name="VC mul_limb.16.0" expl="assertion" proved="true">
+   <transf name="use_th" proved="true" arg1="lineardecision.LinearDecisionIntMP">
+    <goal name="VC mul_limb.16.0.0" expl="assertion" proved="true">
+    <transf name="reflection_f" proved="true" arg1="mp_decision">
+     <goal name="VC mul_limb.16.0.0.0" expl="assertion" proved="true">
+     <proof prover="0"><result status="valid" time="0.22"/></proof>
+     </goal>
+     <goal name="VC mul_limb.16.0.0.1" proved="true">
+     <proof prover="3"><result status="valid" time="0.32"/></proof>
+     </goal>
+     <goal name="VC mul_limb.16.0.0.2" proved="true">
+     <proof prover="3"><result status="valid" time="0.20"/></proof>
+     </goal>
+    </transf>
+    </goal>
+   </transf>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC mul_limb.17" expl="integer overflow" proved="true">
+  <proof prover="4"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC mul_limb.18" expl="integer overflow" proved="true">
+  <proof prover="4"><result status="valid" time="0.06"/></proof>
+  </goal>
+  <goal name="VC mul_limb.19" expl="loop variant decrease" proved="true">
+  <proof prover="4"><result status="valid" time="0.05"/></proof>
+  </goal>
+  <goal name="VC mul_limb.20" expl="loop invariant preservation" proved="true">
+  <proof prover="4"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC mul_limb.21" expl="loop invariant preservation" proved="true">
+  <proof prover="0" timelimit="10"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC mul_limb.22" expl="loop invariant preservation" proved="true">
+  <proof prover="2"><result status="valid" time="0.15"/></proof>
+  </goal>
+  <goal name="VC mul_limb.23" expl="postcondition" proved="true">
+  <proof prover="5"><result status="valid" time="0.01" steps="19"/></proof>
+  </goal>
+  <goal name="VC mul_limb.24" expl="postcondition" proved="true">
+  <proof prover="3"><result status="valid" time="0.04"/></proof>
+  </goal>
+ </transf>
+ </goal>
+ <goal name="VC addmul_limb" expl="VC for addmul_limb" proved="true">
+ <transf name="split_goal_right" proved="true" >
+  <goal name="VC addmul_limb.0" expl="integer overflow" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC addmul_limb.0.0" expl="integer overflow" proved="true">
+   <proof prover="4"><result status="valid" time="0.03"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC addmul_limb.1" expl="integer overflow" proved="true">
+  <proof prover="4"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC addmul_limb.2" expl="loop invariant init" proved="true">
+  <proof prover="0" memlimit="1000"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC addmul_limb.3" expl="loop invariant init" proved="true">
+  <proof prover="5" timelimit="1"><result status="valid" time="0.03" steps="69"/></proof>
+  </goal>
+  <goal name="VC addmul_limb.4" expl="loop invariant init" proved="true">
+  <proof prover="4"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC addmul_limb.5" expl="loop invariant init" proved="true">
+  <proof prover="4"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC addmul_limb.6" expl="precondition" proved="true">
+  <proof prover="4"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC addmul_limb.7" expl="precondition" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC addmul_limb.7.0" expl="VC for addmul_limb" proved="true">
+   <proof prover="4"><result status="valid" time="0.03"/></proof>
+   </goal>
+   <goal name="VC addmul_limb.7.1" expl="VC for addmul_limb" proved="true">
+   <proof prover="4"><result status="valid" time="0.04"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC addmul_limb.8" expl="assertion" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC addmul_limb.8.0" expl="assertion" proved="true">
+   <proof prover="5" timelimit="1"><result status="valid" time="0.02" steps="45"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC addmul_limb.9" expl="precondition" proved="true">
+  <proof prover="4"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC addmul_limb.10" expl="precondition" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC addmul_limb.10.0" expl="precondition" proved="true">
+   <proof prover="1" memlimit="2000"><result status="valid" time="0.07"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC addmul_limb.11" expl="assertion" proved="true">
+  <proof prover="0" timelimit="10"><result status="valid" time="6.40"/></proof>
+  </goal>
+  <goal name="VC addmul_limb.12" expl="precondition" proved="true">
+  <proof prover="4"><result status="valid" time="0.09"/></proof>
+  </goal>
+  <goal name="VC addmul_limb.13" expl="precondition" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC addmul_limb.13.0" expl="VC for addmul_limb" proved="true">
+   <transf name="introduce_premises" proved="true" >
+    <goal name="VC addmul_limb.13.0.0" expl="VC for addmul_limb" proved="true">
+    <transf name="inline_goal" proved="true" >
+     <goal name="VC addmul_limb.13.0.0.0" expl="VC for addmul_limb" proved="true">
+     <proof prover="0" memlimit="1000"><result status="valid" time="0.14"/></proof>
+     </goal>
+    </transf>
+    </goal>
+   </transf>
+   </goal>
+   <goal name="VC addmul_limb.13.1" expl="VC for addmul_limb" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC addmul_limb.14" expl="assertion" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC addmul_limb.14.0" expl="assertion" proved="true">
+   <proof prover="4"><result status="valid" time="0.05"/></proof>
+   </goal>
+   <goal name="VC addmul_limb.14.1" expl="assertion" proved="true">
+   <proof prover="0"><result status="valid" time="0.39"/></proof>
+   </goal>
+   <goal name="VC addmul_limb.14.2" expl="VC for addmul_limb" proved="true">
+   <proof prover="4"><result status="valid" time="0.06"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC addmul_limb.15" expl="assertion" proved="true">
+  <proof prover="0"><result status="valid" time="2.24"/></proof>
+  </goal>
+  <goal name="VC addmul_limb.16" expl="assertion" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC addmul_limb.16.0" expl="VC for addmul_limb" proved="true">
+   <proof prover="3"><result status="valid" time="0.03"/></proof>
+   </goal>
+   <goal name="VC addmul_limb.16.1" expl="VC for addmul_limb" proved="true">
+   <proof prover="3"><result status="valid" time="0.04"/></proof>
+   </goal>
+   <goal name="VC addmul_limb.16.2" expl="VC for addmul_limb" proved="true">
+   <proof prover="3"><result status="valid" time="0.03"/></proof>
+   </goal>
+   <goal name="VC addmul_limb.16.3" expl="VC for addmul_limb" proved="true">
+   <proof prover="3"><result status="valid" time="0.03"/></proof>
+   </goal>
+   <goal name="VC addmul_limb.16.4" expl="VC for addmul_limb" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC addmul_limb.16.5" expl="VC for addmul_limb" proved="true">
+   <transf name="introduce_premises" proved="true" >
+    <goal name="VC addmul_limb.16.5.0" expl="VC for addmul_limb" proved="true">
+    <transf name="apply" proved="true" arg1="prod_compat_r">
+     <goal name="VC addmul_limb.16.5.0.0" proved="true">
+     <proof prover="3"><result status="valid" time="0.02"/></proof>
+     </goal>
+     <goal name="VC addmul_limb.16.5.0.1" proved="true">
+     <proof prover="3"><result status="valid" time="0.02"/></proof>
+     </goal>
+    </transf>
+    </goal>
+   </transf>
+   </goal>
+   <goal name="VC addmul_limb.16.6" expl="VC for addmul_limb" proved="true">
+   <proof prover="0"><result status="valid" time="0.03"/></proof>
+   </goal>
+   <goal name="VC addmul_limb.16.7" expl="VC for addmul_limb" proved="true">
+   <proof prover="3"><result status="valid" time="0.04"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC addmul_limb.17" expl="assertion" proved="true">
+  <proof prover="3"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC addmul_limb.18" expl="assertion" proved="true">
+  <proof prover="3"><result status="valid" time="0.04"/></proof>
+  </goal>
+  <goal name="VC addmul_limb.19" expl="assertion" proved="true">
+  <proof prover="4"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC addmul_limb.20" expl="integer overflow" proved="true">
+  <proof prover="4"><result status="valid" time="0.04"/></proof>
+  </goal>
+  <goal name="VC addmul_limb.21" expl="assertion" proved="true">
+  <proof prover="0" timelimit="10"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC addmul_limb.22" expl="assertion" proved="true">
+  <transf name="introduce_premises" proved="true" >
+   <goal name="VC addmul_limb.22.0" expl="assertion" proved="true">
+   <transf name="use_th" proved="true" arg1="lineardecision.LinearDecisionIntMP">
+    <goal name="VC addmul_limb.22.0.0" expl="assertion" proved="true">
+    <transf name="reflection_f" proved="true" arg1="mp_decision">
+     <goal name="VC addmul_limb.22.0.0.0" expl="assertion" proved="true">
+     <proof prover="0"><result status="valid" time="0.38"/></proof>
+     </goal>
+     <goal name="VC addmul_limb.22.0.0.1" proved="true">
+     <proof prover="3"><result status="valid" time="0.27"/></proof>
+     </goal>
+     <goal name="VC addmul_limb.22.0.0.2" proved="true">
+     <proof prover="2"><result status="valid" time="0.34"/></proof>
+     </goal>
+    </transf>
+    </goal>
+   </transf>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC addmul_limb.23" expl="integer overflow" proved="true">
+  <proof prover="4"><result status="valid" time="0.00"/></proof>
+  </goal>
+  <goal name="VC addmul_limb.24" expl="integer overflow" proved="true">
+  <proof prover="4"><result status="valid" time="0.04"/></proof>
+  </goal>
+  <goal name="VC addmul_limb.25" expl="loop variant decrease" proved="true">
+  <proof prover="4"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC addmul_limb.26" expl="loop invariant preservation" proved="true">
+  <proof prover="3"><result status="valid" time="0.05"/></proof>
+  </goal>
+  <goal name="VC addmul_limb.27" expl="loop invariant preservation" proved="true">
+  <proof prover="0" timelimit="10"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC addmul_limb.28" expl="loop invariant preservation" proved="true">
+  <proof prover="0"><result status="valid" time="0.40"/></proof>
+  </goal>
+  <goal name="VC addmul_limb.29" expl="loop invariant preservation" proved="true">
+  <proof prover="2"><result status="valid" time="0.19"/></proof>
+  </goal>
+  <goal name="VC addmul_limb.30" expl="postcondition" proved="true">
+  <proof prover="5" timelimit="1"><result status="valid" time="0.02" steps="19"/></proof>
+  </goal>
+  <goal name="VC addmul_limb.31" expl="postcondition" proved="true">
+  <proof prover="4"><result status="valid" time="0.03"/></proof>
+  </goal>
+ </transf>
+ </goal>
+ <goal name="VC mul_limbs" expl="VC for mul_limbs" proved="true">
+ <transf name="split_goal_right" proved="true" >
+  <goal name="VC mul_limbs.0" expl="precondition" proved="true">
+  <proof prover="5"><result status="valid" time="0.09" steps="27"/></proof>
+  </goal>
+  <goal name="VC mul_limbs.1" expl="integer overflow" proved="true">
+  <proof prover="5" memlimit="2000"><result status="valid" time="0.02" steps="33"/></proof>
+  </goal>
+  <goal name="VC mul_limbs.2" expl="integer overflow" proved="true">
+  <proof prover="4"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC mul_limbs.3" expl="integer overflow" proved="true">
+  <proof prover="5"><result status="valid" time="0.02" steps="35"/></proof>
+  </goal>
+  <goal name="VC mul_limbs.4" expl="precondition" proved="true">
+  <proof prover="5" timelimit="1"><result status="valid" time="0.01" steps="35"/></proof>
+  </goal>
+  <goal name="VC mul_limbs.5" expl="integer overflow" proved="true">
+  <proof prover="4"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC mul_limbs.6" expl="loop invariant init" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC mul_limbs.6.0" expl="VC for mul_limbs" proved="true">
+   <proof prover="2" timelimit="5" memlimit="2000"><result status="valid" time="0.06"/></proof>
+   </goal>
+   <goal name="VC mul_limbs.6.1" expl="VC for mul_limbs" proved="true">
+   <proof prover="3"><result status="valid" time="0.04"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC mul_limbs.7" expl="loop invariant init" proved="true">
+  <proof prover="5" timelimit="1"><result status="valid" time="0.04" steps="107"/></proof>
+  </goal>
+  <goal name="VC mul_limbs.8" expl="loop invariant init" proved="true">
+  <proof prover="5"><result status="valid" time="0.03" steps="30"/></proof>
+  </goal>
+  <goal name="VC mul_limbs.9" expl="loop invariant init" proved="true">
+  <proof prover="4"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC mul_limbs.10" expl="loop invariant init" proved="true">
+  <proof prover="3"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC mul_limbs.11" expl="loop invariant init" proved="true">
+  <proof prover="3"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC mul_limbs.12" expl="loop invariant init" proved="true">
+  <transf name="introduce_premises" proved="true" >
+   <goal name="VC mul_limbs.12.0" expl="loop invariant init" proved="true">
+   <transf name="inline_goal" proved="true" >
+    <goal name="VC mul_limbs.12.0.0" expl="loop invariant init" proved="true">
+    <transf name="split_goal_right" proved="true" >
+     <goal name="VC mul_limbs.12.0.0.0" expl="loop invariant init" proved="true">
+     <proof prover="4"><result status="valid" time="0.03"/></proof>
+     </goal>
+    </transf>
+    </goal>
+   </transf>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC mul_limbs.13" expl="loop invariant init" proved="true">
+  <proof prover="3"><result status="valid" time="0.04"/></proof>
+  </goal>
+  <goal name="VC mul_limbs.14" expl="integer overflow" proved="true">
+  <transf name="introduce_premises" proved="true" >
+   <goal name="VC mul_limbs.14.0" expl="integer overflow" proved="true">
+   <proof prover="3"><result status="valid" time="0.03"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC mul_limbs.15" expl="precondition" proved="true">
+  <proof prover="4"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC mul_limbs.16" expl="assertion" proved="true">
+  <proof prover="5" timelimit="1"><result status="valid" time="0.04" steps="76"/></proof>
+  </goal>
+  <goal name="VC mul_limbs.17" expl="precondition" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC mul_limbs.17.0" expl="VC for mul_limbs" proved="true">
+   <proof prover="5"><result status="valid" time="0.06" steps="45"/></proof>
+   </goal>
+   <goal name="VC mul_limbs.17.1" expl="VC for mul_limbs" proved="true">
+   <proof prover="4"><result status="valid" time="0.02"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC mul_limbs.18" expl="precondition" proved="true">
+  <proof prover="4"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC mul_limbs.19" expl="precondition" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC mul_limbs.19.0" expl="precondition" proved="true">
+   <transf name="introduce_premises" proved="true" >
+    <goal name="VC mul_limbs.19.0.0" expl="precondition" proved="true">
+    <transf name="inline_goal" proved="true" >
+     <goal name="VC mul_limbs.19.0.0.0" expl="precondition" proved="true">
+     <proof prover="5" timelimit="20" memlimit="3000"><result status="valid" time="0.04" steps="89"/></proof>
+     </goal>
+    </transf>
+    </goal>
+   </transf>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC mul_limbs.20" expl="assertion" proved="true">
+  <proof prover="5" timelimit="1"><result status="valid" time="0.04" steps="57"/></proof>
+  </goal>
+  <goal name="VC mul_limbs.21" expl="assertion" proved="true">
+  <proof prover="4"><result status="valid" time="4.10"/></proof>
+  </goal>
+  <goal name="VC mul_limbs.22" expl="precondition" proved="true">
+  <proof prover="5" memlimit="2000"><result status="valid" time="0.04" steps="58"/></proof>
+  </goal>
+  <goal name="VC mul_limbs.23" expl="precondition" proved="true">
+  <proof prover="4"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC mul_limbs.24" expl="precondition" proved="true">
+  <proof prover="5" timelimit="1"><result status="valid" time="0.02" steps="75"/></proof>
+  </goal>
+  <goal name="VC mul_limbs.25" expl="assertion" proved="true">
+  <proof prover="5" timelimit="1"><result status="valid" time="0.06" steps="110"/></proof>
+  </goal>
+  <goal name="VC mul_limbs.26" expl="assertion" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC mul_limbs.26.0" expl="VC for mul_limbs" proved="true">
+   <proof prover="5" timelimit="1"><result status="valid" time="0.10" steps="112"/></proof>
+   </goal>
+   <goal name="VC mul_limbs.26.1" expl="VC for mul_limbs" proved="true">
+   <proof prover="0" timelimit="10"><result status="valid" time="0.27"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC mul_limbs.27" expl="integer overflow" proved="true">
+  <proof prover="3"><result status="valid" time="0.06"/></proof>
+  </goal>
+  <goal name="VC mul_limbs.28" expl="precondition" proved="true">
+  <proof prover="4"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC mul_limbs.29" expl="assertion" proved="true">
+  <proof prover="0"><result status="valid" time="0.04"/></proof>
+  </goal>
+  <goal name="VC mul_limbs.30" expl="precondition" proved="true">
+  <proof prover="2" timelimit="5"><result status="valid" time="0.13"/></proof>
+  </goal>
+  <goal name="VC mul_limbs.31" expl="integer overflow" proved="true">
+  <proof prover="3"><result status="valid" time="0.04"/></proof>
+  </goal>
+  <goal name="VC mul_limbs.32" expl="precondition" proved="true">
+  <proof prover="5"><result status="valid" time="0.10" steps="80"/></proof>
+  </goal>
+  <goal name="VC mul_limbs.33" expl="assertion" proved="true">
+  <transf name="introduce_premises" proved="true" >
+   <goal name="VC mul_limbs.33.0" expl="assertion" proved="true">
+   <transf name="inline_goal" proved="true" >
+    <goal name="VC mul_limbs.33.0.0" expl="assertion" proved="true">
+    <proof prover="0"><result status="valid" time="0.04"/></proof>
+    </goal>
+   </transf>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC mul_limbs.34" expl="assertion" proved="true">
+  <transf name="introduce_premises" proved="true" >
+   <goal name="VC mul_limbs.34.0" expl="assertion" proved="true">
+   <proof prover="0"><result status="valid" time="0.43"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC mul_limbs.35" expl="assertion" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC mul_limbs.35.0" expl="assertion" proved="true">
+   <proof prover="5" timelimit="1"><result status="valid" time="0.09" steps="83"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC mul_limbs.36" expl="assertion" proved="true">
+  <proof prover="5" timelimit="1"><result status="valid" time="0.12" steps="84"/></proof>
+  </goal>
+  <goal name="VC mul_limbs.37" expl="assertion" proved="true">
+  <proof prover="5" timelimit="1"><result status="valid" time="0.14" steps="85"/></proof>
+  </goal>
+  <goal name="VC mul_limbs.38" expl="assertion" proved="true">
+  <transf name="introduce_premises" proved="true" >
+   <goal name="VC mul_limbs.38.0" expl="assertion" proved="true">
+   <transf name="rewrite" proved="true" arg1="H6" arg2="in" arg3="H5">
+    <goal name="VC mul_limbs.38.0.0" expl="assertion" proved="true">
+    <transf name="rewrite" proved="true" arg1="H10" arg2="in" arg3="H9">
+     <goal name="VC mul_limbs.38.0.0.0" expl="assertion" proved="true">
+     <transf name="rewrite" proved="true" arg1="H57" arg2="in" arg3="H56">
+      <goal name="VC mul_limbs.38.0.0.0.0" expl="assertion" proved="true">
+      <transf name="use_th" proved="true" arg1="lineardecision.LinearDecisionIntMP">
+       <goal name="VC mul_limbs.38.0.0.0.0.0" expl="assertion" proved="true">
+       <transf name="reflection_f" proved="true" arg1="mp_decision">
+        <goal name="VC mul_limbs.38.0.0.0.0.0.0" expl="assertion" proved="true">
+        <proof prover="0"><result status="valid" time="0.43"/></proof>
+        </goal>
+        <goal name="VC mul_limbs.38.0.0.0.0.0.1" proved="true">
+        <proof prover="3"><result status="valid" time="1.31"/></proof>
+        </goal>
+       </transf>
+       </goal>
+      </transf>
+      </goal>
+     </transf>
+     </goal>
+    </transf>
+    </goal>
+   </transf>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC mul_limbs.39" expl="integer overflow" proved="true">
+  <transf name="introduce_premises" proved="true" >
+   <goal name="VC mul_limbs.39.0" expl="integer overflow" proved="true">
+   <transf name="inline_goal" proved="true" >
+    <goal name="VC mul_limbs.39.0.0" expl="integer overflow" proved="true">
+    <proof prover="0" memlimit="1000"><result status="valid" time="3.74"/></proof>
+    </goal>
+   </transf>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC mul_limbs.40" expl="precondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.14"/></proof>
+  </goal>
+  <goal name="VC mul_limbs.41" expl="loop variant decrease" proved="true">
+  <proof prover="4"><result status="valid" time="0.04"/></proof>
+  </goal>
+  <goal name="VC mul_limbs.42" expl="loop invariant preservation" proved="true">
+  <proof prover="4"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC mul_limbs.43" expl="loop invariant preservation" proved="true">
+  <transf name="introduce_premises" proved="true" >
+   <goal name="VC mul_limbs.43.0" expl="loop invariant preservation" proved="true">
+   <proof prover="0"><result status="valid" time="0.19"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC mul_limbs.44" expl="loop invariant preservation" proved="true">
+  <proof prover="2"><result status="valid" time="0.08"/></proof>
+  </goal>
+  <goal name="VC mul_limbs.45" expl="loop invariant preservation" proved="true">
+  <proof prover="4"><result status="valid" time="0.04"/></proof>
+  </goal>
+  <goal name="VC mul_limbs.46" expl="loop invariant preservation" proved="true">
+  <proof prover="3"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC mul_limbs.47" expl="loop invariant preservation" proved="true">
+  <proof prover="3"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC mul_limbs.48" expl="loop invariant preservation" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC mul_limbs.48.0" expl="loop invariant preservation" proved="true">
+   <proof prover="0"><result status="valid" time="0.01"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC mul_limbs.49" expl="loop invariant preservation" proved="true">
+  <proof prover="2"><result status="valid" time="0.40"/></proof>
+  </goal>
+  <goal name="VC mul_limbs.50" expl="postcondition" proved="true">
+  <proof prover="5" memlimit="2000"><result status="valid" time="0.02" steps="41"/></proof>
+  </goal>
+  <goal name="VC mul_limbs.51" expl="postcondition" proved="true">
+  <proof prover="3"><result status="valid" time="0.03"/></proof>
+  </goal>
+ </transf>
+ </goal>
+ <goal name="VC addmul_limbs" expl="VC for addmul_limbs" proved="true">
+ <transf name="split_goal_right" proved="true" >
+  <goal name="VC addmul_limbs.0" expl="integer overflow" proved="true">
+  <proof prover="4" timelimit="10"><result status="valid" time="0.01"/></proof>
+  </goal>
+  <goal name="VC addmul_limbs.1" expl="integer overflow" proved="true">
+  <proof prover="5"><result status="valid" time="0.02" steps="28"/></proof>
+  </goal>
+  <goal name="VC addmul_limbs.2" expl="integer overflow" proved="true">
+  <proof prover="5" timelimit="20"><result status="valid" time="0.02" steps="29"/></proof>
+  </goal>
+  <goal name="VC addmul_limbs.3" expl="precondition" proved="true">
+  <proof prover="5" timelimit="20"><result status="valid" time="0.12" steps="29"/></proof>
+  </goal>
+  <goal name="VC addmul_limbs.4" expl="integer overflow" proved="true">
+  <proof prover="5" timelimit="20"><result status="valid" time="0.04" steps="37"/></proof>
+  </goal>
+  <goal name="VC addmul_limbs.5" expl="loop invariant init" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC addmul_limbs.5.0" expl="VC for addmul_limbs" proved="true">
+   <proof prover="1"><result status="valid" time="0.09"/></proof>
+   <transf name="introduce_premises" proved="true" >
+    <goal name="VC addmul_limbs.5.0.0" expl="VC for addmul_limbs" proved="true">
+    <transf name="inline_goal" proved="true" >
+     <goal name="VC addmul_limbs.5.0.0.0" expl="VC for addmul_limbs" proved="true">
+     <proof prover="0" timelimit="20" memlimit="1000"><result status="valid" time="0.08"/></proof>
+     </goal>
+    </transf>
+    </goal>
+   </transf>
+   </goal>
+   <goal name="VC addmul_limbs.5.1" expl="VC for addmul_limbs" proved="true">
+   <proof prover="3"><result status="valid" time="0.03"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC addmul_limbs.6" expl="loop invariant init" proved="true">
+  <proof prover="5" timelimit="1"><result status="valid" time="0.03" steps="106"/></proof>
+  </goal>
+  <goal name="VC addmul_limbs.7" expl="loop invariant init" proved="true">
+  <transf name="introduce_premises" proved="true" >
+   <goal name="VC addmul_limbs.7.0" expl="loop invariant init" proved="true">
+   <transf name="inline_goal" proved="true" >
+    <goal name="VC addmul_limbs.7.0.0" expl="loop invariant init" proved="true">
+    <transf name="split_goal_right" proved="true" >
+     <goal name="VC addmul_limbs.7.0.0.0" expl="loop invariant init" proved="true">
+     <proof prover="5" memlimit="2000"><result status="valid" time="0.01" steps="24"/></proof>
+     </goal>
+    </transf>
+    </goal>
+   </transf>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC addmul_limbs.8" expl="loop invariant init" proved="true">
+  <proof prover="3"><result status="valid" time="0.04"/></proof>
+  </goal>
+  <goal name="VC addmul_limbs.9" expl="loop invariant init" proved="true">
+  <proof prover="3"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC addmul_limbs.10" expl="loop invariant init" proved="true">
+  <proof prover="3"><result status="valid" time="0.04"/></proof>
+  </goal>
+  <goal name="VC addmul_limbs.11" expl="loop invariant init" proved="true">
+  <proof prover="5" timelimit="20"><result status="valid" time="0.06" steps="25"/></proof>
+  </goal>
+  <goal name="VC addmul_limbs.12" expl="loop invariant init" proved="true">
+  <proof prover="5" timelimit="20"><result status="valid" time="0.05" steps="6"/></proof>
+  </goal>
+  <goal name="VC addmul_limbs.13" expl="integer overflow" proved="true">
+  <proof prover="3"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC addmul_limbs.14" expl="precondition" proved="true">
+  <proof prover="5"><result status="valid" time="0.02" steps="37"/></proof>
+  </goal>
+  <goal name="VC addmul_limbs.15" expl="assertion" proved="true">
+  <proof prover="5" timelimit="1"><result status="valid" time="0.03" steps="86"/></proof>
+  </goal>
+  <goal name="VC addmul_limbs.16" expl="precondition" proved="true">
+  <proof prover="5"><result status="valid" time="0.03" steps="55"/></proof>
+  </goal>
+  <goal name="VC addmul_limbs.17" expl="precondition" proved="true">
+  <proof prover="5" timelimit="20"><result status="valid" time="0.06" steps="40"/></proof>
+  </goal>
+  <goal name="VC addmul_limbs.18" expl="precondition" proved="true">
+  <proof prover="5" timelimit="1"><result status="valid" time="0.03" steps="85"/></proof>
+  </goal>
+  <goal name="VC addmul_limbs.19" expl="assertion" proved="true">
+  <transf name="introduce_premises" proved="true" >
+   <goal name="VC addmul_limbs.19.0" expl="assertion" proved="true">
+   <transf name="split_vc" proved="true" >
+    <goal name="VC addmul_limbs.19.0.0" expl="VC for addmul_limbs" proved="true">
+    <proof prover="0"><result status="valid" time="0.02"/></proof>
+    </goal>
+    <goal name="VC addmul_limbs.19.0.1" expl="VC for addmul_limbs" proved="true">
+    <proof prover="0"><result status="valid" time="0.04"/></proof>
+    </goal>
+    <goal name="VC addmul_limbs.19.0.2" expl="VC for addmul_limbs" proved="true">
+    <proof prover="0"><result status="valid" time="0.04"/></proof>
+    </goal>
+    <goal name="VC addmul_limbs.19.0.3" expl="VC for addmul_limbs" proved="true">
+    <proof prover="0"><result status="valid" time="0.02"/></proof>
+    </goal>
+   </transf>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC addmul_limbs.20" expl="assertion" proved="true">
+  <proof prover="5" timelimit="20"><result status="valid" time="0.02" steps="52"/></proof>
+  </goal>
+  <goal name="VC addmul_limbs.21" expl="assertion" proved="true">
+  <proof prover="2"><result status="valid" time="0.23"/></proof>
+  </goal>
+  <goal name="VC addmul_limbs.22" expl="precondition" proved="true">
+  <proof prover="5" timelimit="1"><result status="valid" time="0.02" steps="69"/></proof>
+  </goal>
+  <goal name="VC addmul_limbs.23" expl="assertion" proved="true">
+  <transf name="introduce_premises" proved="true" >
+   <goal name="VC addmul_limbs.23.0" expl="assertion" proved="true">
+   <transf name="inline_goal" proved="true" >
+    <goal name="VC addmul_limbs.23.0.0" expl="assertion" proved="true">
+    <proof prover="0"><result status="valid" time="0.05"/></proof>
+    </goal>
+   </transf>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC addmul_limbs.24" expl="precondition" proved="true">
+  <proof prover="5"><result status="valid" time="0.04" steps="55"/></proof>
+  </goal>
+  <goal name="VC addmul_limbs.25" expl="precondition" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC addmul_limbs.25.0" expl="precondition" proved="true">
+   <transf name="introduce_premises" proved="true" >
+    <goal name="VC addmul_limbs.25.0.0" expl="precondition" proved="true">
+    <transf name="inline_goal" proved="true" >
+     <goal name="VC addmul_limbs.25.0.0.0" expl="precondition" proved="true">
+     <proof prover="5"><result status="valid" time="0.04" steps="58"/></proof>
+     </goal>
+    </transf>
+    </goal>
+   </transf>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC addmul_limbs.26" expl="precondition" proved="true">
+  <proof prover="5" timelimit="20"><result status="valid" time="0.08" steps="59"/></proof>
+  </goal>
+  <goal name="VC addmul_limbs.27" expl="precondition" proved="true">
+  <proof prover="5" timelimit="1"><result status="valid" time="0.05" steps="75"/></proof>
+  </goal>
+  <goal name="VC addmul_limbs.28" expl="assertion" proved="true">
+  <proof prover="0"><result status="valid" time="0.60"/></proof>
+  </goal>
+  <goal name="VC addmul_limbs.29" expl="assertion" proved="true">
+  <proof prover="0"><result status="valid" time="0.13"/></proof>
+  </goal>
+  <goal name="VC addmul_limbs.30" expl="integer overflow" proved="true">
+  <proof prover="3"><result status="valid" time="0.04"/></proof>
+  </goal>
+  <goal name="VC addmul_limbs.31" expl="precondition" proved="true">
+  <proof prover="5" timelimit="20"><result status="valid" time="0.05" steps="77"/></proof>
+  </goal>
+  <goal name="VC addmul_limbs.32" expl="precondition" proved="true">
+  <proof prover="5" timelimit="20"><result status="valid" time="0.06" steps="78"/></proof>
+  </goal>
+  <goal name="VC addmul_limbs.33" expl="assertion" proved="true">
+  <proof prover="0"><result status="valid" time="3.34"/></proof>
+  </goal>
+  <goal name="VC addmul_limbs.34" expl="assertion" proved="true">
+  <proof prover="5" timelimit="1"><result status="valid" time="0.32" steps="117"/></proof>
+  </goal>
+  <goal name="VC addmul_limbs.35" expl="integer overflow" proved="true">
+  <proof prover="3"><result status="valid" time="0.07"/></proof>
+  </goal>
+  <goal name="VC addmul_limbs.36" expl="precondition" proved="true">
+  <proof prover="5" timelimit="20"><result status="valid" time="0.32" steps="82"/></proof>
+  </goal>
+  <goal name="VC addmul_limbs.37" expl="assertion" proved="true">
+  <transf name="introduce_premises" proved="true" >
+   <goal name="VC addmul_limbs.37.0" expl="assertion" proved="true">
+   <transf name="inline_goal" proved="true" >
+    <goal name="VC addmul_limbs.37.0.0" expl="assertion" proved="true">
+    <proof prover="0"><result status="valid" time="0.05"/></proof>
+    </goal>
+   </transf>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC addmul_limbs.38" expl="assertion" proved="true">
+  <proof prover="5" timelimit="20"><result status="valid" time="0.45" steps="84"/></proof>
+  </goal>
+  <goal name="VC addmul_limbs.39" expl="assertion" proved="true">
+  <transf name="introduce_premises" proved="true" >
+   <goal name="VC addmul_limbs.39.0" expl="assertion" proved="true">
+   <transf name="rewrite" proved="true" arg1="H3" arg2="in" arg3="H2">
+    <goal name="VC addmul_limbs.39.0.0" expl="assertion" proved="true">
+    <transf name="rewrite" proved="true" arg1="H8" arg2="in" arg3="H7">
+     <goal name="VC addmul_limbs.39.0.0.0" expl="assertion" proved="true">
+     <transf name="rewrite" proved="true" arg1="H60" arg2="in" arg3="H59">
+      <goal name="VC addmul_limbs.39.0.0.0.0" expl="assertion" proved="true">
+      <transf name="use_th" proved="true" arg1="lineardecision.LinearDecisionIntMP">
+       <goal name="VC addmul_limbs.39.0.0.0.0.0" expl="assertion" proved="true">
+       <transf name="reflection_f" proved="true" arg1="mp_decision">
+        <goal name="VC addmul_limbs.39.0.0.0.0.0.0" expl="assertion" proved="true">
+        <proof prover="0"><result status="valid" time="0.20"/></proof>
+        </goal>
+        <goal name="VC addmul_limbs.39.0.0.0.0.0.1" proved="true">
+        <proof prover="3"><result status="valid" time="0.28"/></proof>
+        </goal>
+        <goal name="VC addmul_limbs.39.0.0.0.0.0.2" proved="true">
+        <proof prover="2" timelimit="5" memlimit="2000"><result status="valid" time="0.31"/></proof>
+        </goal>
+       </transf>
+       </goal>
+      </transf>
+      </goal>
+     </transf>
+     </goal>
+    </transf>
+    </goal>
+   </transf>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC addmul_limbs.40" expl="integer overflow" proved="true">
+  <proof prover="3"><result status="valid" time="0.05"/></proof>
+  </goal>
+  <goal name="VC addmul_limbs.41" expl="precondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.24"/></proof>
+  </goal>
+  <goal name="VC addmul_limbs.42" expl="assertion" proved="true">
+  <proof prover="2" timelimit="5" memlimit="2000"><result status="valid" time="0.86"/></proof>
+  </goal>
+  <goal name="VC addmul_limbs.43" expl="loop variant decrease" proved="true">
+  <proof prover="3"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC addmul_limbs.44" expl="loop invariant preservation" proved="true">
+  <proof prover="3"><result status="valid" time="0.05"/></proof>
+  </goal>
+  <goal name="VC addmul_limbs.45" expl="loop invariant preservation" proved="true">
+  <transf name="introduce_premises" proved="true" >
+   <goal name="VC addmul_limbs.45.0" expl="loop invariant preservation" proved="true">
+   <transf name="cut" proved="true" arg1="(i=i1+1)">
+    <goal name="VC addmul_limbs.45.0.0" expl="loop invariant preservation" proved="true">
+    <proof prover="0"><result status="valid" time="0.12"/></proof>
+    </goal>
+    <goal name="VC addmul_limbs.45.0.1" proved="true">
+    <proof prover="3"><result status="valid" time="0.06"/></proof>
+    </goal>
+   </transf>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC addmul_limbs.46" expl="loop invariant preservation" proved="true">
+  <proof prover="2"><result status="valid" time="0.08"/></proof>
+  </goal>
+  <goal name="VC addmul_limbs.47" expl="loop invariant preservation" proved="true">
+  <proof prover="3"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC addmul_limbs.48" expl="loop invariant preservation" proved="true">
+  <proof prover="3"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC addmul_limbs.49" expl="loop invariant preservation" proved="true">
+  <proof prover="3"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC addmul_limbs.50" expl="loop invariant preservation" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC addmul_limbs.50.0" expl="VC for addmul_limbs" proved="true">
+   <proof prover="3"><result status="valid" time="0.03"/></proof>
+   </goal>
+   <goal name="VC addmul_limbs.50.1" expl="VC for addmul_limbs" proved="true">
+   <transf name="introduce_premises" proved="true" >
+    <goal name="VC addmul_limbs.50.1.0" expl="VC for addmul_limbs" proved="true">
+    <proof prover="3"><result status="valid" time="0.03"/></proof>
+    </goal>
+   </transf>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC addmul_limbs.51" expl="loop invariant preservation" proved="true">
+  <transf name="introduce_premises" proved="true" >
+   <goal name="VC addmul_limbs.51.0" expl="loop invariant preservation" proved="true">
+   <proof prover="0"><result status="valid" time="0.02"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC addmul_limbs.52" expl="postcondition" proved="true">
+  <proof prover="5" timelimit="1"><result status="valid" time="0.02" steps="36"/></proof>
+  </goal>
+ </transf>
+ </goal>
+ <goal name="VC mul" expl="VC for mul" proved="true">
+ <transf name="split_goal_right" proved="true" >
+  <goal name="VC mul.0" expl="precondition" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC mul.0.0" expl="VC for mul" proved="true">
+   <proof prover="3"><result status="valid" time="0.03"/></proof>
+   </goal>
+   <goal name="VC mul.0.1" expl="VC for mul" proved="true">
+   <proof prover="5" timelimit="1"><result status="valid" time="0.04" steps="12"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC mul.1" expl="precondition" proved="true">
+  <proof prover="5" memlimit="2000"><result status="valid" time="0.01" steps="11"/></proof>
+  </goal>
+  <goal name="VC mul.2" expl="precondition" proved="true">
+  <proof prover="5" memlimit="2000"><result status="valid" time="0.02" steps="30"/></proof>
+  </goal>
+  <goal name="VC mul.3" expl="precondition" proved="true">
+  <proof prover="5" memlimit="2000"><result status="valid" time="0.01" steps="17"/></proof>
+  </goal>
+  <goal name="VC mul.4" expl="precondition" proved="true">
+  <proof prover="5" memlimit="2000"><result status="valid" time="0.04" steps="18"/></proof>
+  </goal>
+  <goal name="VC mul.5" expl="precondition" proved="true">
+  <proof prover="5" timelimit="1"><result status="valid" time="0.03" steps="36"/></proof>
+  </goal>
+  <goal name="VC mul.6" expl="precondition" proved="true">
+  <proof prover="5" memlimit="2000"><result status="valid" time="0.04" steps="25"/></proof>
+  </goal>
+  <goal name="VC mul.7" expl="assertion" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC mul.7.0" expl="VC for mul" proved="true">
+   <proof prover="3"><result status="valid" time="0.29"/></proof>
+   </goal>
+   <goal name="VC mul.7.1" expl="VC for mul" proved="true">
+   <proof prover="0"><result status="valid" time="0.41"/></proof>
+   </goal>
+   <goal name="VC mul.7.2" expl="VC for mul" proved="true">
+   <proof prover="5" timelimit="1"><result status="valid" time="0.03" steps="72"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC mul.8" expl="integer overflow" proved="true">
+  <proof prover="5" memlimit="2000"><result status="valid" time="0.04" steps="46"/></proof>
+  </goal>
+  <goal name="VC mul.9" expl="integer overflow" proved="true">
+  <proof prover="5" memlimit="2000"><result status="valid" time="0.03" steps="47"/></proof>
+  </goal>
+  <goal name="VC mul.10" expl="precondition" proved="true">
+  <proof prover="5" memlimit="2000"><result status="valid" time="0.03" steps="47"/></proof>
+  </goal>
+  <goal name="VC mul.11" expl="integer overflow" proved="true">
+  <proof prover="5" memlimit="2000"><result status="valid" time="0.07" steps="55"/></proof>
+  </goal>
+  <goal name="VC mul.12" expl="loop invariant init" proved="true">
+  <proof prover="5" memlimit="2000"><result status="valid" time="0.04" steps="37"/></proof>
+  </goal>
+  <goal name="VC mul.13" expl="loop invariant init" proved="true">
+  <proof prover="5" memlimit="2000"><result status="valid" time="0.04" steps="39"/></proof>
+  </goal>
+  <goal name="VC mul.14" expl="loop invariant init" proved="true">
+  <proof prover="5" memlimit="2000"><result status="valid" time="0.09" steps="40"/></proof>
+  </goal>
+  <goal name="VC mul.15" expl="loop invariant init" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC mul.15.0" expl="loop invariant init" proved="true">
+   <proof prover="5" memlimit="2000"><result status="valid" time="0.04" steps="41"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC mul.16" expl="loop invariant init" proved="true">
+  <proof prover="3"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC mul.17" expl="loop invariant init" proved="true">
+  <proof prover="3"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC mul.18" expl="loop invariant init" proved="true">
+  <proof prover="5" memlimit="2000"><result status="valid" time="0.03" steps="41"/></proof>
+  </goal>
+  <goal name="VC mul.19" expl="loop invariant init" proved="true">
+  <proof prover="5" timelimit="1"><result status="valid" time="0.06" steps="86"/></proof>
+  </goal>
+  <goal name="VC mul.20" expl="integer overflow" proved="true">
+  <proof prover="3"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC mul.21" expl="precondition" proved="true">
+  <proof prover="5" memlimit="2000"><result status="valid" time="0.04" steps="52"/></proof>
+  </goal>
+  <goal name="VC mul.22" expl="assertion" proved="true">
+  <proof prover="5" timelimit="1"><result status="valid" time="0.03" steps="90"/></proof>
+  </goal>
+  <goal name="VC mul.23" expl="precondition" proved="true">
+  <proof prover="5" memlimit="2000"><result status="valid" time="0.04" steps="72"/></proof>
+  </goal>
+  <goal name="VC mul.24" expl="precondition" proved="true">
+  <proof prover="5" memlimit="2000"><result status="valid" time="0.04" steps="55"/></proof>
+  </goal>
+  <goal name="VC mul.25" expl="precondition" proved="true">
+  <proof prover="5" memlimit="2000"><result status="valid" time="0.14" steps="108"/></proof>
+  </goal>
+  <goal name="VC mul.26" expl="assertion" proved="true">
+  <proof prover="5" memlimit="2000"><result status="valid" time="0.14" steps="67"/></proof>
+  </goal>
+  <goal name="VC mul.27" expl="assertion" proved="true">
+  <proof prover="5" memlimit="2000"><result status="valid" time="0.84" steps="137"/></proof>
+  </goal>
+  <goal name="VC mul.28" expl="precondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.60"/></proof>
+  </goal>
+  <goal name="VC mul.29" expl="precondition" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC mul.29.0" expl="precondition" proved="true">
+   <proof prover="5" memlimit="2000"><result status="valid" time="0.13" steps="69"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC mul.30" expl="precondition" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC mul.30.0" expl="VC for mul" proved="true">
+   <proof prover="4" memlimit="2000"><result status="valid" time="0.01"/></proof>
+   </goal>
+   <goal name="VC mul.30.1" expl="VC for mul" proved="true">
+   <proof prover="2"><result status="valid" time="0.10"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC mul.31" expl="assertion" proved="true">
+  <proof prover="0"><result status="valid" time="0.62"/></proof>
+  </goal>
+  <goal name="VC mul.32" expl="assertion" proved="true">
+  <proof prover="0"><result status="valid" time="0.14"/></proof>
+  </goal>
+  <goal name="VC mul.33" expl="integer overflow" proved="true">
+  <proof prover="3"><result status="valid" time="0.05"/></proof>
+  </goal>
+  <goal name="VC mul.34" expl="precondition" proved="true">
+  <proof prover="5" memlimit="2000"><result status="valid" time="0.30" steps="86"/></proof>
+  </goal>
+  <goal name="VC mul.35" expl="precondition" proved="true">
+  <proof prover="5" memlimit="2000"><result status="valid" time="0.22" steps="87"/></proof>
+  </goal>
+  <goal name="VC mul.36" expl="integer overflow" proved="true">
+  <proof prover="3"><result status="valid" time="0.04"/></proof>
+  </goal>
+  <goal name="VC mul.37" expl="precondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.11"/></proof>
+  </goal>
+  <goal name="VC mul.38" expl="assertion" proved="true">
+  <transf name="introduce_premises" proved="true" >
+   <goal name="VC mul.38.0" expl="assertion" proved="true">
+   <transf name="inline_goal" proved="true" >
+    <goal name="VC mul.38.0.0" expl="assertion" proved="true">
+    <proof prover="0"><result status="valid" time="0.04"/></proof>
+    </goal>
+   </transf>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC mul.39" expl="assertion" proved="true">
+  <proof prover="5" timelimit="10" memlimit="2000"><result status="valid" time="4.18" steps="134"/></proof>
+  </goal>
+  <goal name="VC mul.40" expl="assertion" proved="true">
+  <proof prover="5" memlimit="2000"><result status="valid" time="3.28" steps="92"/></proof>
+  </goal>
+  <goal name="VC mul.41" expl="assertion" proved="true">
+  <transf name="introduce_premises" proved="true" >
+   <goal name="VC mul.41.0" expl="assertion" proved="true">
+   <transf name="rewrite" proved="true" arg1="H4" arg2="in" arg3="H3">
+    <goal name="VC mul.41.0.0" expl="assertion" proved="true">
+    <transf name="rewrite" proved="true" arg1="H7" arg2="in" arg3="H6">
+     <goal name="VC mul.41.0.0.0" expl="assertion" proved="true">
+     <transf name="rewrite" proved="true" arg1="H54" arg2="in" arg3="H53">
+      <goal name="VC mul.41.0.0.0.0" expl="assertion" proved="true">
+      <transf name="use_th" proved="true" arg1="lineardecision.LinearDecisionIntMP">
+       <goal name="VC mul.41.0.0.0.0.0" expl="assertion" proved="true">
+       <transf name="reflection_f" proved="true" arg1="mp_decision">
+        <goal name="VC mul.41.0.0.0.0.0.0" expl="assertion" proved="true">
+        <transf name="apply" proved="true" arg1="HR">
+         <goal name="VC mul.41.0.0.0.0.0.0.0" proved="true">
+         <proof prover="3"><result status="valid" time="0.02"/></proof>
+         </goal>
+         <goal name="VC mul.41.0.0.0.0.0.0.1" proved="true">
+         <proof prover="3"><result status="valid" time="0.02"/></proof>
+         </goal>
+         <goal name="VC mul.41.0.0.0.0.0.0.2" proved="true">
+         <proof prover="3"><result status="valid" time="0.02"/></proof>
+         </goal>
+         <goal name="VC mul.41.0.0.0.0.0.0.3" proved="true">
+         <proof prover="3"><result status="valid" time="0.02"/></proof>
+         </goal>
+         <goal name="VC mul.41.0.0.0.0.0.0.4" proved="true">
+         <proof prover="3"><result status="valid" time="0.02"/></proof>
+         </goal>
+         <goal name="VC mul.41.0.0.0.0.0.0.5" proved="true">
+         <proof prover="3"><result status="valid" time="0.02"/></proof>
+         </goal>
+         <goal name="VC mul.41.0.0.0.0.0.0.6" proved="true">
+         <proof prover="3"><result status="valid" time="0.02"/></proof>
+         </goal>
+         <goal name="VC mul.41.0.0.0.0.0.0.7" proved="true">
+         <proof prover="3"><result status="valid" time="0.02"/></proof>
+         </goal>
+         <goal name="VC mul.41.0.0.0.0.0.0.8" proved="true">
+         <proof prover="3"><result status="valid" time="0.02"/></proof>
+         </goal>
+         <goal name="VC mul.41.0.0.0.0.0.0.9" proved="true">
+         <proof prover="3"><result status="valid" time="0.02"/></proof>
+         </goal>
+         <goal name="VC mul.41.0.0.0.0.0.0.10" proved="true">
+         <proof prover="3"><result status="valid" time="0.02"/></proof>
+         </goal>
+         <goal name="VC mul.41.0.0.0.0.0.0.11" proved="true">
+         <proof prover="3"><result status="valid" time="0.02"/></proof>
+         </goal>
+         <goal name="VC mul.41.0.0.0.0.0.0.12" proved="true">
+         <proof prover="3"><result status="valid" time="0.24"/></proof>
+         </goal>
+         <goal name="VC mul.41.0.0.0.0.0.0.13" proved="true">
+         <proof prover="3"><result status="valid" time="0.04"/></proof>
+         </goal>
+         <goal name="VC mul.41.0.0.0.0.0.0.14" proved="true">
+         <proof prover="3"><result status="valid" time="0.04"/></proof>
+         </goal>
+         <goal name="VC mul.41.0.0.0.0.0.0.15" proved="true">
+         <proof prover="3"><result status="valid" time="0.04"/></proof>
+         </goal>
+         <goal name="VC mul.41.0.0.0.0.0.0.16" proved="true">
+         <proof prover="3"><result status="valid" time="0.04"/></proof>
+         </goal>
+         <goal name="VC mul.41.0.0.0.0.0.0.17" proved="true">
+         <proof prover="3"><result status="valid" time="0.03"/></proof>
+         </goal>
+         <goal name="VC mul.41.0.0.0.0.0.0.18" proved="true">
+         <proof prover="3"><result status="valid" time="0.02"/></proof>
+         </goal>
+         <goal name="VC mul.41.0.0.0.0.0.0.19" proved="true">
+         <proof prover="3"><result status="valid" time="0.02"/></proof>
+         </goal>
+         <goal name="VC mul.41.0.0.0.0.0.0.20" proved="true">
+         <proof prover="3"><result status="valid" time="0.02"/></proof>
+         </goal>
+         <goal name="VC mul.41.0.0.0.0.0.0.21" proved="true">
+         <proof prover="3"><result status="valid" time="0.02"/></proof>
+         </goal>
+         <goal name="VC mul.41.0.0.0.0.0.0.22" proved="true">
+         <proof prover="3"><result status="valid" time="0.20"/></proof>
+         </goal>
+         <goal name="VC mul.41.0.0.0.0.0.0.23" proved="true">
+         <proof prover="3"><result status="valid" time="0.03"/></proof>
+         </goal>
+         <goal name="VC mul.41.0.0.0.0.0.0.24" proved="true">
+         <proof prover="3"><result status="valid" time="0.02"/></proof>
+         </goal>
+         <goal name="VC mul.41.0.0.0.0.0.0.25" proved="true">
+         <proof prover="3"><result status="valid" time="0.02"/></proof>
+         </goal>
+         <goal name="VC mul.41.0.0.0.0.0.0.26" proved="true">
+         <proof prover="3"><result status="valid" time="0.02"/></proof>
+         </goal>
+         <goal name="VC mul.41.0.0.0.0.0.0.27" proved="true">
+         <proof prover="3"><result status="valid" time="0.02"/></proof>
+         </goal>
+         <goal name="VC mul.41.0.0.0.0.0.0.28" proved="true">
+         <proof prover="3"><result status="valid" time="0.02"/></proof>
+         </goal>
+         <goal name="VC mul.41.0.0.0.0.0.0.29" proved="true">
+         <proof prover="3"><result status="valid" time="0.01"/></proof>
+         </goal>
+         <goal name="VC mul.41.0.0.0.0.0.0.30" proved="true">
+         <proof prover="3"><result status="valid" time="0.02"/></proof>
+         </goal>
+         <goal name="VC mul.41.0.0.0.0.0.0.31" proved="true">
+         <proof prover="3"><result status="valid" time="0.02"/></proof>
+         </goal>
+         <goal name="VC mul.41.0.0.0.0.0.0.32" proved="true">
+         <proof prover="3"><result status="valid" time="0.02"/></proof>
+         </goal>
+         <goal name="VC mul.41.0.0.0.0.0.0.33" proved="true">
+         <proof prover="3"><result status="valid" time="0.02"/></proof>
+         </goal>
+         <goal name="VC mul.41.0.0.0.0.0.0.34" proved="true">
+         <proof prover="3"><result status="valid" time="0.02"/></proof>
+         </goal>
+         <goal name="VC mul.41.0.0.0.0.0.0.35" proved="true">
+         <proof prover="3"><result status="valid" time="0.02"/></proof>
+         </goal>
+         <goal name="VC mul.41.0.0.0.0.0.0.36" proved="true">
+         <proof prover="3"><result status="valid" time="0.02"/></proof>
+         </goal>
+         <goal name="VC mul.41.0.0.0.0.0.0.37" proved="true">
+         <proof prover="3"><result status="valid" time="0.02"/></proof>
+         </goal>
+         <goal name="VC mul.41.0.0.0.0.0.0.38" proved="true">
+         <proof prover="3"><result status="valid" time="0.02"/></proof>
+         </goal>
+         <goal name="VC mul.41.0.0.0.0.0.0.39" proved="true">
+         <proof prover="3"><result status="valid" time="0.02"/></proof>
+         </goal>
+         <goal name="VC mul.41.0.0.0.0.0.0.40" proved="true">
+         <proof prover="3"><result status="valid" time="0.02"/></proof>
+         </goal>
+         <goal name="VC mul.41.0.0.0.0.0.0.41" proved="true">
+         <proof prover="3"><result status="valid" time="0.02"/></proof>
+         </goal>
+         <goal name="VC mul.41.0.0.0.0.0.0.42" proved="true">
+         <proof prover="3"><result status="valid" time="0.02"/></proof>
+         </goal>
+         <goal name="VC mul.41.0.0.0.0.0.0.43" proved="true">
+         <proof prover="3"><result status="valid" time="0.02"/></proof>
+         </goal>
+         <goal name="VC mul.41.0.0.0.0.0.0.44" proved="true">
+         <proof prover="3"><result status="valid" time="0.02"/></proof>
+         </goal>
+         <goal name="VC mul.41.0.0.0.0.0.0.45" proved="true">
+         <proof prover="3"><result status="valid" time="0.02"/></proof>
+         </goal>
+         <goal name="VC mul.41.0.0.0.0.0.0.46" proved="true">
+         <proof prover="3"><result status="valid" time="0.02"/></proof>
+         </goal>
+         <goal name="VC mul.41.0.0.0.0.0.0.47" proved="true">
+         <proof prover="3"><result status="valid" time="0.02"/></proof>
+         </goal>
+         <goal name="VC mul.41.0.0.0.0.0.0.48" proved="true">
+         <proof prover="3"><result status="valid" time="0.02"/></proof>
+         </goal>
+         <goal name="VC mul.41.0.0.0.0.0.0.49" proved="true">
+         <proof prover="3"><result status="valid" time="0.02"/></proof>
+         </goal>
+         <goal name="VC mul.41.0.0.0.0.0.0.50" proved="true">
+         <proof prover="3"><result status="valid" time="0.02"/></proof>
+         </goal>
+         <goal name="VC mul.41.0.0.0.0.0.0.51" proved="true">
+         <proof prover="3"><result status="valid" time="0.02"/></proof>
+         </goal>
+         <goal name="VC mul.41.0.0.0.0.0.0.52" proved="true">
+         <proof prover="3"><result status="valid" time="0.02"/></proof>
+         </goal>
+         <goal name="VC mul.41.0.0.0.0.0.0.53" proved="true">
+         <proof prover="3"><result status="valid" time="0.24"/></proof>
+         </goal>
+         <goal name="VC mul.41.0.0.0.0.0.0.54" proved="true">
+         <proof prover="3"><result status="valid" time="0.03"/></proof>
+         </goal>
+         <goal name="VC mul.41.0.0.0.0.0.0.55" proved="true">
+         <proof prover="3"><result status="valid" time="0.03"/></proof>
+         </goal>
+         <goal name="VC mul.41.0.0.0.0.0.0.56" proved="true">
+         <proof prover="3"><result status="valid" time="0.03"/></proof>
+         </goal>
+         <goal name="VC mul.41.0.0.0.0.0.0.57" proved="true">
+         <proof prover="3"><result status="valid" time="0.03"/></proof>
+         </goal>
+         <goal name="VC mul.41.0.0.0.0.0.0.58" proved="true">
+         <proof prover="3"><result status="valid" time="0.03"/></proof>
+         </goal>
+         <goal name="VC mul.41.0.0.0.0.0.0.59" proved="true">
+         <proof prover="3"><result status="valid" time="0.02"/></proof>
+         </goal>
+         <goal name="VC mul.41.0.0.0.0.0.0.60" proved="true">
+         <proof prover="3"><result status="valid" time="0.02"/></proof>
+         </goal>
+         <goal name="VC mul.41.0.0.0.0.0.0.61" proved="true">
+         <proof prover="3"><result status="valid" time="0.02"/></proof>
+         </goal>
+         <goal name="VC mul.41.0.0.0.0.0.0.62" proved="true">
+         <proof prover="3"><result status="valid" time="0.02"/></proof>
+         </goal>
+         <goal name="VC mul.41.0.0.0.0.0.0.63" proved="true">
+         <proof prover="3"><result status="valid" time="0.02"/></proof>
+         </goal>
+         <goal name="VC mul.41.0.0.0.0.0.0.64" proved="true">
+         <proof prover="3"><result status="valid" time="0.02"/></proof>
+         </goal>
+         <goal name="VC mul.41.0.0.0.0.0.0.65" proved="true">
+         <proof prover="3"><result status="valid" time="0.02"/></proof>
+         </goal>
+         <goal name="VC mul.41.0.0.0.0.0.0.66" proved="true">
+         <proof prover="3"><result status="valid" time="0.02"/></proof>
+         </goal>
+         <goal name="VC mul.41.0.0.0.0.0.0.67" proved="true">
+         <proof prover="3"><result status="valid" time="0.02"/></proof>
+         </goal>
+         <goal name="VC mul.41.0.0.0.0.0.0.68" proved="true">
+         <proof prover="3"><result status="valid" time="0.02"/></proof>
+         </goal>
+         <goal name="VC mul.41.0.0.0.0.0.0.69" proved="true">
+         <proof prover="3"><result status="valid" time="0.02"/></proof>
+         </goal>
+         <goal name="VC mul.41.0.0.0.0.0.0.70" proved="true">
+         <proof prover="3"><result status="valid" time="0.02"/></proof>
+         </goal>
+         <goal name="VC mul.41.0.0.0.0.0.0.71" proved="true">
+         <proof prover="3"><result status="valid" time="0.02"/></proof>
+         </goal>
+         <goal name="VC mul.41.0.0.0.0.0.0.72" proved="true">
+         <proof prover="3"><result status="valid" time="0.02"/></proof>
+         </goal>
+         <goal name="VC mul.41.0.0.0.0.0.0.73" proved="true">
+         <proof prover="3"><result status="valid" time="0.02"/></proof>
+         </goal>
+         <goal name="VC mul.41.0.0.0.0.0.0.74" proved="true">
+         <proof prover="3"><result status="valid" time="0.02"/></proof>
+         </goal>
+         <goal name="VC mul.41.0.0.0.0.0.0.75" proved="true">
+         <proof prover="3"><result status="valid" time="0.02"/></proof>
+         </goal>
+         <goal name="VC mul.41.0.0.0.0.0.0.76" proved="true">
+         <proof prover="3"><result status="valid" time="0.02"/></proof>
+         </goal>
+         <goal name="VC mul.41.0.0.0.0.0.0.77" proved="true">
+         <proof prover="3"><result status="valid" time="0.26"/></proof>
+         </goal>
+         <goal name="VC mul.41.0.0.0.0.0.0.78" proved="true">
+         <proof prover="3"><result status="valid" time="0.03"/></proof>
+         </goal>
+         <goal name="VC mul.41.0.0.0.0.0.0.79" proved="true">
+         <proof prover="3"><result status="valid" time="0.03"/></proof>
+         </goal>
+         <goal name="VC mul.41.0.0.0.0.0.0.80" proved="true">
+         <proof prover="3"><result status="valid" time="0.02"/></proof>
+         </goal>
+         <goal name="VC mul.41.0.0.0.0.0.0.81" proved="true">
+         <proof prover="3"><result status="valid" time="0.02"/></proof>
+         </goal>
+         <goal name="VC mul.41.0.0.0.0.0.0.82" proved="true">
+         <proof prover="3"><result status="valid" time="0.02"/></proof>
+         </goal>
+         <goal name="VC mul.41.0.0.0.0.0.0.83" proved="true">
+         <proof prover="3"><result status="valid" time="0.02"/></proof>
+         </goal>
+         <goal name="VC mul.41.0.0.0.0.0.0.84" proved="true">
+         <proof prover="3"><result status="valid" time="0.02"/></proof>
+         </goal>
+         <goal name="VC mul.41.0.0.0.0.0.0.85" proved="true">
+         <proof prover="3"><result status="valid" time="0.02"/></proof>
+         </goal>
+         <goal name="VC mul.41.0.0.0.0.0.0.86" proved="true">
+         <proof prover="3"><result status="valid" time="0.02"/></proof>
+         </goal>
+         <goal name="VC mul.41.0.0.0.0.0.0.87" proved="true">
+         <proof prover="3"><result status="valid" time="0.02"/></proof>
+         </goal>
+         <goal name="VC mul.41.0.0.0.0.0.0.88" proved="true">
+         <proof prover="3"><result status="valid" time="0.02"/></proof>
+         </goal>
+         <goal name="VC mul.41.0.0.0.0.0.0.89" proved="true">
+         <proof prover="3"><result status="valid" time="0.02"/></proof>
+         </goal>
+         <goal name="VC mul.41.0.0.0.0.0.0.90" proved="true">
+         <proof prover="3"><result status="valid" time="0.02"/></proof>
+         </goal>
+         <goal name="VC mul.41.0.0.0.0.0.0.91" proved="true">
+         <proof prover="3"><result status="valid" time="0.02"/></proof>
+         </goal>
+         <goal name="VC mul.41.0.0.0.0.0.0.92" proved="true">
+         <proof prover="3"><result status="valid" time="0.02"/></proof>
+         </goal>
+         <goal name="VC mul.41.0.0.0.0.0.0.93" proved="true">
+         <proof prover="3"><result status="valid" time="0.02"/></proof>
+         </goal>
+         <goal name="VC mul.41.0.0.0.0.0.0.94" proved="true">
+         <proof prover="3"><result status="valid" time="0.02"/></proof>
+         </goal>
+         <goal name="VC mul.41.0.0.0.0.0.0.95" proved="true">
+         <proof prover="3"><result status="valid" time="0.02"/></proof>
+         </goal>
+         <goal name="VC mul.41.0.0.0.0.0.0.96" proved="true">
+         <proof prover="3"><result status="valid" time="0.02"/></proof>
+         </goal>
+         <goal name="VC mul.41.0.0.0.0.0.0.97" proved="true">
+         <proof prover="3"><result status="valid" time="0.02"/></proof>
+         </goal>
+         <goal name="VC mul.41.0.0.0.0.0.0.98" proved="true">
+         <proof prover="3"><result status="valid" time="0.02"/></proof>
+         </goal>
+         <goal name="VC mul.41.0.0.0.0.0.0.99" proved="true">
+         <proof prover="3"><result status="valid" time="0.02"/></proof>
+         </goal>
+         <goal name="VC mul.41.0.0.0.0.0.0.100" proved="true">
+         <proof prover="3"><result status="valid" time="0.02"/></proof>
+         </goal>
+         <goal name="VC mul.41.0.0.0.0.0.0.101" proved="true">
+         <proof prover="3"><result status="valid" time="0.02"/></proof>
+         </goal>
+         <goal name="VC mul.41.0.0.0.0.0.0.102" proved="true">
+         <proof prover="3"><result status="valid" time="0.02"/></proof>
+         </goal>
+         <goal name="VC mul.41.0.0.0.0.0.0.103" proved="true">
+         <proof prover="3"><result status="valid" time="0.02"/></proof>
+         </goal>
+         <goal name="VC mul.41.0.0.0.0.0.0.104" proved="true">
+         <proof prover="3"><result status="valid" time="0.02"/></proof>
+         </goal>
+         <goal name="VC mul.41.0.0.0.0.0.0.105" proved="true">
+         <proof prover="3"><result status="valid" time="0.02"/></proof>
+         </goal>
+         <goal name="VC mul.41.0.0.0.0.0.0.106" proved="true">
+         <proof prover="3"><result status="valid" time="0.02"/></proof>
+         </goal>
+         <goal name="VC mul.41.0.0.0.0.0.0.107" proved="true">
+         <proof prover="3"><result status="valid" time="0.02"/></proof>
+         </goal>
+         <goal name="VC mul.41.0.0.0.0.0.0.108" proved="true">
+         <proof prover="3"><result status="valid" time="0.02"/></proof>
+         </goal>
+         <goal name="VC mul.41.0.0.0.0.0.0.109" proved="true">
+         <proof prover="3"><result status="valid" time="0.02"/></proof>
+         </goal>
+         <goal name="VC mul.41.0.0.0.0.0.0.110" proved="true">
+         <proof prover="3"><result status="valid" time="0.02"/></proof>
+         </goal>
+         <goal name="VC mul.41.0.0.0.0.0.0.111" proved="true">
+         <proof prover="3"><result status="valid" time="0.02"/></proof>
+         </goal>
+         <goal name="VC mul.41.0.0.0.0.0.0.112" proved="true">
+         <proof prover="3"><result status="valid" time="0.02"/></proof>
+         </goal>
+         <goal name="VC mul.41.0.0.0.0.0.0.113" proved="true">
+         <proof prover="3"><result status="valid" time="0.02"/></proof>
+         </goal>
+        </transf>
+        </goal>
+        <goal name="VC mul.41.0.0.0.0.0.1" proved="true">
+        <proof prover="3"><result status="valid" time="0.31"/></proof>
+        </goal>
+       </transf>
+       </goal>
+      </transf>
+      </goal>
+     </transf>
+     </goal>
+    </transf>
+    </goal>
+   </transf>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC mul.42" expl="integer overflow" proved="true">
+  <proof prover="3"><result status="valid" time="0.05"/></proof>
+  </goal>
+  <goal name="VC mul.43" expl="precondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.16"/></proof>
+  </goal>
+  <goal name="VC mul.44" expl="loop variant decrease" proved="true">
+  <proof prover="3"><result status="valid" time="0.04"/></proof>
+  </goal>
+  <goal name="VC mul.45" expl="loop invariant preservation" proved="true">
+  <proof prover="3"><result status="valid" time="0.06"/></proof>
+  </goal>
+  <goal name="VC mul.46" expl="loop invariant preservation" proved="true">
+  <proof prover="0"><result status="valid" time="3.14"/></proof>
+  </goal>
+  <goal name="VC mul.47" expl="loop invariant preservation" proved="true">
+  <proof prover="2"><result status="valid" time="0.19"/></proof>
+  </goal>
+  <goal name="VC mul.48" expl="loop invariant preservation" proved="true">
+  <proof prover="3"><result status="valid" time="0.04"/></proof>
+  </goal>
+  <goal name="VC mul.49" expl="loop invariant preservation" proved="true">
+  <proof prover="3"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC mul.50" expl="loop invariant preservation" proved="true">
+  <proof prover="3"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC mul.51" expl="loop invariant preservation" proved="true">
+  <proof prover="3"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC mul.52" expl="loop invariant preservation" proved="true">
+  <proof prover="2"><result status="valid" time="0.27"/></proof>
+  </goal>
+  <goal name="VC mul.53" expl="postcondition" proved="true">
+  <proof prover="5" memlimit="2000"><result status="valid" time="0.04" steps="51"/></proof>
+  </goal>
+  <goal name="VC mul.54" expl="postcondition" proved="true">
+  <proof prover="3"><result status="valid" time="0.03"/></proof>
+  </goal>
+ </transf>
+ </goal>
+</theory>
+</file>
+</why3session>
diff --git a/examples/multiprecision/mul/why3shapes.gz b/examples/multiprecision/mul/why3shapes.gz
new file mode 100644
index 0000000000000000000000000000000000000000..0f7ec6398320949c58cfefe1efd929d44f0a17a3
GIT binary patch
literal 15958
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
K?zpmskpTb;JCMWx

literal 0
HcmV?d00001

diff --git a/examples/multiprecision/sub.mlw b/examples/multiprecision/sub.mlw
new file mode 100644
index 0000000000..08ced6d0d6
--- /dev/null
+++ b/examples/multiprecision/sub.mlw
@@ -0,0 +1,546 @@
+module Sub
+
+  use import int.Int
+  use import mach.int.Int32
+  use import mach.int.UInt64GMP as Limb
+  use import int.Power
+  use import ref.Ref
+  use import mach.c.C
+  use import array.Array
+  use import map.Map
+  use import types.Types
+  use import lemmas.Lemmas
+
+
+  (** [sub_limb r x y sz] substracts [y] from [(x, sz)] and writes
+      the result to [(r, sz)]. Returns borrow, either 0 or
+      1. Corresponds to [mpn_sub_1]. *)
+  let sub_limb (r x:t) (y:limb) (sz:int32) : limb
+    requires { valid x sz }
+    requires { valid r sz }
+    requires { 0 < sz }
+    ensures { value r sz - power radix sz * result
+              = value x sz - y }
+    ensures { forall j. (j < offset r \/ offset r + sz <= j)
+              -> (pelts r)[j] = old (pelts r)[j] }
+    ensures { 0 <= result <= 1 }
+    writes { r.data.elts }
+  =
+    let limb_zero = Limb.of_int 0 in
+    let b = ref y in
+    let lx = ref limb_zero in
+    let i = ref (Int32.of_int 0) in
+    while Int32.(<) !i sz && (not (Limb.(=) !b limb_zero)) do
+      invariant { 0 <= !i <= sz }
+      invariant { !i > 0 -> 0 <= !b <= 1 }
+      invariant { value r !i - power radix !i * !b
+                  = value x !i - y }
+      invariant { forall j. (j < offset r \/ offset r + sz <= j)
+                -> (pelts r)[j] = old (pelts r)[j] }
+      variant { sz - !i }
+      label StartLoop in
+      lx := get_ofs x !i;
+      let (res, borrow) = sub_with_borrow !lx !b limb_zero in
+      set_ofs r !i res;
+      assert { value r !i - power radix !i * !b =
+                 value x !i - y };
+      b := borrow;
+      value_tail r !i;
+      value_tail x !i;
+      assert { value r (!i+1) - power radix (!i+1) * !b
+                  = value x (!i+1) - y
+             (*by
+               value r !i - power radix !i * !b
+             = value r k + power radix k * res
+                 - power radix !i * !b
+             = value r k + power radix k * res
+                 - power radix k * radix * !b
+             = value r k + power radix k * (res - radix * !b)
+             = value r k +
+                 (power radix k) * (!lx - (!b at StartLoop))
+             = value r k - power radix k * (!b at StartLoop)
+                 + power radix k * !lx
+             = value x k - y + power radix k * !lx
+             = value x !i - y*)
+      };
+      i := Int32.(+) !i (Int32.of_int 1);
+    done;
+    if Int32.(=) !i sz then !b
+    else begin
+    while Int32.(<) !i sz do
+      invariant { !b = 0 }
+      invariant { 0 <= !i <= sz }
+      invariant { value r !i - power radix !i * !b
+                   = value x !i - y }
+      invariant { forall j. (j < offset r \/ offset r + sz <= j)
+                -> (pelts r)[j] = old (pelts r)[j] }
+      variant { sz - !i }
+      lx := get_ofs x !i;
+      set_ofs r !i !lx;
+      assert { value r !i - power radix !i * !b
+                   = value x !i - y };
+      let ghost k = p2i !i in
+      i := Int32.(+) !i (Int32.of_int 1);
+      value_sub_tail (pelts r) r.offset (r.offset + k);
+      value_sub_tail (pelts x) x.offset (x.offset + k);
+    done;
+    !b
+  end
+
+  (** [sub_limbs r x y sz] substracts [(y, sz)] from [(x, sz)] and
+      writes the result to [(r, sz)]. Returns borrow, either 0 or
+      1. Corresponds to [mpn_sub_n]. *)
+  let sub_limbs (r x y:t) (sz:int32) : limb
+    requires { valid x sz }
+    requires { valid y sz }
+    requires { valid r sz }
+    ensures { 0 <= result <= 1 }
+    ensures { value r sz - power radix sz * result
+              = value x sz - value y sz }
+    ensures { forall j. (j < offset r \/ offset r + sz <= j)
+              -> (pelts r)[j] = old (pelts r)[j] }
+    writes { r.data.elts }
+  =
+    let limb_zero = Limb.of_int 0 in
+    let lx = ref limb_zero in
+    let ly = ref limb_zero in
+    let b = ref limb_zero in
+    let i = ref (Int32.of_int 0) in
+    while Int32.(<) !i sz do
+      variant { sz - !i }
+      invariant { 0 <= !i <= sz }
+      invariant { value r !i - (power radix !i) * !b
+                  = value x !i - value y !i }
+      invariant { forall j. (j < offset r \/ offset r + sz <= j)
+                -> (pelts r)[j] = old (pelts r)[j] }
+      invariant { 0 <= !b <= 1 }
+      label StartLoop in
+      lx := get_ofs x !i;
+      ly := get_ofs y !i;
+      let res, borrow = sub_with_borrow !lx !ly !b in
+      set_ofs r !i res;
+      assert { value r !i - (power radix !i) * !b =
+      value x !i - value y !i };
+      b := borrow;
+      value_tail r !i;
+      value_tail x !i;
+      value_tail y !i;
+      assert { value r (!i+1) - (power radix (!i+1)) * !b
+                  = value x (!i+1) - value y (!i+1)
+               (*by
+                 value r !i - power radix !i * !b
+               = value r k + power radix k * res
+                   - power radix !i * !b
+               = value r k + power radix k * res
+                   - power radix k * radix * !b
+               = value r k
+                 + power radix k * (res - radix * !b)
+               = value r k
+                 + power radix k * (!lx - !ly - (!b at StartLoop))
+               = value r k - power radix k * (!b at StartLoop)
+                 + power radix k * (!lx - !ly)
+               = value x k - value y k
+                 + power radix k * (!lx - !ly)
+               = value x k - value y k
+                 + power radix k * !lx - power radix k * !ly
+               = value x k + power radix k * !lx
+                 - (value y k + power radix k * !ly)
+               = value x !i
+                 - (value y k + power radix k * !ly)
+               = value x !i - value y !i*)
+        };
+      i := Int32.(+) !i (Int32.of_int 1);
+      done;
+      !b
+
+  (** [sub r x y sx sy] substracts [(y,sy)] from [(x, sx)] and writes the
+      result in [(r, sx)]. [sx] must be greater than or equal to
+      [sy]. Returns borrow, either 0 or 1. Corresponds to [mpn_sub]. *)
+  let sub (r x y:t) (sx sy:int32) : limb
+    requires { 0 <= sy <= sx }
+    requires { valid x sx }
+    requires { valid y sy }
+    requires { valid r sx }
+    ensures { value r sx  - power radix sx * result
+              = value x sx - value y sy }
+    ensures { forall j. (j < offset r \/ offset r + sx <= j)
+              -> (pelts r)[j] = old (pelts r)[j] }
+    ensures { 0 <= result <= 1 }
+    writes { r.data.elts }
+  =
+    let limb_zero = Limb.of_int 0 in
+    let lx = ref limb_zero in
+    let ly = ref limb_zero in
+    let b = ref limb_zero in
+    let i = ref (Int32.of_int 0) in
+    let one = Int32.of_int 1 in
+    while Int32.(<) !i sy do
+      variant { sy - !i }
+      invariant { 0 <= !i <= sy }
+      invariant { value r !i - power radix !i * !b =
+                  value x !i - value y !i }
+      invariant { forall j. (j < offset r \/ offset r + sx <= j)
+                -> (pelts r)[j] = old (pelts r)[j] }
+      invariant { 0 <= !b <= 1 }
+      label StartLoop in
+      lx := get_ofs x !i;
+      ly := get_ofs y !i;
+      let res, borrow = sub_with_borrow !lx !ly !b in
+      set_ofs r !i res;
+      assert { value r !i - power radix !i * !b =
+                  value x !i - value y !i };
+      b := borrow;
+      value_tail r !i;
+      value_tail x !i;
+      value_tail y !i;
+      assert { value r (!i+1) - power radix (!i+1) * !b =
+              value x (!i+1) - value y (!i+1)
+              (*by
+              value r !i - power radix !i * !b
+              = value r k + power radix k * res
+                - power radix !i * !b
+              = value r k + power radix k * res
+                - (power radix k) * radix * !b
+              = value r k
+                + power radix k * (res - radix * !b)
+              = value r k
+                + power radix k * (!lx - !ly - (!b at StartLoop))
+              = value r k - (power radix k) * (!b at StartLoop)
+                + power radix k * (!lx - !ly)
+              = value x k - value y k
+                + power radix k * (!lx - !ly)
+              = value x k + power radix k * !lx
+                - value y k - power radix k * !ly
+              = value x !i
+                - (value y k + power radix k * !ly)
+              = value x !i - value y !i*) };
+      i := Int32.(+) !i one;
+    done;
+    try
+    begin while Int32.(<) !i sx do
+      variant { sx - !i }
+      invariant { sy <= !i <= sx }
+      invariant { value r !i - power radix !i * !b =
+                  value x !i - value y sy }
+      invariant { forall j. (j < offset r \/ offset r + sx <= j)
+                -> (pelts r)[j] = old (pelts r)[j] }
+      invariant { 0 <= !b <= 1 }
+      (if (Limb.(=) !b (Limb.of_int 0)) then raise Break);
+      label StartLoop2 in
+      lx := get_ofs x !i;
+      let res, borrow = sub_with_borrow !lx limb_zero !b in
+      set_ofs r !i res;
+      assert { value r !i - power radix !i * !b =
+      value x !i - value y sy };
+      b := borrow;
+      value_tail r !i;
+      value_tail x !i;
+      assert { value r (!i+1) - power radix (!i+1) * !b =
+               value x (!i+1) - value y sy
+            (*by
+              value r !i - power radix !i * !b
+            = value r k + power radix k * res
+              - (power radix !i) * !b
+            = value r k + power radix k * res
+              - (power radix k) * radix * !b
+            = value r k + power radix k * (res - radix * !b)
+            = value r k
+              + power radix k * (!lx - 0 - (!b at StartLoop2))
+            = value r k - (power radix k) * (!b at StartLoop2)
+              + (power radix k) * !lx
+            = value x k - value y sy
+              + (power radix k) * !lx
+            = value x !i
+              - value y sy*) };
+      i := Int32.(+) !i one;
+    done;
+    assert { !i = sx }
+    end
+    with Break -> assert { !b = 0 }
+    end;
+    while Int32.(<) !i sx do
+      variant { sx - !i }
+      invariant { sy <= !i <= sx }
+      invariant { !i = sx \/ !b = 0 }
+      invariant { value r !i - power radix !i * !b =
+                value x !i - value y sy }
+      invariant { forall j. (j < offset r \/ offset r + sx <= j)
+                -> (pelts r)[j] = old (pelts r)[j] }
+      assert { !b = 0 by !i < sx };
+      lx := get_ofs x !i;
+      set_ofs r !i !lx;
+      value_tail r !i;
+      value_tail x !i;
+      assert { value r !i = value x !i - value y sy };
+      assert { value r (!i+1) - power radix (!i+1) * !b
+               = value x (!i+1) - value y sy
+               (*by
+               value r !i + power radix !i * !b
+                 = value r !i
+                 = value r k + power radix k * !lx
+               so value x !i
+                  = value x k + power radix k * !lx
+               so value r k
+                  = value r k + power radix k * !b
+                  = value x k - value y sy*)
+             };
+      i := Int32.(+) !i (Int32.of_int 1);
+    done;
+    !b
+
+  let sub_in_place (x y:t) (sx sy:int32) : limb
+    requires { 0 <= sy <= sx }
+    requires { valid x sx }
+    requires { valid y sy }
+    ensures { value x sx  - power radix sx * result
+              = value (old x) sx - value y sy }
+    ensures { 0 <= result <= 1 }
+    writes { x.data.elts }
+    ensures { forall j. j < x.offset \/ x.offset + sx <= j ->
+              (pelts x)[j] = (pelts (old x))[j] }
+  =
+    let ghost ox = { x } in
+    let limb_zero = Limb.of_int 0 in
+    let lx = ref limb_zero in
+    let ly = ref limb_zero in
+    let b = ref limb_zero in
+    let i = ref (Int32.of_int 0) in
+    let one = Int32.of_int 1 in
+    while Int32.(<) !i sy do
+      variant { sy - !i }
+      invariant { 0 <= !i <= sy }
+      invariant { value x !i - power radix !i * !b =
+                  value ox !i - value y !i }
+      invariant { 0 <= !b <= 1 }
+      invariant { forall j. !i <= j < sx ->
+                  (pelts x)[x.offset + j] = (pelts ox)[x.offset + j] }
+      invariant { forall j. j < x.offset \/ x.offset + sx <= j ->
+                  (pelts x)[j] = (pelts (old x))[j] }
+      label StartLoop in
+      lx := get_ofs x !i;
+      assert { !lx = (pelts ox)[ox.offset + !i] };
+      ly := get_ofs y !i;
+      let res, borrow = sub_with_borrow !lx !ly !b in
+      set_ofs x !i res;
+      assert { forall j. !i < j < sx ->
+                 (pelts x)[x.offset + j]
+                 = (pelts ox)[x.offset + j]
+                 by (pelts x)[x.offset + j]
+                 = (pelts (x at StartLoop))[x.offset + j]
+                 = (pelts ox)[x.offset + j]};
+      assert { value x !i - power radix !i * !b = value ox !i - value y !i };
+      b := borrow;
+      value_tail ox !i;
+      value_tail x !i;
+      value_tail y !i;
+      assert { value x (!i+1) - power radix (!i+1) * !b =
+              value ox (!i+1) - value y (!i+1)
+              (*by value x !i - power radix !i * !b
+              = value x k + power radix k * res
+                - power radix !i * !b
+              = value x k + power radix k * res
+                - (power radix k) * radix * !b
+              = value x k
+                + power radix k * (res - radix * !b)
+              = value x k
+                + power radix k * (!lx - !ly - (!b at StartLoop))
+              = value x k - (power radix k) * (!b at StartLoop)
+                + power radix k * (!lx - !ly)
+              = value ox k - value y k
+                + power radix k * (!lx - !ly)
+              = value ox k + power radix k * !lx
+                - value y k - power radix k * !ly
+              = value ox !i
+                - (value y k + power radix k * !ly)
+              = value ox !i - value y !i*) };
+      i := Int32.(+) !i one;
+    done;
+    try
+    begin while Int32.(<) !i sx do
+      variant { sx - !i }
+      invariant { sy <= !i <= sx }
+      invariant { value x !i - power radix !i * !b =
+                  value ox !i - value y sy }
+      invariant { 0 <= !b <= 1 }
+      invariant { forall j. !i <= j < sx ->
+                  (pelts x)[x.offset + j] = (pelts ox) [x.offset + j] }
+      invariant { forall j. j < x.offset \/ x.offset + sx <= j ->
+                  (pelts x)[j] = (pelts (old x))[j] }
+      (if (Limb.(=) !b limb_zero) then raise ReturnLimb limb_zero);
+      label StartLoop2 in
+      lx := get_ofs x !i;
+      assert { !lx = (pelts ox)[ox.offset + !i] };
+      let res, borrow = sub_with_borrow !lx limb_zero !b in
+      value_sub_update_no_change (pelts x) (x.offset + p2i !i)
+                                           (x.offset + p2i !i + 1)
+                                           (x.offset + p2i sx) res;
+      set_ofs x !i res;
+      assert { value x !i - power radix !i * !b = value ox !i - value y sy };
+      b := borrow;
+      assert { forall j. !i < j < sx ->
+                  (pelts x)[x.offset + j] = (pelts ox) [x.offset + j] };
+      value_tail ox !i;
+      value_tail x !i;
+      assert { value x (!i+1) - power radix (!i+1) * !b =
+               value ox (!i+1) - value y sy
+            (*by
+              value x !i - power radix !i * !b
+            = value x k + power radix k * res
+              - (power radix !i) * !b
+            = value x k + power radix k * res
+              - (power radix k) * radix * !b
+            = value x k + power radix k * (res - radix * !b)
+            = value x k
+              + power radix k * (!lx - 0 - (!b at StartLoop2))
+            = value x k - (power radix k) * (!b at StartLoop2)
+              + (power radix k) * !lx
+            = value ox k - value y sy
+              + (power radix k) * !lx
+            = value ox !i
+              - value y sy*) };
+      i := Int32.(+) !i one;
+    done;
+    assert { !i = sx };
+    !b
+    end
+    with ReturnLimb n -> begin
+      assert { n = 0 = !b };
+      assert { forall j. x.offset + !i <= j < x.offset + sx
+               -> (pelts x)[j] = (pelts ox)[j]
+               by !i <= j - x.offset < sx
+               so (pelts x)[x.offset + (j - x.offset)]
+                  = (pelts ox)[x.offset + (j - x.offset)] };
+      value_sub_frame (pelts x) (pelts ox) (x.offset + p2i !i) (x.offset + p2i sx);
+      value_sub_concat (pelts x) x.offset (x.offset + p2i !i) (x.offset + p2i sx);
+      value_sub_concat (pelts ox) x.offset (x.offset + p2i !i) (x.offset + p2i sx);
+      assert { value x sx = value (old x) sx - value y sy };
+      n
+      end
+    end
+
+  (** [decr x y sz] subtracts from [x] the value of the limb [y] in place.
+      [x] has size [sz]. The subtraction must not overflow. This corresponds
+      to [mpn_decr] *)
+  let decr (x:t) (y:limb) (ghost sz:int32) : unit
+    requires { valid x sz }
+    requires { sz > 0 }
+    requires { 0 <= value x sz - y }
+    ensures  { value x sz = value (old x) sz - y }
+    ensures { forall j. j < x.offset \/ x.offset + sz <= j ->
+              (pelts x)[j] = (pelts (old x))[j] }
+    writes   { x.data.elts }
+  =
+    let ghost ox = { x } in
+    let b = ref y in
+    let lx : ref limb = ref 0 in
+    let i : ref int32 = ref 0 in
+    while not (Limb.(=) !b 0) do
+      invariant { 0 <= !i <= sz }
+      invariant { !i = sz -> !b = 0 }
+      invariant { !i > 0 -> 0 <= !b <= 1 }
+      invariant { value x !i - (power radix !i) * !b
+                  = value ox !i - y }
+      invariant { forall j. !i <= j < sz ->
+                  (pelts x)[x.offset + j] = (pelts ox)[x.offset + j] }
+      invariant { forall j. j < x.offset \/ x.offset + sz <= j ->
+                  (pelts x)[j] = (pelts ox)[j] }
+      variant   { sz - !i }
+      label StartLoop in
+      lx := get_ofs x !i;
+      assert { !lx = (pelts ox)[ox.offset + !i] };
+      let (res, borrow) = sub_with_borrow !lx !b 0 in (*TODO*)
+      assert { res - radix * borrow = !lx - !b }; (* TODO remove this *)
+      value_sub_update_no_change (pelts x) (x.offset + p2i !i)
+                                           (x.offset + p2i !i + 1)
+                                           (x.offset + p2i sz) res;
+      set_ofs x !i res;
+      assert { forall j. !i < j < sz ->
+                 (pelts x)[x.offset + j]
+                 = (pelts ox)[x.offset + j] };
+      assert { value x !i - (power radix !i) * !b = value ox !i - y };
+      b := borrow;
+      value_tail x !i;
+      value_tail ox !i;
+      assert { value x (!i+1) - power radix (!i+1) * !b =
+               value ox (!i+1) - y };
+      i := Int32.(+) !i 1;
+      assert { !i = sz -> !b = 0
+               by value x sz - power radix sz * !b = value ox sz - y
+                  so 0 <= value ox sz - y
+                  so value x sz < power radix sz
+                  so value x sz - power radix sz * 1 < 0
+                  so (!b=0 \/ !b=1) };
+    done;
+    value_concat x !i sz;
+    value_concat ox !i sz;
+    assert { forall j. x.offset + !i <= j < x.offset + sz ->
+             (pelts x)[j] = (pelts ox)[j]
+             by let k = j - x.offset in
+                !i <= k < sz
+                so (pelts x)[x.offset + k] = (pelts ox)[x.offset + k]};
+    value_sub_frame (pelts x) (pelts ox) (x.offset + p2i !i) (x.offset + p2i sz)
+
+  (** [incr_1 x sz] subtracts 1 from [x] in place.
+      [x] has size [sz]. The subtraction must not overflow.
+      This corresponds to [mpn_decr] *)
+  let decr_1 (x:t) (ghost sz:int32) : unit
+    requires { valid x sz }
+    requires { sz > 0 }
+    requires { 0 <= value x sz - 1 }
+    ensures  { value x sz = value (old x) sz - 1 }
+    ensures { forall j. j < x.offset \/ x.offset + sz <= j ->
+              (pelts x)[j] = (pelts (old x))[j] }
+    writes   { x.data.elts }
+  =
+    let ghost ox = { x } in
+    let ghost b : ref limb = ref 1 in
+    let lx : ref limb = ref 0 in
+    let i : ref int32 = ref 0 in
+    while (Limb.(=) !lx 0) do
+      invariant { 0 <= !i <= sz }
+      invariant { !i = sz -> !lx <> 0 }
+      invariant { !lx <> 0 <-> !b = 0 }
+      invariant { 0 <= !b <= 1 }
+      invariant { value x !i - (power radix !i) * !b
+                  = value ox !i - 1 }
+      invariant { forall j. !i <= j < sz ->
+                  (pelts x)[x.offset + j] = (pelts ox)[x.offset + j] }
+      invariant { forall j. j < x.offset \/ x.offset + sz <= j ->
+                  (pelts x)[j] = (pelts ox)[j] }
+      variant   { sz - !i }
+      label StartLoop in
+      lx := get_ofs x !i;
+      assert { !lx = (pelts ox)[ox.offset + !i] };
+      let res = sub_mod !lx 1 in
+      ghost (if Limb.(=) !lx 0 then b := 1 else b := 0);
+      assert { res - radix * !b = !lx - 1 };
+      value_sub_update_no_change (pelts x) (x.offset + p2i !i)
+                                           (x.offset + p2i !i + 1)
+                                           (x.offset + p2i sz) res;
+      set_ofs x !i res;
+      assert { forall j. !i < j < sz ->
+                 (pelts x)[x.offset + j]
+                 = (pelts ox)[x.offset + j] };
+      assert { value x !i - (power radix !i) * (!b at StartLoop) = value ox !i - 1 };
+      value_tail x !i;
+      value_tail ox !i;
+      assert { value x (!i+1) - power radix (!i+1) * !b =
+               value ox (!i+1) - 1 };
+      i := Int32.(+) !i 1;
+      assert { !i = sz -> !b = 0
+               by value x sz - power radix sz * !b = value ox sz - 1
+                  so 0 <= value ox sz - 1
+                  so value x sz < power radix sz
+                  so value x sz - power radix sz * 1 < 0
+                  so (!b=0 \/ !b=1) };
+    done;
+    value_concat x !i sz;
+    value_concat ox !i sz;
+    assert { forall j. x.offset + !i <= j < x.offset + sz ->
+             (pelts x)[j] = (pelts ox)[j]
+             by let k = j - x.offset in
+                !i <= k < sz
+                so (pelts x)[x.offset + k] = (pelts ox)[x.offset + k]};
+    value_sub_frame (pelts x) (pelts ox) (x.offset + p2i !i) (x.offset + p2i sz)
+
+end
\ No newline at end of file
diff --git a/examples/multiprecision/sub/why3session.xml b/examples/multiprecision/sub/why3session.xml
new file mode 100644
index 0000000000..714d8d0156
--- /dev/null
+++ b/examples/multiprecision/sub/why3session.xml
@@ -0,0 +1,1261 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE why3session PUBLIC "-//Why3//proof session v5//EN"
+"http://why3.lri.fr/why3session.dtd">
+<why3session shape_version="4">
+<prover id="0" name="Eprover" version="1.9.1-001" timelimit="5" steplimit="0" memlimit="2000"/>
+<prover id="1" name="CVC3" version="2.4.1" timelimit="5" steplimit="0" memlimit="1000"/>
+<prover id="2" name="CVC4" version="1.4" timelimit="1" steplimit="0" memlimit="1000"/>
+<prover id="3" name="Z3" version="4.5.0" timelimit="1" steplimit="0" memlimit="1000"/>
+<prover id="4" name="Z3" version="4.4.1" timelimit="5" steplimit="0" memlimit="1000"/>
+<prover id="5" name="Alt-Ergo" version="2.0.0" timelimit="5" steplimit="0" memlimit="1000"/>
+<file name="../sub.mlw" proved="true">
+<theory name="Sub" proved="true">
+ <goal name="VC sub_limb" expl="VC for sub_limb" proved="true">
+ <transf name="split_goal_right" proved="true" >
+  <goal name="VC sub_limb.0" expl="integer overflow" proved="true">
+  <proof prover="5"><result status="valid" time="0.06" steps="20"/></proof>
+  </goal>
+  <goal name="VC sub_limb.1" expl="integer overflow" proved="true">
+  <proof prover="5" timelimit="1"><result status="valid" time="0.02" steps="21"/></proof>
+  </goal>
+  <goal name="VC sub_limb.2" expl="loop invariant init" proved="true">
+  <proof prover="4"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC sub_limb.3" expl="loop invariant init" proved="true">
+  <proof prover="4"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC sub_limb.4" expl="loop invariant init" proved="true">
+  <proof prover="5" timelimit="1"><result status="valid" time="0.05" steps="70"/></proof>
+  </goal>
+  <goal name="VC sub_limb.5" expl="loop invariant init" proved="true">
+  <proof prover="3"><result status="valid" time="0.01"/></proof>
+  </goal>
+  <goal name="VC sub_limb.6" expl="precondition" proved="true">
+  <proof prover="4"><result status="valid" time="1.07"/></proof>
+  </goal>
+  <goal name="VC sub_limb.7" expl="precondition" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC sub_limb.7.0" expl="VC for sub_limb" proved="true">
+   <proof prover="2"><result status="valid" time="0.06"/></proof>
+   </goal>
+   <goal name="VC sub_limb.7.1" expl="VC for sub_limb" proved="true">
+   <proof prover="5" timelimit="1"><result status="valid" time="0.01" steps="21"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC sub_limb.8" expl="precondition" proved="true">
+  <proof prover="5"><result status="valid" time="0.03" steps="53"/></proof>
+  </goal>
+  <goal name="VC sub_limb.9" expl="assertion" proved="true">
+  <proof prover="0"><result status="valid" time="0.50"/></proof>
+  </goal>
+  <goal name="VC sub_limb.10" expl="precondition" proved="true">
+  <proof prover="1"><result status="valid" time="0.08"/></proof>
+  </goal>
+  <goal name="VC sub_limb.11" expl="precondition" proved="true">
+  <proof prover="4"><result status="valid" time="0.05"/></proof>
+  </goal>
+  <goal name="VC sub_limb.12" expl="assertion" proved="true">
+  <transf name="introduce_premises" proved="true" >
+   <goal name="VC sub_limb.12.0" expl="assertion" proved="true">
+   <transf name="use_th" proved="true" arg1="lineardecision.LinearDecisionIntMP">
+    <goal name="VC sub_limb.12.0.0" expl="assertion" proved="true">
+    <transf name="reflection_f" proved="true" arg1="mp_decision">
+     <goal name="VC sub_limb.12.0.0.0" expl="assertion" proved="true">
+     <proof prover="0"><result status="valid" time="0.52"/></proof>
+     </goal>
+     <goal name="VC sub_limb.12.0.0.1" proved="true">
+     <proof prover="3"><result status="valid" time="0.30"/></proof>
+     </goal>
+     <goal name="VC sub_limb.12.0.0.2" proved="true">
+     <proof prover="3"><result status="valid" time="0.20"/></proof>
+     </goal>
+    </transf>
+    </goal>
+   </transf>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC sub_limb.13" expl="integer overflow" proved="true">
+  <proof prover="4"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC sub_limb.14" expl="integer overflow" proved="true">
+  <proof prover="4"><result status="valid" time="0.04"/></proof>
+  </goal>
+  <goal name="VC sub_limb.15" expl="loop variant decrease" proved="true">
+  <proof prover="4"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC sub_limb.16" expl="loop invariant preservation" proved="true">
+  <proof prover="3"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC sub_limb.17" expl="loop invariant preservation" proved="true">
+  <proof prover="4"><result status="valid" time="0.04"/></proof>
+  </goal>
+  <goal name="VC sub_limb.18" expl="loop invariant preservation" proved="true">
+  <proof prover="0" timelimit="10"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC sub_limb.19" expl="loop invariant preservation" proved="true">
+  <proof prover="2"><result status="valid" time="0.12"/></proof>
+  </goal>
+  <goal name="VC sub_limb.20" expl="postcondition" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC sub_limb.20.0" expl="postcondition" proved="true">
+   <transf name="inline_all" proved="true" >
+    <goal name="VC sub_limb.20.0.0" expl="postcondition" proved="true">
+    <proof prover="5" memlimit="2000"><result status="valid" time="0.03" steps="17"/></proof>
+    </goal>
+   </transf>
+   </goal>
+   <goal name="VC sub_limb.20.1" expl="postcondition" proved="true">
+   <proof prover="0"><result status="valid" time="0.04"/></proof>
+   <proof prover="5" memlimit="2000"><result status="valid" time="0.09" steps="25"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC sub_limb.21" expl="postcondition" proved="true">
+  <proof prover="3"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC sub_limb.22" expl="postcondition" proved="true">
+  <proof prover="5" memlimit="2000"><result status="valid" time="0.06" steps="25"/></proof>
+  </goal>
+  <goal name="VC sub_limb.23" expl="loop invariant init" proved="true">
+  <proof prover="4"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC sub_limb.24" expl="loop invariant init" proved="true">
+  <proof prover="4"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC sub_limb.25" expl="loop invariant init" proved="true">
+  <proof prover="4"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC sub_limb.26" expl="loop invariant init" proved="true">
+  <proof prover="3"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC sub_limb.27" expl="precondition" proved="true">
+  <proof prover="5" timelimit="1"><result status="valid" time="0.01" steps="42"/></proof>
+  </goal>
+  <goal name="VC sub_limb.28" expl="precondition" proved="true">
+  <proof prover="5" timelimit="1"><result status="valid" time="0.03" steps="43"/></proof>
+  </goal>
+  <goal name="VC sub_limb.29" expl="assertion" proved="true">
+  <proof prover="5" timelimit="1"><result status="valid" time="0.06" steps="123"/></proof>
+  </goal>
+  <goal name="VC sub_limb.30" expl="integer overflow" proved="true">
+  <proof prover="5" memlimit="2000"><result status="valid" time="0.07" steps="52"/></proof>
+  </goal>
+  <goal name="VC sub_limb.31" expl="integer overflow" proved="true">
+  <proof prover="5"><result status="valid" time="0.03" steps="54"/></proof>
+  </goal>
+  <goal name="VC sub_limb.32" expl="precondition" proved="true">
+  <proof prover="4"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC sub_limb.33" expl="precondition" proved="true">
+  <proof prover="4"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC sub_limb.34" expl="loop variant decrease" proved="true">
+  <proof prover="4"><result status="valid" time="0.05"/></proof>
+  </goal>
+  <goal name="VC sub_limb.35" expl="loop invariant preservation" proved="true">
+  <proof prover="4"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC sub_limb.36" expl="loop invariant preservation" proved="true">
+  <proof prover="4"><result status="valid" time="0.04"/></proof>
+  </goal>
+  <goal name="VC sub_limb.37" expl="loop invariant preservation" proved="true">
+  <proof prover="5" timelimit="1"><result status="valid" time="0.08" steps="87"/></proof>
+  </goal>
+  <goal name="VC sub_limb.38" expl="loop invariant preservation" proved="true">
+  <proof prover="5" timelimit="1"><result status="valid" time="0.06" steps="79"/></proof>
+  </goal>
+  <goal name="VC sub_limb.39" expl="postcondition" proved="true">
+  <proof prover="5" timelimit="1"><result status="valid" time="0.02" steps="32"/></proof>
+  </goal>
+  <goal name="VC sub_limb.40" expl="postcondition" proved="true">
+  <proof prover="3"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC sub_limb.41" expl="postcondition" proved="true">
+  <proof prover="4"><result status="valid" time="0.02"/></proof>
+  </goal>
+ </transf>
+ </goal>
+ <goal name="VC sub_limbs" expl="VC for sub_limbs" proved="true">
+ <transf name="split_goal_right" proved="true" >
+  <goal name="VC sub_limbs.0" expl="integer overflow" proved="true">
+  <proof prover="4"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC sub_limbs.1" expl="integer overflow" proved="true">
+  <proof prover="5"><result status="valid" time="0.08" steps="25"/></proof>
+  </goal>
+  <goal name="VC sub_limbs.2" expl="loop invariant init" proved="true">
+  <proof prover="0"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC sub_limbs.3" expl="loop invariant init" proved="true">
+  <proof prover="5" timelimit="1"><result status="valid" time="0.04" steps="77"/></proof>
+  </goal>
+  <goal name="VC sub_limbs.4" expl="loop invariant init" proved="true">
+  <proof prover="3"><result status="valid" time="0.01"/></proof>
+  </goal>
+  <goal name="VC sub_limbs.5" expl="loop invariant init" proved="true">
+  <proof prover="4"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC sub_limbs.6" expl="precondition" proved="true">
+  <proof prover="4"><result status="valid" time="0.04"/></proof>
+  </goal>
+  <goal name="VC sub_limbs.7" expl="precondition" proved="true">
+  <proof prover="4"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC sub_limbs.8" expl="precondition" proved="true">
+  <proof prover="4"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC sub_limbs.9" expl="precondition" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC sub_limbs.9.0" expl="VC for sub_limbs" proved="true">
+   <proof prover="5" timelimit="1"><result status="valid" time="0.02" steps="28"/></proof>
+   </goal>
+   <goal name="VC sub_limbs.9.1" expl="VC for sub_limbs" proved="true">
+   <proof prover="2"><result status="valid" time="0.12"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC sub_limbs.10" expl="assertion" proved="true">
+  <proof prover="0"><result status="valid" time="0.44"/></proof>
+  </goal>
+  <goal name="VC sub_limbs.11" expl="precondition" proved="true">
+  <proof prover="4"><result status="valid" time="0.04"/></proof>
+  </goal>
+  <goal name="VC sub_limbs.12" expl="precondition" proved="true">
+  <proof prover="4"><result status="valid" time="0.01"/></proof>
+  </goal>
+  <goal name="VC sub_limbs.13" expl="precondition" proved="true">
+  <proof prover="4"><result status="valid" time="0.04"/></proof>
+  </goal>
+  <goal name="VC sub_limbs.14" expl="assertion" proved="true">
+  <transf name="introduce_premises" proved="true" >
+   <goal name="VC sub_limbs.14.0" expl="assertion" proved="true">
+   <transf name="use_th" proved="true" arg1="lineardecision.LinearDecisionIntMP">
+    <goal name="VC sub_limbs.14.0.0" expl="assertion" proved="true">
+    <transf name="reflection_f" proved="true" arg1="mp_decision">
+     <goal name="VC sub_limbs.14.0.0.0" expl="assertion" proved="true">
+     <proof prover="0"><result status="valid" time="4.20"/></proof>
+     </goal>
+     <goal name="VC sub_limbs.14.0.0.1" proved="true">
+     <proof prover="3"><result status="valid" time="0.20"/></proof>
+     </goal>
+     <goal name="VC sub_limbs.14.0.0.2" proved="true">
+     <proof prover="3"><result status="valid" time="0.22"/></proof>
+     </goal>
+    </transf>
+    </goal>
+   </transf>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC sub_limbs.15" expl="integer overflow" proved="true">
+  <proof prover="4"><result status="valid" time="0.06"/></proof>
+  </goal>
+  <goal name="VC sub_limbs.16" expl="integer overflow" proved="true">
+  <proof prover="4"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC sub_limbs.17" expl="loop variant decrease" proved="true">
+  <proof prover="4"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC sub_limbs.18" expl="loop invariant preservation" proved="true">
+  <proof prover="4"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC sub_limbs.19" expl="loop invariant preservation" proved="true">
+  <proof prover="0"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC sub_limbs.20" expl="loop invariant preservation" proved="true">
+  <proof prover="2"><result status="valid" time="0.14"/></proof>
+  </goal>
+  <goal name="VC sub_limbs.21" expl="loop invariant preservation" proved="true">
+  <proof prover="4"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC sub_limbs.22" expl="postcondition" proved="true">
+  <proof prover="4"><result status="valid" time="0.04"/></proof>
+  </goal>
+  <goal name="VC sub_limbs.23" expl="postcondition" proved="true">
+  <proof prover="5" timelimit="1"><result status="valid" time="0.02" steps="22"/></proof>
+  </goal>
+  <goal name="VC sub_limbs.24" expl="postcondition" proved="true">
+  <proof prover="3"><result status="valid" time="0.03"/></proof>
+  </goal>
+ </transf>
+ </goal>
+ <goal name="VC sub" expl="VC for sub" proved="true">
+ <transf name="split_goal_right" proved="true" >
+  <goal name="VC sub.0" expl="integer overflow" proved="true">
+  <proof prover="4"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC sub.1" expl="integer overflow" proved="true">
+  <proof prover="4"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC sub.2" expl="integer overflow" proved="true">
+  <proof prover="5"><result status="valid" time="0.09" steps="29"/></proof>
+  </goal>
+  <goal name="VC sub.3" expl="loop invariant init" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC sub.3.0" expl="VC for sub" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC sub.3.1" expl="VC for sub" proved="true">
+   <proof prover="3"><result status="valid" time="0.03"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC sub.4" expl="loop invariant init" proved="true">
+  <proof prover="5" timelimit="1"><result status="valid" time="0.03" steps="88"/></proof>
+  </goal>
+  <goal name="VC sub.5" expl="loop invariant init" proved="true">
+  <proof prover="3"><result status="valid" time="0.01"/></proof>
+  </goal>
+  <goal name="VC sub.6" expl="loop invariant init" proved="true">
+  <proof prover="5" memlimit="2000"><result status="valid" time="0.06" steps="17"/></proof>
+  </goal>
+  <goal name="VC sub.7" expl="precondition" proved="true">
+  <proof prover="4"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC sub.8" expl="precondition" proved="true">
+  <proof prover="4"><result status="valid" time="0.08"/></proof>
+  </goal>
+  <goal name="VC sub.9" expl="precondition" proved="true">
+  <proof prover="4"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC sub.10" expl="precondition" proved="true">
+  <proof prover="5" timelimit="1"><result status="valid" time="0.04" steps="45"/></proof>
+  </goal>
+  <goal name="VC sub.11" expl="assertion" proved="true">
+  <proof prover="0"><result status="valid" time="0.50"/></proof>
+  </goal>
+  <goal name="VC sub.12" expl="precondition" proved="true">
+  <proof prover="4"><result status="valid" time="0.02"/></proof>
+  <proof prover="5" memlimit="2000"><result status="valid" time="0.04" steps="39"/></proof>
+  </goal>
+  <goal name="VC sub.13" expl="precondition" proved="true">
+  <proof prover="4"><result status="valid" time="0.04"/></proof>
+  </goal>
+  <goal name="VC sub.14" expl="precondition" proved="true">
+  <proof prover="5" memlimit="2000"><result status="valid" time="0.05" steps="41"/></proof>
+  </goal>
+  <goal name="VC sub.15" expl="assertion" proved="true">
+  <transf name="introduce_premises" proved="true" >
+   <goal name="VC sub.15.0" expl="assertion" proved="true">
+   <transf name="use_th" proved="true" arg1="lineardecision.LinearDecisionIntMP">
+    <goal name="VC sub.15.0.0" expl="assertion" proved="true">
+    <transf name="reflection_f" proved="true" arg1="mp_decision">
+     <goal name="VC sub.15.0.0.0" expl="assertion" proved="true">
+     <proof prover="0"><result status="valid" time="4.29"/></proof>
+     </goal>
+     <goal name="VC sub.15.0.0.1" proved="true">
+     <proof prover="3"><result status="valid" time="0.22"/></proof>
+     </goal>
+     <goal name="VC sub.15.0.0.2" proved="true">
+     <proof prover="3"><result status="valid" time="0.23"/></proof>
+     </goal>
+    </transf>
+    </goal>
+   </transf>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC sub.16" expl="integer overflow" proved="true">
+  <proof prover="3"><result status="valid" time="0.04"/></proof>
+  </goal>
+  <goal name="VC sub.17" expl="loop variant decrease" proved="true">
+  <proof prover="3"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC sub.18" expl="loop invariant preservation" proved="true">
+  <proof prover="3"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC sub.19" expl="loop invariant preservation" proved="true">
+  <proof prover="0"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC sub.20" expl="loop invariant preservation" proved="true">
+  <proof prover="2"><result status="valid" time="0.13"/></proof>
+  </goal>
+  <goal name="VC sub.21" expl="loop invariant preservation" proved="true">
+  <proof prover="3"><result status="valid" time="0.04"/></proof>
+  </goal>
+  <goal name="VC sub.22" expl="loop invariant init" proved="true">
+  <proof prover="5" memlimit="2000"><result status="valid" time="0.05" steps="25"/></proof>
+  </goal>
+  <goal name="VC sub.23" expl="loop invariant init" proved="true">
+  <proof prover="5" memlimit="2000"><result status="valid" time="0.03" steps="27"/></proof>
+  </goal>
+  <goal name="VC sub.24" expl="loop invariant init" proved="true">
+  <proof prover="3"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC sub.25" expl="loop invariant init" proved="true">
+  <proof prover="5" memlimit="2000"><result status="valid" time="0.04" steps="28"/></proof>
+  </goal>
+  <goal name="VC sub.26" expl="integer overflow" proved="true">
+  <proof prover="5" memlimit="2000"><result status="valid" time="0.04" steps="52"/></proof>
+  </goal>
+  <goal name="VC sub.27" expl="assertion" proved="true">
+  <proof prover="5" memlimit="2000"><result status="valid" time="0.06" steps="39"/></proof>
+  </goal>
+  <goal name="VC sub.28" expl="loop invariant init" proved="true">
+  <proof prover="5" memlimit="2000"><result status="valid" time="0.06" steps="40"/></proof>
+  </goal>
+  <goal name="VC sub.29" expl="loop invariant init" proved="true">
+  <proof prover="5" memlimit="2000"><result status="valid" time="0.05" steps="40"/></proof>
+  </goal>
+  <goal name="VC sub.30" expl="loop invariant init" proved="true">
+  <proof prover="5" memlimit="2000"><result status="valid" time="0.04" steps="40"/></proof>
+  </goal>
+  <goal name="VC sub.31" expl="loop invariant init" proved="true">
+  <proof prover="3"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC sub.32" expl="assertion" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC sub.32.0" expl="VC for sub" proved="true">
+   <proof prover="0" timelimit="20" memlimit="3000"><result status="valid" time="0.07"/></proof>
+   </goal>
+   <goal name="VC sub.32.1" expl="VC for sub" proved="true">
+   <proof prover="5" memlimit="2000"><result status="valid" time="0.11" steps="49"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC sub.33" expl="precondition" proved="true">
+  <proof prover="5" timelimit="1"><result status="valid" time="0.02" steps="64"/></proof>
+  </goal>
+  <goal name="VC sub.34" expl="precondition" proved="true">
+  <proof prover="5" timelimit="1"><result status="valid" time="0.04" steps="65"/></proof>
+  </goal>
+  <goal name="VC sub.35" expl="precondition" proved="true">
+  <proof prover="5" timelimit="1"><result status="valid" time="0.06" steps="57"/></proof>
+  </goal>
+  <goal name="VC sub.36" expl="precondition" proved="true">
+  <proof prover="4"><result status="valid" time="0.04"/></proof>
+  </goal>
+  <goal name="VC sub.37" expl="assertion" proved="true">
+  <proof prover="0"><result status="valid" time="0.59"/></proof>
+  </goal>
+  <goal name="VC sub.38" expl="assertion" proved="true">
+  <transf name="introduce_premises" proved="true" >
+   <goal name="VC sub.38.0" expl="assertion" proved="true">
+   <transf name="use_th" proved="true" arg1="lineardecision.LinearDecisionIntMP">
+    <goal name="VC sub.38.0.0" expl="assertion" proved="true">
+    <transf name="reflection_f" proved="true" arg1="mp_decision">
+     <goal name="VC sub.38.0.0.0" expl="assertion" proved="true">
+     <proof prover="0"><result status="valid" time="0.24"/></proof>
+     </goal>
+     <goal name="VC sub.38.0.0.1" proved="true">
+     <proof prover="3"><result status="valid" time="0.28"/></proof>
+     </goal>
+     <goal name="VC sub.38.0.0.2" proved="true">
+     <proof prover="5" timelimit="1"><result status="valid" time="0.26" steps="190"/></proof>
+     </goal>
+    </transf>
+    </goal>
+   </transf>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC sub.39" expl="integer overflow" proved="true">
+  <proof prover="5" memlimit="2000"><result status="valid" time="0.03" steps="77"/></proof>
+  </goal>
+  <goal name="VC sub.40" expl="integer overflow" proved="true">
+  <proof prover="5" memlimit="2000"><result status="valid" time="0.03" steps="79"/></proof>
+  </goal>
+  <goal name="VC sub.41" expl="loop variant decrease" proved="true">
+  <proof prover="3"><result status="valid" time="0.04"/></proof>
+  </goal>
+  <goal name="VC sub.42" expl="loop invariant preservation" proved="true">
+  <proof prover="5"><result status="valid" time="0.07" steps="64"/></proof>
+  </goal>
+  <goal name="VC sub.43" expl="loop invariant preservation" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC sub.43.0" expl="loop invariant preservation" proved="true">
+   <proof prover="5" timelimit="1"><result status="valid" time="0.05" steps="66"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC sub.44" expl="loop invariant preservation" proved="true">
+  <proof prover="0"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC sub.45" expl="loop invariant preservation" proved="true">
+  <proof prover="5" timelimit="1"><result status="valid" time="0.07" steps="107"/></proof>
+  </goal>
+  <goal name="VC sub.46" expl="postcondition" proved="true">
+  <proof prover="5" timelimit="1"><result status="valid" time="0.02" steps="49"/></proof>
+  </goal>
+  <goal name="VC sub.47" expl="postcondition" proved="true">
+  <proof prover="3"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC sub.48" expl="postcondition" proved="true">
+  <proof prover="5"><result status="valid" time="0.04" steps="50"/></proof>
+  </goal>
+  <goal name="VC sub.49" expl="precondition" proved="true">
+  <proof prover="4"><result status="valid" time="0.01"/></proof>
+  </goal>
+  <goal name="VC sub.50" expl="precondition" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC sub.50.0" expl="VC for sub" proved="true">
+   <proof prover="2"><result status="valid" time="0.07"/></proof>
+   </goal>
+   <goal name="VC sub.50.1" expl="VC for sub" proved="true">
+   <proof prover="5" timelimit="1"><result status="valid" time="0.08" steps="40"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC sub.51" expl="precondition" proved="true">
+  <proof prover="5" memlimit="2000"><result status="valid" time="0.05" steps="58"/></proof>
+  </goal>
+  <goal name="VC sub.52" expl="assertion" proved="true">
+  <proof prover="5" timelimit="1"><result status="valid" time="0.24" steps="160"/></proof>
+  </goal>
+  <goal name="VC sub.53" expl="precondition" proved="true">
+  <proof prover="5" memlimit="2000"><result status="valid" time="0.05" steps="52"/></proof>
+  </goal>
+  <goal name="VC sub.54" expl="precondition" proved="true">
+  <proof prover="5" memlimit="2000"><result status="valid" time="0.07" steps="53"/></proof>
+  </goal>
+  <goal name="VC sub.55" expl="assertion" proved="true">
+  <transf name="introduce_premises" proved="true" >
+   <goal name="VC sub.55.0" expl="assertion" proved="true">
+   <transf name="use_th" proved="true" arg1="lineardecision.LinearDecisionIntMP">
+    <goal name="VC sub.55.0.0" expl="assertion" proved="true">
+    <transf name="reflection_f" proved="true" arg1="mp_decision">
+     <goal name="VC sub.55.0.0.0" expl="assertion" proved="true">
+     <proof prover="0"><result status="valid" time="4.01"/></proof>
+     </goal>
+     <goal name="VC sub.55.0.0.1" proved="true">
+     <proof prover="3"><result status="valid" time="0.25"/></proof>
+     </goal>
+     <goal name="VC sub.55.0.0.2" proved="true">
+     <proof prover="2"><result status="valid" time="0.20"/></proof>
+     </goal>
+    </transf>
+    </goal>
+   </transf>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC sub.56" expl="integer overflow" proved="true">
+  <proof prover="5" memlimit="2000"><result status="valid" time="0.64" steps="72"/></proof>
+  </goal>
+  <goal name="VC sub.57" expl="loop variant decrease" proved="true">
+  <proof prover="4"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC sub.58" expl="loop invariant preservation" proved="true">
+  <proof prover="3"><result status="valid" time="0.04"/></proof>
+  </goal>
+  <goal name="VC sub.59" expl="loop invariant preservation" proved="true">
+  <proof prover="0"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC sub.60" expl="loop invariant preservation" proved="true">
+  <proof prover="2"><result status="valid" time="0.13"/></proof>
+  </goal>
+  <goal name="VC sub.61" expl="loop invariant preservation" proved="true">
+  <proof prover="3"><result status="valid" time="0.04"/></proof>
+  </goal>
+  <goal name="VC sub.62" expl="assertion" proved="true">
+  <proof prover="5" memlimit="2000"><result status="valid" time="0.06" steps="113"/></proof>
+  </goal>
+  <goal name="VC sub.63" expl="loop invariant init" proved="true">
+  <proof prover="5" memlimit="2000"><result status="valid" time="0.05" steps="37"/></proof>
+  </goal>
+  <goal name="VC sub.64" expl="loop invariant init" proved="true">
+  <proof prover="5" memlimit="2000"><result status="valid" time="0.05" steps="37"/></proof>
+  </goal>
+  <goal name="VC sub.65" expl="loop invariant init" proved="true">
+  <proof prover="5" memlimit="2000"><result status="valid" time="0.06" steps="37"/></proof>
+  </goal>
+  <goal name="VC sub.66" expl="loop invariant init" proved="true">
+  <proof prover="3"><result status="valid" time="0.04"/></proof>
+  </goal>
+  <goal name="VC sub.67" expl="assertion" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC sub.67.0" expl="VC for sub" proved="true">
+   <proof prover="5" memlimit="2000"><result status="valid" time="0.02" steps="46"/></proof>
+   </goal>
+   <goal name="VC sub.67.1" expl="VC for sub" proved="true">
+   <proof prover="5" memlimit="2000"><result status="valid" time="0.10" steps="47"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC sub.68" expl="precondition" proved="true">
+  <proof prover="5" memlimit="2000"><result status="valid" time="0.07" steps="62"/></proof>
+  </goal>
+  <goal name="VC sub.69" expl="precondition" proved="true">
+  <proof prover="5" memlimit="2000"><result status="valid" time="0.06" steps="63"/></proof>
+  </goal>
+  <goal name="VC sub.70" expl="precondition" proved="true">
+  <proof prover="5" memlimit="2000"><result status="valid" time="0.06" steps="55"/></proof>
+  </goal>
+  <goal name="VC sub.71" expl="precondition" proved="true">
+  <proof prover="5" memlimit="2000"><result status="valid" time="0.05" steps="56"/></proof>
+  </goal>
+  <goal name="VC sub.72" expl="assertion" proved="true">
+  <proof prover="0"><result status="valid" time="0.54"/></proof>
+  </goal>
+  <goal name="VC sub.73" expl="assertion" proved="true">
+  <transf name="introduce_premises" proved="true" >
+   <goal name="VC sub.73.0" expl="assertion" proved="true">
+   <transf name="use_th" proved="true" arg1="lineardecision.LinearDecisionIntMP">
+    <goal name="VC sub.73.0.0" expl="assertion" proved="true">
+    <transf name="reflection_f" proved="true" arg1="mp_decision">
+     <goal name="VC sub.73.0.0.0" expl="assertion" proved="true">
+     <proof prover="0"><result status="valid" time="0.24"/></proof>
+     </goal>
+     <goal name="VC sub.73.0.0.1" proved="true">
+     <proof prover="3"><result status="valid" time="0.19"/></proof>
+     </goal>
+     <goal name="VC sub.73.0.0.2" proved="true">
+     <proof prover="5" timelimit="1"><result status="valid" time="0.36" steps="188"/></proof>
+     </goal>
+    </transf>
+    </goal>
+   </transf>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC sub.74" expl="integer overflow" proved="true">
+  <proof prover="5"><result status="valid" time="0.02" steps="75"/></proof>
+  </goal>
+  <goal name="VC sub.75" expl="integer overflow" proved="true">
+  <proof prover="5" memlimit="2000"><result status="valid" time="0.05" steps="77"/></proof>
+  </goal>
+  <goal name="VC sub.76" expl="loop variant decrease" proved="true">
+  <proof prover="4"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC sub.77" expl="loop invariant preservation" proved="true">
+  <proof prover="4"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC sub.78" expl="loop invariant preservation" proved="true">
+  <proof prover="4"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC sub.79" expl="loop invariant preservation" proved="true">
+  <proof prover="0"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC sub.80" expl="loop invariant preservation" proved="true">
+  <proof prover="5" timelimit="1"><result status="valid" time="0.10" steps="105"/></proof>
+  </goal>
+  <goal name="VC sub.81" expl="postcondition" proved="true">
+  <proof prover="5" timelimit="1"><result status="valid" time="0.04" steps="46"/></proof>
+  </goal>
+  <goal name="VC sub.82" expl="postcondition" proved="true">
+  <proof prover="3"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC sub.83" expl="postcondition" proved="true">
+  <proof prover="4"><result status="valid" time="0.02"/></proof>
+  </goal>
+ </transf>
+ </goal>
+ <goal name="VC sub_in_place" expl="VC for sub_in_place" proved="true">
+ <transf name="split_goal_right" proved="true" >
+  <goal name="VC sub_in_place.0" expl="integer overflow" proved="true">
+  <proof prover="5" memlimit="2000"><result status="valid" time="0.02" steps="22"/></proof>
+  </goal>
+  <goal name="VC sub_in_place.1" expl="integer overflow" proved="true">
+  <proof prover="5" memlimit="2000"><result status="valid" time="0.05" steps="23"/></proof>
+  </goal>
+  <goal name="VC sub_in_place.2" expl="integer overflow" proved="true">
+  <proof prover="5" memlimit="2000"><result status="valid" time="0.04" steps="24"/></proof>
+  </goal>
+  <goal name="VC sub_in_place.3" expl="loop invariant init" proved="true">
+  <proof prover="5" memlimit="2000"><result status="valid" time="0.04" steps="13"/></proof>
+  </goal>
+  <goal name="VC sub_in_place.4" expl="loop invariant init" proved="true">
+  <proof prover="5" memlimit="2000"><result status="valid" time="0.03" steps="74"/></proof>
+  </goal>
+  <goal name="VC sub_in_place.5" expl="loop invariant init" proved="true">
+  <proof prover="5" memlimit="2000"><result status="valid" time="0.04" steps="16"/></proof>
+  </goal>
+  <goal name="VC sub_in_place.6" expl="loop invariant init" proved="true">
+  <proof prover="0"><result status="valid" time="0.01"/></proof>
+  </goal>
+  <goal name="VC sub_in_place.7" expl="loop invariant init" proved="true">
+  <proof prover="5" memlimit="2000"><result status="valid" time="0.04" steps="6"/></proof>
+  </goal>
+  <goal name="VC sub_in_place.8" expl="precondition" proved="true">
+  <proof prover="5" memlimit="2000"><result status="valid" time="0.03" steps="35"/></proof>
+  </goal>
+  <goal name="VC sub_in_place.9" expl="assertion" proved="true">
+  <proof prover="5" memlimit="2000"><result status="valid" time="0.04" steps="51"/></proof>
+  </goal>
+  <goal name="VC sub_in_place.10" expl="precondition" proved="true">
+  <proof prover="5" memlimit="2000"><result status="valid" time="0.08" steps="37"/></proof>
+  </goal>
+  <goal name="VC sub_in_place.11" expl="precondition" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC sub_in_place.11.0" expl="VC for sub_in_place" proved="true">
+   <proof prover="2" timelimit="5" memlimit="2000"><result status="valid" time="0.06"/></proof>
+   </goal>
+   <goal name="VC sub_in_place.11.1" expl="VC for sub_in_place" proved="true">
+   <proof prover="5" timelimit="1"><result status="valid" time="0.02" steps="27"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC sub_in_place.12" expl="precondition" proved="true">
+  <proof prover="2"><result status="valid" time="0.07"/></proof>
+  </goal>
+  <goal name="VC sub_in_place.13" expl="assertion" proved="true">
+  <proof prover="5" timelimit="1"><result status="valid" time="0.02" steps="63"/></proof>
+  </goal>
+  <goal name="VC sub_in_place.14" expl="assertion" proved="true">
+  <proof prover="0"><result status="valid" time="0.48"/></proof>
+  </goal>
+  <goal name="VC sub_in_place.15" expl="precondition" proved="true">
+  <proof prover="5" memlimit="2000"><result status="valid" time="0.10" steps="39"/></proof>
+  </goal>
+  <goal name="VC sub_in_place.16" expl="precondition" proved="true">
+  <proof prover="2" timelimit="5" memlimit="2000"><result status="valid" time="0.12"/></proof>
+  </goal>
+  <goal name="VC sub_in_place.17" expl="precondition" proved="true">
+  <proof prover="2" timelimit="5" memlimit="2000"><result status="valid" time="0.06"/></proof>
+  </goal>
+  <goal name="VC sub_in_place.18" expl="assertion" proved="true">
+  <transf name="introduce_premises" proved="true" >
+   <goal name="VC sub_in_place.18.0" expl="assertion" proved="true">
+   <transf name="use_th" proved="true" arg1="lineardecision.LinearDecisionIntMP">
+    <goal name="VC sub_in_place.18.0.0" expl="assertion" proved="true">
+    <transf name="reflection_f" proved="true" arg1="mp_decision">
+     <goal name="VC sub_in_place.18.0.0.0" expl="assertion" proved="true">
+     <proof prover="0"><result status="valid" time="3.86"/></proof>
+     </goal>
+     <goal name="VC sub_in_place.18.0.0.1" proved="true">
+     <proof prover="3"><result status="valid" time="0.24"/></proof>
+     </goal>
+     <goal name="VC sub_in_place.18.0.0.2" proved="true">
+     <proof prover="3"><result status="valid" time="0.19"/></proof>
+     </goal>
+    </transf>
+    </goal>
+   </transf>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC sub_in_place.19" expl="integer overflow" proved="true">
+  <proof prover="3"><result status="valid" time="0.04"/></proof>
+  </goal>
+  <goal name="VC sub_in_place.20" expl="loop variant decrease" proved="true">
+  <proof prover="3"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC sub_in_place.21" expl="loop invariant preservation" proved="true">
+  <proof prover="3"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC sub_in_place.22" expl="loop invariant preservation" proved="true">
+  <proof prover="0"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC sub_in_place.23" expl="loop invariant preservation" proved="true">
+  <proof prover="3"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC sub_in_place.24" expl="loop invariant preservation" proved="true">
+  <proof prover="0"><result status="valid" time="0.47"/></proof>
+  </goal>
+  <goal name="VC sub_in_place.25" expl="loop invariant preservation" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC sub_in_place.25.0" expl="loop invariant preservation" proved="true">
+   <proof prover="2"><result status="valid" time="0.08"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC sub_in_place.26" expl="loop invariant init" proved="true">
+  <proof prover="5" memlimit="2000"><result status="valid" time="0.01" steps="24"/></proof>
+  </goal>
+  <goal name="VC sub_in_place.27" expl="loop invariant init" proved="true">
+  <proof prover="5" timelimit="1"><result status="valid" time="0.01" steps="26"/></proof>
+  </goal>
+  <goal name="VC sub_in_place.28" expl="loop invariant init" proved="true">
+  <proof prover="3"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC sub_in_place.29" expl="loop invariant init" proved="true">
+  <proof prover="5" memlimit="2000"><result status="valid" time="0.02" steps="54"/></proof>
+  </goal>
+  <goal name="VC sub_in_place.30" expl="loop invariant init" proved="true">
+  <proof prover="5" memlimit="2000"><result status="valid" time="0.04" steps="52"/></proof>
+  </goal>
+  <goal name="VC sub_in_place.31" expl="assertion" proved="true">
+  <proof prover="5" memlimit="2000"><result status="valid" time="0.03" steps="37"/></proof>
+  </goal>
+  <goal name="VC sub_in_place.32" expl="assertion" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC sub_in_place.32.0" expl="assertion" proved="true">
+   <proof prover="3"><result status="valid" time="0.04"/></proof>
+   </goal>
+   <goal name="VC sub_in_place.32.1" expl="assertion" proved="true">
+   <proof prover="3"><result status="valid" time="0.03"/></proof>
+   </goal>
+   <goal name="VC sub_in_place.32.2" expl="VC for sub_in_place" proved="true">
+   <proof prover="5" timelimit="1"><result status="valid" time="0.02" steps="67"/></proof>
+   </goal>
+   <goal name="VC sub_in_place.32.3" expl="VC for sub_in_place" proved="true">
+   <proof prover="3"><result status="valid" time="0.03"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC sub_in_place.33" expl="precondition" proved="true">
+  <proof prover="2" timelimit="5" memlimit="2000"><result status="valid" time="0.07"/></proof>
+  </goal>
+  <goal name="VC sub_in_place.34" expl="precondition" proved="true">
+  <proof prover="2" timelimit="5" memlimit="2000"><result status="valid" time="0.06"/></proof>
+  </goal>
+  <goal name="VC sub_in_place.35" expl="precondition" proved="true">
+  <proof prover="5" memlimit="2000"><result status="valid" time="0.03" steps="40"/></proof>
+  </goal>
+  <goal name="VC sub_in_place.36" expl="assertion" proved="true">
+  <proof prover="5" memlimit="2000"><result status="valid" time="0.04" steps="70"/></proof>
+  </goal>
+  <goal name="VC sub_in_place.37" expl="postcondition" proved="true">
+  <proof prover="5" memlimit="2000"><result status="valid" time="0.03" steps="42"/></proof>
+  </goal>
+  <goal name="VC sub_in_place.38" expl="postcondition" proved="true">
+  <proof prover="5" memlimit="2000"><result status="valid" time="0.06" steps="43"/></proof>
+  </goal>
+  <goal name="VC sub_in_place.39" expl="postcondition" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC sub_in_place.39.0" expl="postcondition" proved="true">
+   <proof prover="5" timelimit="1"><result status="valid" time="0.04" steps="68"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC sub_in_place.40" expl="precondition" proved="true">
+  <proof prover="5" memlimit="2000"><result status="valid" time="0.05" steps="48"/></proof>
+  </goal>
+  <goal name="VC sub_in_place.41" expl="assertion" proved="true">
+  <proof prover="5" memlimit="2000"><result status="valid" time="0.03" steps="64"/></proof>
+  </goal>
+  <goal name="VC sub_in_place.42" expl="precondition" proved="true">
+  <proof prover="5" memlimit="2000"><result status="valid" time="0.04" steps="39"/></proof>
+  </goal>
+  <goal name="VC sub_in_place.43" expl="precondition" proved="true">
+  <proof prover="5" memlimit="2000"><result status="valid" time="0.04" steps="42"/></proof>
+  </goal>
+  <goal name="VC sub_in_place.44" expl="precondition" proved="true">
+  <proof prover="5" memlimit="2000"><result status="valid" time="0.04" steps="43"/></proof>
+  </goal>
+  <goal name="VC sub_in_place.45" expl="precondition" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC sub_in_place.45.0" expl="VC for sub_in_place" proved="true">
+   <proof prover="5" timelimit="1"><result status="valid" time="0.03" steps="44"/></proof>
+   </goal>
+   <goal name="VC sub_in_place.45.1" expl="VC for sub_in_place" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC sub_in_place.46" expl="assertion" proved="true">
+  <proof prover="5" memlimit="2000"><result status="valid" time="0.27" steps="153"/></proof>
+  </goal>
+  <goal name="VC sub_in_place.47" expl="assertion" proved="true">
+  <proof prover="5" timelimit="1"><result status="valid" time="0.03" steps="82"/></proof>
+  </goal>
+  <goal name="VC sub_in_place.48" expl="precondition" proved="true">
+  <proof prover="3"><result status="valid" time="0.01"/></proof>
+  </goal>
+  <goal name="VC sub_in_place.49" expl="precondition" proved="true">
+  <proof prover="5" memlimit="2000"><result status="valid" time="0.04" steps="53"/></proof>
+  </goal>
+  <goal name="VC sub_in_place.50" expl="assertion" proved="true">
+  <transf name="introduce_premises" proved="true" >
+   <goal name="VC sub_in_place.50.0" expl="assertion" proved="true">
+   <transf name="use_th" proved="true" arg1="lineardecision.LinearDecisionIntMP">
+    <goal name="VC sub_in_place.50.0.0" expl="assertion" proved="true">
+    <transf name="reflection_f" proved="true" arg1="mp_decision">
+     <goal name="VC sub_in_place.50.0.0.0" expl="assertion" proved="true">
+     <proof prover="0"><result status="valid" time="0.21"/></proof>
+     </goal>
+     <goal name="VC sub_in_place.50.0.0.1" proved="true">
+     <proof prover="3"><result status="valid" time="0.23"/></proof>
+     </goal>
+     <goal name="VC sub_in_place.50.0.0.2" proved="true">
+     <proof prover="2"><result status="valid" time="0.19"/></proof>
+     </goal>
+    </transf>
+    </goal>
+   </transf>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC sub_in_place.51" expl="integer overflow" proved="true">
+  <proof prover="5" memlimit="2000"><result status="valid" time="0.17" steps="68"/></proof>
+  </goal>
+  <goal name="VC sub_in_place.52" expl="loop variant decrease" proved="true">
+  <proof prover="3"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC sub_in_place.53" expl="loop invariant preservation" proved="true">
+  <proof prover="3"><result status="valid" time="0.04"/></proof>
+  </goal>
+  <goal name="VC sub_in_place.54" expl="loop invariant preservation" proved="true">
+  <proof prover="0"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC sub_in_place.55" expl="loop invariant preservation" proved="true">
+  <proof prover="3"><result status="valid" time="0.04"/></proof>
+  </goal>
+  <goal name="VC sub_in_place.56" expl="loop invariant preservation" proved="true">
+  <proof prover="0"><result status="valid" time="0.51"/></proof>
+  </goal>
+  <goal name="VC sub_in_place.57" expl="loop invariant preservation" proved="true">
+  <proof prover="2"><result status="valid" time="0.11"/></proof>
+  </goal>
+  <goal name="VC sub_in_place.58" expl="assertion" proved="true">
+  <transf name="split_goal_right" proved="true" >
+   <goal name="VC sub_in_place.58.0" expl="assertion" proved="true">
+   <proof prover="5" memlimit="2000"><result status="valid" time="0.04" steps="103"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC sub_in_place.59" expl="postcondition" proved="true">
+  <proof prover="5" memlimit="2000"><result status="valid" time="0.07" steps="36"/></proof>
+  </goal>
+  <goal name="VC sub_in_place.60" expl="postcondition" proved="true">
+  <proof prover="5" memlimit="2000"><result status="valid" time="0.02" steps="37"/></proof>
+  </goal>
+  <goal name="VC sub_in_place.61" expl="postcondition" proved="true">
+  <proof prover="5" memlimit="2000"><result status="valid" time="0.05" steps="62"/></proof>
+  </goal>
+ </transf>
+ </goal>
+ <goal name="VC decr" expl="VC for decr" proved="true">
+ <transf name="split_vc" proved="true" >
+  <goal name="VC decr.0" expl="loop invariant init" proved="true">
+  <proof prover="3"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC decr.1" expl="loop invariant init" proved="true">
+  <proof prover="3"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC decr.2" expl="loop invariant init" proved="true">
+  <proof prover="3"><result status="valid" time="0.01"/></proof>
+  </goal>
+  <goal name="VC decr.3" expl="loop invariant init" proved="true">
+  <proof prover="5" timelimit="1"><result status="valid" time="0.01" steps="26"/></proof>
+  </goal>
+  <goal name="VC decr.4" expl="loop invariant init" proved="true">
+  <proof prover="2" timelimit="5" memlimit="2000"><result status="valid" time="0.06"/></proof>
+  </goal>
+  <goal name="VC decr.5" expl="loop invariant init" proved="true">
+  <transf name="split_vc" proved="true" >
+  </transf>
+  </goal>
+  <goal name="VC decr.6" expl="precondition" proved="true">
+  <proof prover="5" timelimit="1"><result status="valid" time="0.04" steps="98"/></proof>
+  </goal>
+  <goal name="VC decr.7" expl="assertion" proved="true">
+  <proof prover="5" timelimit="1"><result status="valid" time="0.02" steps="38"/></proof>
+  </goal>
+  <goal name="VC decr.8" expl="precondition" proved="true">
+  <proof prover="3"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC decr.9" expl="assertion" proved="true">
+  <proof prover="3"><result status="valid" time="0.04"/></proof>
+  </goal>
+  <goal name="VC decr.10" expl="precondition" proved="true">
+  <proof prover="3"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC decr.11" expl="precondition" proved="true">
+  <proof prover="3"><result status="valid" time="0.01"/></proof>
+  </goal>
+  <goal name="VC decr.12" expl="precondition" proved="true">
+  <proof prover="5" timelimit="1"><result status="valid" time="0.03" steps="129"/></proof>
+  </goal>
+  <goal name="VC decr.13" expl="assertion" proved="true">
+  <proof prover="5" memlimit="2000"><result status="valid" time="0.02" steps="51"/></proof>
+  </goal>
+  <goal name="VC decr.14" expl="assertion" proved="true">
+  <transf name="split_all_full" proved="true" >
+   <goal name="VC decr.14.0" expl="assertion" proved="true">
+   <proof prover="5" timelimit="10" memlimit="4000"><result status="valid" time="3.00" steps="241"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC decr.15" expl="precondition" proved="true">
+  <proof prover="3"><result status="valid" time="0.01"/></proof>
+  </goal>
+  <goal name="VC decr.16" expl="precondition" proved="true">
+  <proof prover="3"><result status="valid" time="0.01"/></proof>
+  </goal>
+  <goal name="VC decr.17" expl="assertion" proved="true">
+  <transf name="use_th" proved="true" arg1="lineardecision.LinearDecisionIntMP">
+   <goal name="VC decr.17.0" expl="assertion" proved="true">
+   <transf name="reflection_f" proved="true" arg1="mp_decision">
+    <goal name="VC decr.17.0.0" expl="assertion" proved="true">
+    <proof prover="0"><result status="valid" time="0.21"/></proof>
+    </goal>
+    <goal name="VC decr.17.0.1" proved="true">
+    <proof prover="3"><result status="valid" time="0.28"/></proof>
+    </goal>
+    <goal name="VC decr.17.0.2" proved="true">
+    <proof prover="3"><result status="valid" time="0.23"/></proof>
+    </goal>
+   </transf>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC decr.18" expl="integer overflow" proved="true">
+  <proof prover="3"><result status="valid" time="0.12"/></proof>
+  </goal>
+  <goal name="VC decr.19" expl="assertion" proved="true">
+  <transf name="split_vc" proved="true" >
+   <goal name="VC decr.19.0" expl="VC for decr" proved="true">
+   <proof prover="0"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC decr.19.1" expl="VC for decr" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC decr.19.2" expl="VC for decr" proved="true">
+   <proof prover="2"><result status="valid" time="0.12"/></proof>
+   </goal>
+   <goal name="VC decr.19.3" expl="VC for decr" proved="true">
+   <proof prover="3"><result status="valid" time="0.00"/></proof>
+   </goal>
+   <goal name="VC decr.19.4" expl="VC for decr" proved="true">
+   <proof prover="3"><result status="valid" time="0.03"/></proof>
+   </goal>
+   <goal name="VC decr.19.5" expl="VC for decr" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC decr.20" expl="loop variant decrease" proved="true">
+  <proof prover="3"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC decr.21" expl="loop invariant preservation" proved="true">
+  <proof prover="2"><result status="valid" time="0.08"/></proof>
+  </goal>
+  <goal name="VC decr.22" expl="loop invariant preservation" proved="true">
+  <proof prover="3"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC decr.23" expl="loop invariant preservation" proved="true">
+  <proof prover="3"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC decr.24" expl="loop invariant preservation" proved="true">
+  <proof prover="0"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC decr.25" expl="loop invariant preservation" proved="true">
+  <proof prover="0"><result status="valid" time="0.52"/></proof>
+  </goal>
+  <goal name="VC decr.26" expl="loop invariant preservation" proved="true">
+  <proof prover="2"><result status="valid" time="0.06"/></proof>
+  </goal>
+  <goal name="VC decr.27" expl="precondition" proved="true">
+  <proof prover="3"><result status="valid" time="0.01"/></proof>
+  </goal>
+  <goal name="VC decr.28" expl="precondition" proved="true">
+  <proof prover="3"><result status="valid" time="0.01"/></proof>
+  </goal>
+  <goal name="VC decr.29" expl="assertion" proved="true">
+  <transf name="split_vc" proved="true" >
+   <goal name="VC decr.29.0" expl="VC for decr" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC decr.29.1" expl="VC for decr" proved="true">
+   <proof prover="3"><result status="valid" time="0.01"/></proof>
+   </goal>
+   <goal name="VC decr.29.2" expl="VC for decr" proved="true">
+   <proof prover="5" timelimit="1"><result status="valid" time="0.01" steps="40"/></proof>
+   </goal>
+   <goal name="VC decr.29.3" expl="VC for decr" proved="true">
+   <proof prover="3"><result status="valid" time="0.00"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC decr.30" expl="precondition" proved="true">
+  <proof prover="3"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC decr.31" expl="postcondition" proved="true">
+  <proof prover="5" timelimit="1"><result status="valid" time="0.02" steps="22"/></proof>
+  </goal>
+  <goal name="VC decr.32" expl="postcondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.03"/></proof>
+  </goal>
+ </transf>
+ </goal>
+ <goal name="VC decr_1" expl="VC for decr_1" proved="true">
+ <transf name="split_vc" proved="true" >
+  <goal name="VC decr_1.0" expl="loop invariant init" proved="true">
+  <proof prover="3"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC decr_1.1" expl="loop invariant init" proved="true">
+  <proof prover="3"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC decr_1.2" expl="loop invariant init" proved="true">
+  <proof prover="3"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC decr_1.3" expl="loop invariant init" proved="true">
+  <proof prover="3"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC decr_1.4" expl="loop invariant init" proved="true">
+  <proof prover="3"><result status="valid" time="0.04"/></proof>
+  </goal>
+  <goal name="VC decr_1.5" expl="loop invariant init" proved="true">
+  <proof prover="5" timelimit="1"><result status="valid" time="0.03" steps="20"/></proof>
+  </goal>
+  <goal name="VC decr_1.6" expl="loop invariant init" proved="true">
+  <proof prover="5" timelimit="1"><result status="valid" time="0.06" steps="18"/></proof>
+  </goal>
+  <goal name="VC decr_1.7" expl="precondition" proved="true">
+  <proof prover="5" timelimit="1"><result status="valid" time="0.04" steps="90"/></proof>
+  </goal>
+  <goal name="VC decr_1.8" expl="assertion" proved="true">
+  <proof prover="5" timelimit="1"><result status="valid" time="0.01" steps="40"/></proof>
+  </goal>
+  <goal name="VC decr_1.9" expl="assertion" proved="true">
+  <proof prover="5" timelimit="1"><result status="valid" time="0.02" steps="29"/></proof>
+  </goal>
+  <goal name="VC decr_1.10" expl="precondition" proved="true">
+  <proof prover="3"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC decr_1.11" expl="precondition" proved="true">
+  <proof prover="3"><result status="valid" time="0.01"/></proof>
+  </goal>
+  <goal name="VC decr_1.12" expl="precondition" proved="true">
+  <proof prover="5" timelimit="1"><result status="valid" time="0.02" steps="130"/></proof>
+  </goal>
+  <goal name="VC decr_1.13" expl="assertion" proved="true">
+  <proof prover="5" timelimit="1"><result status="valid" time="0.02" steps="54"/></proof>
+  </goal>
+  <goal name="VC decr_1.14" expl="assertion" proved="true">
+  <proof prover="5" timelimit="1"><result status="valid" time="0.09" steps="114"/></proof>
+  </goal>
+  <goal name="VC decr_1.15" expl="precondition" proved="true">
+  <proof prover="3"><result status="valid" time="0.01"/></proof>
+  </goal>
+  <goal name="VC decr_1.16" expl="precondition" proved="true">
+  <proof prover="3"><result status="valid" time="0.01"/></proof>
+  </goal>
+  <goal name="VC decr_1.17" expl="assertion" proved="true">
+  <proof prover="5" timelimit="1"><result status="valid" time="0.03" steps="54"/></proof>
+  </goal>
+  <goal name="VC decr_1.18" expl="integer overflow" proved="true">
+  <proof prover="3"><result status="valid" time="0.16"/></proof>
+  </goal>
+  <goal name="VC decr_1.19" expl="assertion" proved="true">
+  <transf name="split_vc" proved="true" >
+   <goal name="VC decr_1.19.0" expl="VC for decr_1" proved="true">
+   <proof prover="5" timelimit="1"><result status="valid" time="0.04" steps="46"/></proof>
+   </goal>
+   <goal name="VC decr_1.19.1" expl="VC for decr_1" proved="true">
+   <proof prover="3"><result status="valid" time="0.01"/></proof>
+   </goal>
+   <goal name="VC decr_1.19.2" expl="VC for decr_1" proved="true">
+   <proof prover="2"><result status="valid" time="0.12"/></proof>
+   </goal>
+   <goal name="VC decr_1.19.3" expl="VC for decr_1" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC decr_1.19.4" expl="VC for decr_1" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC decr_1.19.5" expl="VC for decr_1" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC decr_1.20" expl="loop variant decrease" proved="true">
+  <proof prover="3"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC decr_1.21" expl="loop invariant preservation" proved="true">
+  <proof prover="5" timelimit="1"><result status="valid" time="0.08" steps="122"/></proof>
+  </goal>
+  <goal name="VC decr_1.22" expl="loop invariant preservation" proved="true">
+  <proof prover="3"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC decr_1.23" expl="loop invariant preservation" proved="true">
+  <proof prover="3"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC decr_1.24" expl="loop invariant preservation" proved="true">
+  <proof prover="3"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC decr_1.25" expl="loop invariant preservation" proved="true">
+  <proof prover="5" timelimit="1"><result status="valid" time="0.03" steps="50"/></proof>
+  </goal>
+  <goal name="VC decr_1.26" expl="loop invariant preservation" proved="true">
+  <proof prover="5" timelimit="1"><result status="valid" time="0.04" steps="66"/></proof>
+  </goal>
+  <goal name="VC decr_1.27" expl="loop invariant preservation" proved="true">
+  <proof prover="5" timelimit="1"><result status="valid" time="0.02" steps="69"/></proof>
+  </goal>
+  <goal name="VC decr_1.28" expl="assertion" proved="true">
+  <proof prover="5" timelimit="1"><result status="valid" time="0.02" steps="52"/></proof>
+  </goal>
+  <goal name="VC decr_1.29" expl="precondition" proved="true">
+  <proof prover="3"><result status="valid" time="0.04"/></proof>
+  </goal>
+  <goal name="VC decr_1.30" expl="precondition" proved="true">
+  <proof prover="3"><result status="valid" time="0.01"/></proof>
+  </goal>
+  <goal name="VC decr_1.31" expl="precondition" proved="true">
+  <proof prover="5" timelimit="1"><result status="valid" time="0.04" steps="131"/></proof>
+  </goal>
+  <goal name="VC decr_1.32" expl="assertion" proved="true">
+  <proof prover="5" timelimit="1"><result status="valid" time="0.02" steps="55"/></proof>
+  </goal>
+  <goal name="VC decr_1.33" expl="assertion" proved="true">
+  <proof prover="5" timelimit="1"><result status="valid" time="0.08" steps="112"/></proof>
+  </goal>
+  <goal name="VC decr_1.34" expl="precondition" proved="true">
+  <proof prover="3"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC decr_1.35" expl="precondition" proved="true">
+  <proof prover="3"><result status="valid" time="0.01"/></proof>
+  </goal>
+  <goal name="VC decr_1.36" expl="assertion" proved="true">
+  <proof prover="5" timelimit="1"><result status="valid" time="0.04" steps="42"/></proof>
+  </goal>
+  <goal name="VC decr_1.37" expl="integer overflow" proved="true">
+  <proof prover="3"><result status="valid" time="0.20"/></proof>
+  </goal>
+  <goal name="VC decr_1.38" expl="assertion" proved="true">
+  <proof prover="5" timelimit="1"><result status="valid" time="0.03" steps="47"/></proof>
+  </goal>
+  <goal name="VC decr_1.39" expl="loop variant decrease" proved="true">
+  <proof prover="3"><result status="valid" time="0.04"/></proof>
+  </goal>
+  <goal name="VC decr_1.40" expl="loop invariant preservation" proved="true">
+  <proof prover="5" timelimit="1"><result status="valid" time="0.04" steps="122"/></proof>
+  </goal>
+  <goal name="VC decr_1.41" expl="loop invariant preservation" proved="true">
+  <proof prover="3"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC decr_1.42" expl="loop invariant preservation" proved="true">
+  <proof prover="3"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC decr_1.43" expl="loop invariant preservation" proved="true">
+  <proof prover="3"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC decr_1.44" expl="loop invariant preservation" proved="true">
+  <proof prover="5" timelimit="1"><result status="valid" time="0.03" steps="50"/></proof>
+  </goal>
+  <goal name="VC decr_1.45" expl="loop invariant preservation" proved="true">
+  <proof prover="5" timelimit="1"><result status="valid" time="0.04" steps="66"/></proof>
+  </goal>
+  <goal name="VC decr_1.46" expl="loop invariant preservation" proved="true">
+  <proof prover="5" timelimit="1"><result status="valid" time="0.02" steps="69"/></proof>
+  </goal>
+  <goal name="VC decr_1.47" expl="precondition" proved="true">
+  <proof prover="3"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC decr_1.48" expl="precondition" proved="true">
+  <proof prover="3"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC decr_1.49" expl="assertion" proved="true">
+  <transf name="split_vc" proved="true" >
+   <goal name="VC decr_1.49.0" expl="VC for decr_1" proved="true">
+   <proof prover="3"><result status="valid" time="0.03"/></proof>
+   </goal>
+   <goal name="VC decr_1.49.1" expl="VC for decr_1" proved="true">
+   <proof prover="3"><result status="valid" time="0.02"/></proof>
+   </goal>
+   <goal name="VC decr_1.49.2" expl="VC for decr_1" proved="true">
+   <proof prover="5" timelimit="1"><result status="valid" time="0.02" steps="44"/></proof>
+   </goal>
+   <goal name="VC decr_1.49.3" expl="VC for decr_1" proved="true">
+   <proof prover="3"><result status="valid" time="0.01"/></proof>
+   </goal>
+  </transf>
+  </goal>
+  <goal name="VC decr_1.50" expl="precondition" proved="true">
+  <proof prover="3"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC decr_1.51" expl="postcondition" proved="true">
+  <proof prover="5" timelimit="1"><result status="valid" time="0.03" steps="26"/></proof>
+  </goal>
+  <goal name="VC decr_1.52" expl="postcondition" proved="true">
+  <proof prover="5" timelimit="1"><result status="valid" time="0.06" steps="40"/></proof>
+  </goal>
+ </transf>
+ </goal>
+</theory>
+</file>
+</why3session>
diff --git a/examples/multiprecision/sub/why3shapes.gz b/examples/multiprecision/sub/why3shapes.gz
new file mode 100644
index 0000000000000000000000000000000000000000..aa513548f81ba913ac166ef6c298afc98a0311fd
GIT binary patch
literal 14208
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

literal 0
HcmV?d00001

diff --git a/examples/multiprecision/types.mlw b/examples/multiprecision/types.mlw
new file mode 100644
index 0000000000..ef7a27fdcf
--- /dev/null
+++ b/examples/multiprecision/types.mlw
@@ -0,0 +1,14 @@
+module Types
+
+  use import mach.c.C
+  use import mach.int.Int32
+  use import mach.int.UInt64GMP as Limb
+  
+  type limb = uint64
+  type t = ptr limb
+
+  exception Break
+  exception Return32 int32
+  exception ReturnLimb limb
+
+end
\ No newline at end of file
diff --git a/examples/multiprecision/types/why3session.xml b/examples/multiprecision/types/why3session.xml
new file mode 100644
index 0000000000..8d26478429
--- /dev/null
+++ b/examples/multiprecision/types/why3session.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE why3session PUBLIC "-//Why3//proof session v5//EN"
+"http://why3.lri.fr/why3session.dtd">
+<why3session shape_version="4">
+<file name="../types.mlw" proved="true">
+</file>
+</why3session>
diff --git a/examples/multiprecision/types/why3shapes.gz b/examples/multiprecision/types/why3shapes.gz
new file mode 100644
index 0000000000000000000000000000000000000000..0239669d57f6148035ad2dc4a6d54ae7db678e85
GIT binary patch
literal 20
Scmb2|=3oGW|IA<tL;wI7bOE&h

literal 0
HcmV?d00001

diff --git a/examples/multiprecision/util.mlw b/examples/multiprecision/util.mlw
new file mode 100644
index 0000000000..c899342e3f
--- /dev/null
+++ b/examples/multiprecision/util.mlw
@@ -0,0 +1,65 @@
+module Util
+
+  use import int.Int
+  use import mach.int.Int32
+  use import mach.int.UInt64GMP as Limb
+  use import int.Power
+  use import ref.Ref
+  use import mach.c.C
+  use import map.Map
+  use import types.Types
+  use import lemmas.Lemmas
+
+  let copy (r x:t) (sz:int32) : unit
+    requires { valid x sz }
+    requires { valid r sz }
+    ensures { map_eq_sub_shift (pelts r) (pelts x) r.offset x.offset sz }
+    ensures { forall j. (j < offset r \/ offset r + sz <= j) ->
+              (pelts r)[j] = old (pelts r)[j] }
+  =
+    let zero = Int32.of_int 0 in
+    let one = Int32.of_int 1 in
+    let i = ref zero in
+    let xp = ref (C.incr x zero) in
+    let rp = ref (C.incr r zero) in
+    while (Int32.(<) !i sz) do
+      variant { p2i sz - p2i !i }
+      invariant { 0 <= !i <= sz }
+      invariant { map_eq_sub_shift (pelts r) (pelts x) r.offset x.offset !i }
+      invariant { pelts !xp = pelts x }
+      invariant { pelts !rp = pelts r }
+      invariant { !xp.min = min x }
+      invariant { !xp.max = x.max }
+      invariant { !rp.min = r.min }
+      invariant { !rp.max = r.max }
+      invariant { !xp.offset = x.offset + !i }
+      invariant { !rp.offset = r.offset + !i }
+      invariant { forall j. (j < offset r \/ offset r + sz <= j) ->
+                  (pelts r)[j] = old (pelts r)[j] }
+      C.set !rp (C.get !xp);
+      rp.contents <- C.incr !rp one;
+      xp.contents <- C.incr !xp one;
+      i := Int32.(+) !i one;
+    done
+
+  (** [zero r sz] sets [(r,sz)] to zero. Corresponds to [mpn_zero]. *)
+  let zero (r:t) (sz:int32) : unit
+    requires { valid r sz }
+    ensures { value r sz = 0 }
+    ensures { forall j. (j < offset r \/ offset r + sz <= j)
+              -> (pelts r)[j] = old (pelts r)[j] }
+  =
+    let i = ref (Int32.of_int 0) in
+    let lzero = Limb.of_int 0 in
+    while Int32.(<) !i sz do
+      invariant { 0 <= !i <= sz }
+      variant { sz - !i }
+      invariant { value r !i = 0 }
+      invariant { forall j. (j < offset r \/ offset r + sz <= j)
+                -> (pelts r)[j] = old (pelts r)[j] }
+      set_ofs r !i lzero;
+      value_sub_tail (pelts r) r.offset (r.offset + p2i !i);
+      i := Int32.(+) !i (Int32.of_int 1);
+    done
+
+end
\ No newline at end of file
diff --git a/examples/multiprecision/util/why3session.xml b/examples/multiprecision/util/why3session.xml
new file mode 100644
index 0000000000..13d81b38ae
--- /dev/null
+++ b/examples/multiprecision/util/why3session.xml
@@ -0,0 +1,172 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE why3session PUBLIC "-//Why3//proof session v5//EN"
+"http://why3.lri.fr/why3session.dtd">
+<why3session shape_version="4">
+<prover id="0" name="Alt-Ergo" version="2.0.0" timelimit="1" steplimit="0" memlimit="1000"/>
+<prover id="1" name="Z3" version="4.5.0" timelimit="1" steplimit="0" memlimit="1000"/>
+<file name="../util.mlw" proved="true">
+<theory name="Util" proved="true">
+ <goal name="VC copy" expl="VC for copy" proved="true">
+ <transf name="split_vc" proved="true" >
+  <goal name="VC copy.0" expl="integer overflow" proved="true">
+  <proof prover="1"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC copy.1" expl="integer overflow" proved="true">
+  <proof prover="1"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC copy.2" expl="precondition" proved="true">
+  <proof prover="1"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC copy.3" expl="precondition" proved="true">
+  <proof prover="1"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC copy.4" expl="loop invariant init" proved="true">
+  <proof prover="1"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC copy.5" expl="loop invariant init" proved="true">
+  <proof prover="1"><result status="valid" time="0.04"/></proof>
+  </goal>
+  <goal name="VC copy.6" expl="loop invariant init" proved="true">
+  <proof prover="1"><result status="valid" time="0.00"/></proof>
+  </goal>
+  <goal name="VC copy.7" expl="loop invariant init" proved="true">
+  <proof prover="1"><result status="valid" time="0.01"/></proof>
+  </goal>
+  <goal name="VC copy.8" expl="loop invariant init" proved="true">
+  <proof prover="1"><result status="valid" time="0.01"/></proof>
+  </goal>
+  <goal name="VC copy.9" expl="loop invariant init" proved="true">
+  <proof prover="1"><result status="valid" time="0.01"/></proof>
+  </goal>
+  <goal name="VC copy.10" expl="loop invariant init" proved="true">
+  <proof prover="1"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC copy.11" expl="loop invariant init" proved="true">
+  <proof prover="1"><result status="valid" time="0.01"/></proof>
+  </goal>
+  <goal name="VC copy.12" expl="loop invariant init" proved="true">
+  <proof prover="1"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC copy.13" expl="loop invariant init" proved="true">
+  <proof prover="1"><result status="valid" time="0.01"/></proof>
+  </goal>
+  <goal name="VC copy.14" expl="loop invariant init" proved="true">
+  <proof prover="1"><result status="valid" time="0.01"/></proof>
+  </goal>
+  <goal name="VC copy.15" expl="precondition" proved="true">
+  <proof prover="1"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC copy.16" expl="precondition" proved="true">
+  <proof prover="1"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC copy.17" expl="precondition" proved="true">
+  <proof prover="1"><result status="valid" time="0.04"/></proof>
+  </goal>
+  <goal name="VC copy.18" expl="precondition" proved="true">
+  <proof prover="1"><result status="valid" time="0.04"/></proof>
+  </goal>
+  <goal name="VC copy.19" expl="integer overflow" proved="true">
+  <proof prover="1"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC copy.20" expl="loop variant decrease" proved="true">
+  <proof prover="1"><result status="valid" time="0.04"/></proof>
+  </goal>
+  <goal name="VC copy.21" expl="loop invariant preservation" proved="true">
+  <proof prover="1"><result status="valid" time="0.04"/></proof>
+  </goal>
+  <goal name="VC copy.22" expl="loop invariant preservation" proved="true">
+  <proof prover="0"><result status="valid" time="0.06" steps="213"/></proof>
+  <proof prover="1"><result status="timeout" time="1.00"/></proof>
+  </goal>
+  <goal name="VC copy.23" expl="loop invariant preservation" proved="true">
+  <proof prover="1"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC copy.24" expl="loop invariant preservation" proved="true">
+  <proof prover="0"><result status="valid" time="0.05" steps="101"/></proof>
+  <proof prover="1"><result status="timeout" time="1.00"/></proof>
+  </goal>
+  <goal name="VC copy.25" expl="loop invariant preservation" proved="true">
+  <proof prover="1"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC copy.26" expl="loop invariant preservation" proved="true">
+  <proof prover="1"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC copy.27" expl="loop invariant preservation" proved="true">
+  <proof prover="1"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC copy.28" expl="loop invariant preservation" proved="true">
+  <proof prover="1"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC copy.29" expl="loop invariant preservation" proved="true">
+  <proof prover="1"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC copy.30" expl="loop invariant preservation" proved="true">
+  <proof prover="1"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC copy.31" expl="loop invariant preservation" proved="true">
+  <proof prover="0"><result status="valid" time="0.02" steps="108"/></proof>
+  <proof prover="1"><result status="timeout" time="1.00"/></proof>
+  </goal>
+  <goal name="VC copy.32" expl="postcondition" proved="true">
+  <proof prover="1"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC copy.33" expl="postcondition" proved="true">
+  <proof prover="1"><result status="valid" time="0.03"/></proof>
+  </goal>
+ </transf>
+ </goal>
+ <goal name="VC zero" expl="VC for zero" proved="true">
+ <transf name="split_vc" proved="true" >
+  <goal name="VC zero.0" expl="integer overflow" proved="true">
+  <proof prover="1"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC zero.1" expl="integer overflow" proved="true">
+  <proof prover="1"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC zero.2" expl="loop invariant init" proved="true">
+  <proof prover="1"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC zero.3" expl="loop invariant init" proved="true">
+  <proof prover="1"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC zero.4" expl="loop invariant init" proved="true">
+  <proof prover="1"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC zero.5" expl="precondition" proved="true">
+  <proof prover="0"><result status="valid" time="0.01" steps="24"/></proof>
+  <proof prover="1"><result status="timeout" time="1.00"/></proof>
+  </goal>
+  <goal name="VC zero.6" expl="precondition" proved="true">
+  <proof prover="1"><result status="valid" time="0.01"/></proof>
+  </goal>
+  <goal name="VC zero.7" expl="integer overflow" proved="true">
+  <proof prover="1"><result status="valid" time="0.02"/></proof>
+  </goal>
+  <goal name="VC zero.8" expl="integer overflow" proved="true">
+  <proof prover="1"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC zero.9" expl="loop variant decrease" proved="true">
+  <proof prover="1"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC zero.10" expl="loop invariant preservation" proved="true">
+  <proof prover="1"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC zero.11" expl="loop invariant preservation" proved="true">
+  <proof prover="0"><result status="valid" time="0.10" steps="110"/></proof>
+  <proof prover="1"><result status="timeout" time="1.00"/></proof>
+  </goal>
+  <goal name="VC zero.12" expl="loop invariant preservation" proved="true">
+  <proof prover="0"><result status="valid" time="0.02" steps="51"/></proof>
+  <proof prover="1"><result status="timeout" time="1.00"/></proof>
+  </goal>
+  <goal name="VC zero.13" expl="postcondition" proved="true">
+  <proof prover="1"><result status="valid" time="0.03"/></proof>
+  </goal>
+  <goal name="VC zero.14" expl="postcondition" proved="true">
+  <proof prover="1"><result status="valid" time="0.02"/></proof>
+  </goal>
+ </transf>
+ </goal>
+</theory>
+</file>
+</why3session>
diff --git a/examples/multiprecision/util/why3shapes.gz b/examples/multiprecision/util/why3shapes.gz
new file mode 100644
index 0000000000000000000000000000000000000000..6239efc4c94f3abea733c1eb69df93c94af07f37
GIT binary patch
literal 1708
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

literal 0
HcmV?d00001

diff --git a/examples/multiprecision/wmpn.mlw b/examples/multiprecision/wmpn.mlw
new file mode 100644
index 0000000000..e0650b7504
--- /dev/null
+++ b/examples/multiprecision/wmpn.mlw
@@ -0,0 +1,13 @@
+module Wmpn
+
+  use export types.Types
+  use export lemmas.Lemmas
+  use export util.Util
+  use export compare.Compare
+  use export add.Add
+  use export sub.Sub
+  use export logical.Logical
+  use export mul.Mul
+  use export div.Div
+
+end
\ No newline at end of file
diff --git a/examples/multiprecision/wmpn/why3session.xml b/examples/multiprecision/wmpn/why3session.xml
new file mode 100644
index 0000000000..8c6d53ba4d
--- /dev/null
+++ b/examples/multiprecision/wmpn/why3session.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE why3session PUBLIC "-//Why3//proof session v5//EN"
+"http://why3.lri.fr/why3session.dtd">
+<why3session shape_version="4">
+<file name="../wmpn.mlw" proved="true">
+</file>
+</why3session>
diff --git a/examples/multiprecision/wmpn/why3shapes.gz b/examples/multiprecision/wmpn/why3shapes.gz
new file mode 100644
index 0000000000000000000000000000000000000000..0239669d57f6148035ad2dc4a6d54ae7db678e85
GIT binary patch
literal 20
Scmb2|=3oGW|IA<tL;wI7bOE&h

literal 0
HcmV?d00001

-- 
GitLab