           *******************************************************
                       Semantic Analysis of SPARK Text
   Examiner Pro Edition, Version 11.0.0, Build Date 20120914, Build 25178
             Copyright (C) 2012 Altran Praxis Limited, Bath, U.K.
           *******************************************************


                        DATE : 27-MAR-2013 10:45:47.06

                       procedure T2Q6.Sumarray_Shift




For path(s) from start to run-time check associated with statement of line 19:

procedure_sumarray_shift_1.
H1:    for_all(i___1: integer, ((i___1 >= indextype__first) and (
           i___1 <= indextype__last)) -> ((element(a, [
           i___1]) >= elementtype__first) and (element(a, [
           i___1]) <= elementtype__last))) .
H2:    shift >= elementtype__first .
H3:    shift <= elementtype__last .
        ->
C1:    shift >= sumtype__first .
C2:    shift <= sumtype__last .


For path(s) from start to assertion of line 21:

procedure_sumarray_shift_2.
H1:    for_all(i___1: integer, ((i___1 >= indextype__first) and (
           i___1 <= indextype__last)) -> ((element(a, [
           i___1]) >= elementtype__first) and (element(a, [
           i___1]) <= elementtype__last))) .
H2:    shift >= elementtype__first .
H3:    shift <= elementtype__last .
H4:    shift >= sumtype__first .
H5:    shift <= sumtype__last .
H6:    ((((indextype__first - 1 >= counttype__first) and (
           indextype__first - 1 <= counttype__last)) and ((
           indextype__first >= indextype__first) and (
           indextype__first <= indextype__last))) and (for_all(
           i___1: integer, ((i___1 >= indextype__first) and (
           i___1 <= indextype__last)) -> ((element(a, [
           i___1]) >= elementtype__first) and (element(a, [
           i___1]) <= elementtype__last))))) -> (((
           indextype__first = indextype__first - 1) -> (
           sum_between(a, indextype__first, indextype__first - 1) = element(
           a, [indextype__first - 1]))) and (((indextype__first <
           indextype__first - 1) -> (sum_between(a,
           indextype__first, indextype__first - 1) =
           sum_between(a, indextype__first, indextype__first - 1 - 1) + element(
           a, [indextype__first - 1]))) and ((indextype__first >
           indextype__first - 1) -> (sum_between(a,
           indextype__first, indextype__first - 1) >=
           elementtype__last * (indextype__first - (
           indextype__first - 1)))))) .
H7:    sum_between(a, indextype__first, indextype__first - 1) >=
           sumtype__first .
H8:    sum_between(a, indextype__first, indextype__first - 1) <=
           sumtype__last .
H9:    ((((indextype__first - 1 >= counttype__first) and (
           indextype__first - 1 <= counttype__last)) and ((
           indextype__first >= indextype__first) and (
           indextype__first <= indextype__last))) and (for_all(
           i___1: integer, ((i___1 >= indextype__first) and (
           i___1 <= indextype__last)) -> ((element(a, [
           i___1]) >= elementtype__first) and (element(a, [
           i___1]) <= elementtype__last))))) -> (((
           indextype__first = indextype__first - 1) -> (
           sum_between(a, indextype__first, indextype__first - 1) = element(
           a, [indextype__first - 1]))) and (((indextype__first <
           indextype__first - 1) -> (sum_between(a,
           indextype__first, indextype__first - 1) =
           sum_between(a, indextype__first, indextype__first - 1 - 1) + element(
           a, [indextype__first - 1]))) and ((indextype__first >
           indextype__first - 1) -> (sum_between(a,
           indextype__first, indextype__first - 1) >=
           elementtype__last * (indextype__first - (
           indextype__first - 1)))))) .
H10:   sum_between(a, indextype__first, indextype__first - 1) >=
           sumtype__first .
H11:   sum_between(a, indextype__first, indextype__first - 1) <=
           sumtype__last .
        ->
C1:    (indextype__first <> indextype__first) -> (shift =
           sum_between(a, indextype__first, indextype__first - 1)) .
C2:    (indextype__first = indextype__first) -> (shift =
           shift) .
C3:    shift <= sum_between(a, indextype__first, indextype__first - 1) .
C4:    0 <= shift .
C5:    (indextype__first <> indextype__first) -> (shift <=
           elementtype__last * (indextype__first -
           indextype__first)) .
C6:    for_all(i___1: integer, ((i___1 >= indextype__first) and (
           i___1 <= indextype__last)) -> ((element(a, [
           i___1]) >= elementtype__first) and (element(a, [
           i___1]) <= elementtype__last))) .
C7:    shift >= elementtype__first .
C8:    shift <= elementtype__last .
C9:    ((((indextype__first - 1 >= counttype__first) and (
           indextype__first - 1 <= counttype__last)) and ((
           indextype__first >= indextype__first) and (
           indextype__first <= indextype__last))) and (for_all(
           i___1: integer, ((i___1 >= indextype__first) and (
           i___1 <= indextype__last)) -> ((element(a, [
           i___1]) >= elementtype__first) and (element(a, [
           i___1]) <= elementtype__last))))) -> (((
           indextype__first = indextype__first - 1) -> (
           sum_between(a, indextype__first, indextype__first - 1) = element(
           a, [indextype__first - 1]))) and (((indextype__first <
           indextype__first - 1) -> (sum_between(a,
           indextype__first, indextype__first - 1) =
           sum_between(a, indextype__first, indextype__first - 1 - 1) + element(
           a, [indextype__first - 1]))) and ((indextype__first >
           indextype__first - 1) -> (sum_between(a,
           indextype__first, indextype__first - 1) >=
           elementtype__last * (indextype__first - (
           indextype__first - 1)))))) .
C10:   sum_between(a, indextype__first, indextype__first - 1) >=
           sumtype__first .
C11:   sum_between(a, indextype__first, indextype__first - 1) <=
           sumtype__last .
C12:   ((((indextype__first - 1 >= counttype__first) and (
           indextype__first - 1 <= counttype__last)) and ((
           indextype__first >= indextype__first) and (
           indextype__first <= indextype__last))) and (for_all(
           i___1: integer, ((i___1 >= indextype__first) and (
           i___1 <= indextype__last)) -> ((element(a, [
           i___1]) >= elementtype__first) and (element(a, [
           i___1]) <= elementtype__last))))) -> (((
           indextype__first = indextype__first - 1) -> (
           sum_between(a, indextype__first, indextype__first - 1) = element(
           a, [indextype__first - 1]))) and (((indextype__first <
           indextype__first - 1) -> (sum_between(a,
           indextype__first, indextype__first - 1) =
           sum_between(a, indextype__first, indextype__first - 1 - 1) + element(
           a, [indextype__first - 1]))) and ((indextype__first >
           indextype__first - 1) -> (sum_between(a,
           indextype__first, indextype__first - 1) >=
           elementtype__last * (indextype__first - (
           indextype__first - 1)))))) .
C13:   sum_between(a, indextype__first, indextype__first - 1) >=
           sumtype__first .
C14:   sum_between(a, indextype__first, indextype__first - 1) <=
           sumtype__last .
C15:   indextype__first >= indextype__first .
C16:   indextype__first <= indextype__last .
C17:   indextype__first >= indextype__first .
C18:   indextype__first <= indextype__last .


For path(s) from assertion of line 31 to assertion of line 21:

procedure_sumarray_shift_3.
H1:    sum = sum_between(a, indextype__first, loop__1__i) .
H2:    0 <= sum .
H3:    sum <= elementtype__last * (loop__1__i - indextype__first + 1) .
H4:    for_all(i___1: integer, ((i___1 >= indextype__first) and (
           i___1 <= indextype__last)) -> ((element(a, [
           i___1]) >= elementtype__first) and (element(a, [
           i___1]) <= elementtype__last))) .
H5:    shift >= elementtype__first .
H6:    shift <= elementtype__last .
H7:    ((((loop__1__i >= counttype__first) and (loop__1__i <=
           counttype__last)) and ((indextype__first >=
           indextype__first) and (indextype__first <=
           indextype__last))) and (for_all(i___1: integer, ((
           i___1 >= indextype__first) and (i___1 <=
           indextype__last)) -> ((element(a, [i___1]) >=
           elementtype__first) and (element(a, [i___1]) <=
           elementtype__last))))) -> (((indextype__first =
           loop__1__i) -> (sum_between(a, indextype__first,
           loop__1__i) = element(a, [loop__1__i]))) and (((
           indextype__first < loop__1__i) -> (sum_between(a,
           indextype__first, loop__1__i) = sum_between(a,
           indextype__first, loop__1__i - 1) + element(a, [
           loop__1__i]))) and ((indextype__first > loop__1__i) -> (
           sum_between(a, indextype__first, loop__1__i) >=
           elementtype__last * (indextype__first - loop__1__i))))) .
H8:    sum_between(a, indextype__first, loop__1__i) >=
           sumtype__first .
H9:    sum_between(a, indextype__first, loop__1__i) <=
           sumtype__last .
H10:   loop__1__i >= indextype__first .
H11:   loop__1__i <= indextype__last .
H12:   loop__1__i >= indextype__first .
H13:   loop__1__i <= indextype__last .
H14:   not (loop__1__i = indextype__last) .
H15:   ((((loop__1__i + 1 - 1 >= counttype__first) and (
           loop__1__i + 1 - 1 <= counttype__last)) and ((
           indextype__first >= indextype__first) and (
           indextype__first <= indextype__last))) and (for_all(
           i___1: integer, ((i___1 >= indextype__first) and (
           i___1 <= indextype__last)) -> ((element(a, [
           i___1]) >= elementtype__first) and (element(a, [
           i___1]) <= elementtype__last))))) -> (((
           indextype__first = loop__1__i + 1 - 1) -> (
           sum_between(a, indextype__first, loop__1__i + 1 - 1) = element(
           a, [loop__1__i + 1 - 1]))) and (((indextype__first <
           loop__1__i + 1 - 1) -> (sum_between(a, indextype__first,
           loop__1__i + 1 - 1) = sum_between(a, indextype__first,
           loop__1__i + 1 - 1 - 1) + element(a, [loop__1__i + 1 - 1]))) and ((
           indextype__first > loop__1__i + 1 - 1) -> (
           sum_between(a, indextype__first, loop__1__i + 1 - 1) >=
           elementtype__last * (indextype__first - (
           loop__1__i + 1 - 1)))))) .
H16:   sum_between(a, indextype__first, loop__1__i + 1 - 1) >=
           sumtype__first .
H17:   sum_between(a, indextype__first, loop__1__i + 1 - 1) <=
           sumtype__last .
H18:   ((((loop__1__i + 1 - 1 >= counttype__first) and (
           loop__1__i + 1 - 1 <= counttype__last)) and ((
           indextype__first >= indextype__first) and (
           indextype__first <= indextype__last))) and (for_all(
           i___1: integer, ((i___1 >= indextype__first) and (
           i___1 <= indextype__last)) -> ((element(a, [
           i___1]) >= elementtype__first) and (element(a, [
           i___1]) <= elementtype__last))))) -> (((
           indextype__first = loop__1__i + 1 - 1) -> (
           sum_between(a, indextype__first, loop__1__i + 1 - 1) = element(
           a, [loop__1__i + 1 - 1]))) and (((indextype__first <
           loop__1__i + 1 - 1) -> (sum_between(a, indextype__first,
           loop__1__i + 1 - 1) = sum_between(a, indextype__first,
           loop__1__i + 1 - 1 - 1) + element(a, [loop__1__i + 1 - 1]))) and ((
           indextype__first > loop__1__i + 1 - 1) -> (
           sum_between(a, indextype__first, loop__1__i + 1 - 1) >=
           elementtype__last * (indextype__first - (
           loop__1__i + 1 - 1)))))) .
H19:   sum_between(a, indextype__first, loop__1__i + 1 - 1) >=
           sumtype__first .
H20:   sum_between(a, indextype__first, loop__1__i + 1 - 1) <=
           sumtype__last .
        ->
C1:    (loop__1__i + 1 <> indextype__first) -> (sum =
           sum_between(a, indextype__first, loop__1__i + 1 - 1)) .
C2:    (loop__1__i + 1 = indextype__first) -> (sum = shift) .
C3:    sum <= sum_between(a, indextype__first, loop__1__i + 1 - 1) .
C4:    0 <= sum .
C5:    (loop__1__i + 1 <> indextype__first) -> (sum <=
           elementtype__last * (loop__1__i + 1 - indextype__first)) .
C6:    for_all(i___1: integer, ((i___1 >= indextype__first) and (
           i___1 <= indextype__last)) -> ((element(a, [
           i___1]) >= elementtype__first) and (element(a, [
           i___1]) <= elementtype__last))) .
C7:    shift >= elementtype__first .
C8:    shift <= elementtype__last .
C9:    ((((loop__1__i + 1 - 1 >= counttype__first) and (
           loop__1__i + 1 - 1 <= counttype__last)) and ((
           indextype__first >= indextype__first) and (
           indextype__first <= indextype__last))) and (for_all(
           i___1: integer, ((i___1 >= indextype__first) and (
           i___1 <= indextype__last)) -> ((element(a, [
           i___1]) >= elementtype__first) and (element(a, [
           i___1]) <= elementtype__last))))) -> (((
           indextype__first = loop__1__i + 1 - 1) -> (
           sum_between(a, indextype__first, loop__1__i + 1 - 1) = element(
           a, [loop__1__i + 1 - 1]))) and (((indextype__first <
           loop__1__i + 1 - 1) -> (sum_between(a, indextype__first,
           loop__1__i + 1 - 1) = sum_between(a, indextype__first,
           loop__1__i + 1 - 1 - 1) + element(a, [loop__1__i + 1 - 1]))) and ((
           indextype__first > loop__1__i + 1 - 1) -> (
           sum_between(a, indextype__first, loop__1__i + 1 - 1) >=
           elementtype__last * (indextype__first - (
           loop__1__i + 1 - 1)))))) .
C10:   sum_between(a, indextype__first, loop__1__i + 1 - 1) >=
           sumtype__first .
C11:   sum_between(a, indextype__first, loop__1__i + 1 - 1) <=
           sumtype__last .
C12:   ((((loop__1__i + 1 - 1 >= counttype__first) and (
           loop__1__i + 1 - 1 <= counttype__last)) and ((
           indextype__first >= indextype__first) and (
           indextype__first <= indextype__last))) and (for_all(
           i___1: integer, ((i___1 >= indextype__first) and (
           i___1 <= indextype__last)) -> ((element(a, [
           i___1]) >= elementtype__first) and (element(a, [
           i___1]) <= elementtype__last))))) -> (((
           indextype__first = loop__1__i + 1 - 1) -> (
           sum_between(a, indextype__first, loop__1__i + 1 - 1) = element(
           a, [loop__1__i + 1 - 1]))) and (((indextype__first <
           loop__1__i + 1 - 1) -> (sum_between(a, indextype__first,
           loop__1__i + 1 - 1) = sum_between(a, indextype__first,
           loop__1__i + 1 - 1 - 1) + element(a, [loop__1__i + 1 - 1]))) and ((
           indextype__first > loop__1__i + 1 - 1) -> (
           sum_between(a, indextype__first, loop__1__i + 1 - 1) >=
           elementtype__last * (indextype__first - (
           loop__1__i + 1 - 1)))))) .
C13:   sum_between(a, indextype__first, loop__1__i + 1 - 1) >=
           sumtype__first .
C14:   sum_between(a, indextype__first, loop__1__i + 1 - 1) <=
           sumtype__last .
C15:   loop__1__i + 1 >= indextype__first .
C16:   loop__1__i + 1 <= indextype__last .
C17:   loop__1__i + 1 >= indextype__first .
C18:   loop__1__i + 1 <= indextype__last .


For path(s) from assertion of line 21 to run-time check associated with statement of line 27:

procedure_sumarray_shift_4.
H1:    (loop__1__i <> indextype__first) -> (sum =
           sum_between(a, indextype__first, loop__1__i - 1)) .
H2:    (loop__1__i = indextype__first) -> (sum = shift) .
H3:    sum <= sum_between(a, indextype__first, loop__1__i - 1) .
H4:    0 <= sum .
H5:    (loop__1__i <> indextype__first) -> (sum <=
           elementtype__last * (loop__1__i - indextype__first)) .
H6:    for_all(i___1: integer, ((i___1 >= indextype__first) and (
           i___1 <= indextype__last)) -> ((element(a, [
           i___1]) >= elementtype__first) and (element(a, [
           i___1]) <= elementtype__last))) .
H7:    shift >= elementtype__first .
H8:    shift <= elementtype__last .
H9:    ((((loop__1__i - 1 >= counttype__first) and (
           loop__1__i - 1 <= counttype__last)) and ((
           indextype__first >= indextype__first) and (
           indextype__first <= indextype__last))) and (for_all(
           i___1: integer, ((i___1 >= indextype__first) and (
           i___1 <= indextype__last)) -> ((element(a, [
           i___1]) >= elementtype__first) and (element(a, [
           i___1]) <= elementtype__last))))) -> (((
           indextype__first = loop__1__i - 1) -> (
           sum_between(a, indextype__first, loop__1__i - 1) = element(
           a, [loop__1__i - 1]))) and (((indextype__first <
           loop__1__i - 1) -> (sum_between(a, indextype__first,
           loop__1__i - 1) = sum_between(a, indextype__first,
           loop__1__i - 1 - 1) + element(a, [loop__1__i - 1]))) and ((
           indextype__first > loop__1__i - 1) -> (
           sum_between(a, indextype__first, loop__1__i - 1) >=
           elementtype__last * (indextype__first - (
           loop__1__i - 1)))))) .
H10:   sum_between(a, indextype__first, loop__1__i - 1) >=
           sumtype__first .
H11:   sum_between(a, indextype__first, loop__1__i - 1) <=
           sumtype__last .
H12:   ((((loop__1__i - 1 >= counttype__first) and (
           loop__1__i - 1 <= counttype__last)) and ((
           indextype__first >= indextype__first) and (
           indextype__first <= indextype__last))) and (for_all(
           i___1: integer, ((i___1 >= indextype__first) and (
           i___1 <= indextype__last)) -> ((element(a, [
           i___1]) >= elementtype__first) and (element(a, [
           i___1]) <= elementtype__last))))) -> (((
           indextype__first = loop__1__i - 1) -> (
           sum_between(a, indextype__first, loop__1__i - 1) = element(
           a, [loop__1__i - 1]))) and (((indextype__first <
           loop__1__i - 1) -> (sum_between(a, indextype__first,
           loop__1__i - 1) = sum_between(a, indextype__first,
           loop__1__i - 1 - 1) + element(a, [loop__1__i - 1]))) and ((
           indextype__first > loop__1__i - 1) -> (
           sum_between(a, indextype__first, loop__1__i - 1) >=
           elementtype__last * (indextype__first - (
           loop__1__i - 1)))))) .
H13:   sum_between(a, indextype__first, loop__1__i - 1) >=
           sumtype__first .
H14:   sum_between(a, indextype__first, loop__1__i - 1) <=
           sumtype__last .
H15:   loop__1__i >= indextype__first .
H16:   loop__1__i <= indextype__last .
H17:   loop__1__i >= indextype__first .
H18:   loop__1__i <= indextype__last .
H19:   loop__1__i = indextype__first .
H20:   sum >= sumtype__first .
H21:   sum <= sumtype__last .
        ->
C1:    sum - shift + element(a, [loop__1__i]) >= sumtype__first .
C2:    sum - shift + element(a, [loop__1__i]) <= sumtype__last .
C3:    loop__1__i >= indextype__first .
C4:    loop__1__i <= indextype__last .
C5:    sum - shift >= integer__base__first .
C6:    sum - shift <= integer__base__last .


For path(s) from assertion of line 21 to run-time check associated with statement of line 29:

procedure_sumarray_shift_5.
H1:    (loop__1__i <> indextype__first) -> (sum =
           sum_between(a, indextype__first, loop__1__i - 1)) .
H2:    (loop__1__i = indextype__first) -> (sum = shift) .
H3:    sum <= sum_between(a, indextype__first, loop__1__i - 1) .
H4:    0 <= sum .
H5:    (loop__1__i <> indextype__first) -> (sum <=
           elementtype__last * (loop__1__i - indextype__first)) .
H6:    for_all(i___1: integer, ((i___1 >= indextype__first) and (
           i___1 <= indextype__last)) -> ((element(a, [
           i___1]) >= elementtype__first) and (element(a, [
           i___1]) <= elementtype__last))) .
H7:    shift >= elementtype__first .
H8:    shift <= elementtype__last .
H9:    ((((loop__1__i - 1 >= counttype__first) and (
           loop__1__i - 1 <= counttype__last)) and ((
           indextype__first >= indextype__first) and (
           indextype__first <= indextype__last))) and (for_all(
           i___1: integer, ((i___1 >= indextype__first) and (
           i___1 <= indextype__last)) -> ((element(a, [
           i___1]) >= elementtype__first) and (element(a, [
           i___1]) <= elementtype__last))))) -> (((
           indextype__first = loop__1__i - 1) -> (
           sum_between(a, indextype__first, loop__1__i - 1) = element(
           a, [loop__1__i - 1]))) and (((indextype__first <
           loop__1__i - 1) -> (sum_between(a, indextype__first,
           loop__1__i - 1) = sum_between(a, indextype__first,
           loop__1__i - 1 - 1) + element(a, [loop__1__i - 1]))) and ((
           indextype__first > loop__1__i - 1) -> (
           sum_between(a, indextype__first, loop__1__i - 1) >=
           elementtype__last * (indextype__first - (
           loop__1__i - 1)))))) .
H10:   sum_between(a, indextype__first, loop__1__i - 1) >=
           sumtype__first .
H11:   sum_between(a, indextype__first, loop__1__i - 1) <=
           sumtype__last .
H12:   ((((loop__1__i - 1 >= counttype__first) and (
           loop__1__i - 1 <= counttype__last)) and ((
           indextype__first >= indextype__first) and (
           indextype__first <= indextype__last))) and (for_all(
           i___1: integer, ((i___1 >= indextype__first) and (
           i___1 <= indextype__last)) -> ((element(a, [
           i___1]) >= elementtype__first) and (element(a, [
           i___1]) <= elementtype__last))))) -> (((
           indextype__first = loop__1__i - 1) -> (
           sum_between(a, indextype__first, loop__1__i - 1) = element(
           a, [loop__1__i - 1]))) and (((indextype__first <
           loop__1__i - 1) -> (sum_between(a, indextype__first,
           loop__1__i - 1) = sum_between(a, indextype__first,
           loop__1__i - 1 - 1) + element(a, [loop__1__i - 1]))) and ((
           indextype__first > loop__1__i - 1) -> (
           sum_between(a, indextype__first, loop__1__i - 1) >=
           elementtype__last * (indextype__first - (
           loop__1__i - 1)))))) .
H13:   sum_between(a, indextype__first, loop__1__i - 1) >=
           sumtype__first .
H14:   sum_between(a, indextype__first, loop__1__i - 1) <=
           sumtype__last .
H15:   loop__1__i >= indextype__first .
H16:   loop__1__i <= indextype__last .
H17:   loop__1__i >= indextype__first .
H18:   loop__1__i <= indextype__last .
H19:   not (loop__1__i = indextype__first) .
H20:   sum >= sumtype__first .
H21:   sum <= sumtype__last .
        ->
C1:    sum + element(a, [loop__1__i]) >= sumtype__first .
C2:    sum + element(a, [loop__1__i]) <= sumtype__last .
C3:    loop__1__i >= indextype__first .
C4:    loop__1__i <= indextype__last .


For path(s) from assertion of line 21 to assertion of line 31:

procedure_sumarray_shift_6.
H1:    (loop__1__i <> indextype__first) -> (sum =
           sum_between(a, indextype__first, loop__1__i - 1)) .
H2:    (loop__1__i = indextype__first) -> (sum = shift) .
H3:    sum <= sum_between(a, indextype__first, loop__1__i - 1) .
H4:    0 <= sum .
H5:    (loop__1__i <> indextype__first) -> (sum <=
           elementtype__last * (loop__1__i - indextype__first)) .
H6:    for_all(i___1: integer, ((i___1 >= indextype__first) and (
           i___1 <= indextype__last)) -> ((element(a, [
           i___1]) >= elementtype__first) and (element(a, [
           i___1]) <= elementtype__last))) .
H7:    shift >= elementtype__first .
H8:    shift <= elementtype__last .
H9:    ((((loop__1__i - 1 >= counttype__first) and (
           loop__1__i - 1 <= counttype__last)) and ((
           indextype__first >= indextype__first) and (
           indextype__first <= indextype__last))) and (for_all(
           i___1: integer, ((i___1 >= indextype__first) and (
           i___1 <= indextype__last)) -> ((element(a, [
           i___1]) >= elementtype__first) and (element(a, [
           i___1]) <= elementtype__last))))) -> (((
           indextype__first = loop__1__i - 1) -> (
           sum_between(a, indextype__first, loop__1__i - 1) = element(
           a, [loop__1__i - 1]))) and (((indextype__first <
           loop__1__i - 1) -> (sum_between(a, indextype__first,
           loop__1__i - 1) = sum_between(a, indextype__first,
           loop__1__i - 1 - 1) + element(a, [loop__1__i - 1]))) and ((
           indextype__first > loop__1__i - 1) -> (
           sum_between(a, indextype__first, loop__1__i - 1) >=
           elementtype__last * (indextype__first - (
           loop__1__i - 1)))))) .
H10:   sum_between(a, indextype__first, loop__1__i - 1) >=
           sumtype__first .
H11:   sum_between(a, indextype__first, loop__1__i - 1) <=
           sumtype__last .
H12:   ((((loop__1__i - 1 >= counttype__first) and (
           loop__1__i - 1 <= counttype__last)) and ((
           indextype__first >= indextype__first) and (
           indextype__first <= indextype__last))) and (for_all(
           i___1: integer, ((i___1 >= indextype__first) and (
           i___1 <= indextype__last)) -> ((element(a, [
           i___1]) >= elementtype__first) and (element(a, [
           i___1]) <= elementtype__last))))) -> (((
           indextype__first = loop__1__i - 1) -> (
           sum_between(a, indextype__first, loop__1__i - 1) = element(
           a, [loop__1__i - 1]))) and (((indextype__first <
           loop__1__i - 1) -> (sum_between(a, indextype__first,
           loop__1__i - 1) = sum_between(a, indextype__first,
           loop__1__i - 1 - 1) + element(a, [loop__1__i - 1]))) and ((
           indextype__first > loop__1__i - 1) -> (
           sum_between(a, indextype__first, loop__1__i - 1) >=
           elementtype__last * (indextype__first - (
           loop__1__i - 1)))))) .
H13:   sum_between(a, indextype__first, loop__1__i - 1) >=
           sumtype__first .
H14:   sum_between(a, indextype__first, loop__1__i - 1) <=
           sumtype__last .
H15:   loop__1__i >= indextype__first .
H16:   loop__1__i <= indextype__last .
H17:   loop__1__i >= indextype__first .
H18:   loop__1__i <= indextype__last .
H19:   loop__1__i = indextype__first .
H20:   sum >= sumtype__first .
H21:   sum <= sumtype__last .
H22:   sum - shift + element(a, [loop__1__i]) >= sumtype__first .
H23:   sum - shift + element(a, [loop__1__i]) <= sumtype__last .
H24:   loop__1__i >= indextype__first .
H25:   loop__1__i <= indextype__last .
H26:   sum - shift >= integer__base__first .
H27:   sum - shift <= integer__base__last .
H28:   ((((loop__1__i >= counttype__first) and (loop__1__i <=
           counttype__last)) and ((indextype__first >=
           indextype__first) and (indextype__first <=
           indextype__last))) and (for_all(i___1: integer, ((
           i___1 >= indextype__first) and (i___1 <=
           indextype__last)) -> ((element(a, [i___1]) >=
           elementtype__first) and (element(a, [i___1]) <=
           elementtype__last))))) -> (((indextype__first =
           loop__1__i) -> (sum_between(a, indextype__first,
           loop__1__i) = element(a, [loop__1__i]))) and (((
           indextype__first < loop__1__i) -> (sum_between(a,
           indextype__first, loop__1__i) = sum_between(a,
           indextype__first, loop__1__i - 1) + element(a, [
           loop__1__i]))) and ((indextype__first > loop__1__i) -> (
           sum_between(a, indextype__first, loop__1__i) >=
           elementtype__last * (indextype__first - loop__1__i))))) .
H29:   sum_between(a, indextype__first, loop__1__i) >=
           sumtype__first .
H30:   sum_between(a, indextype__first, loop__1__i) <=
           sumtype__last .
        ->
C1:    sum - shift + element(a, [loop__1__i]) = sum_between(
           a, indextype__first, loop__1__i) .
C2:    0 <= sum - shift + element(a, [loop__1__i]) .
C3:    sum - shift + element(a, [loop__1__i]) <=
           elementtype__last * (loop__1__i - indextype__first + 1) .
C4:    for_all(i___1: integer, ((i___1 >= indextype__first) and (
           i___1 <= indextype__last)) -> ((element(a, [
           i___1]) >= elementtype__first) and (element(a, [
           i___1]) <= elementtype__last))) .
C5:    shift >= elementtype__first .
C6:    shift <= elementtype__last .
C7:    ((((loop__1__i >= counttype__first) and (loop__1__i <=
           counttype__last)) and ((indextype__first >=
           indextype__first) and (indextype__first <=
           indextype__last))) and (for_all(i___1: integer, ((
           i___1 >= indextype__first) and (i___1 <=
           indextype__last)) -> ((element(a, [i___1]) >=
           elementtype__first) and (element(a, [i___1]) <=
           elementtype__last))))) -> (((indextype__first =
           loop__1__i) -> (sum_between(a, indextype__first,
           loop__1__i) = element(a, [loop__1__i]))) and (((
           indextype__first < loop__1__i) -> (sum_between(a,
           indextype__first, loop__1__i) = sum_between(a,
           indextype__first, loop__1__i - 1) + element(a, [
           loop__1__i]))) and ((indextype__first > loop__1__i) -> (
           sum_between(a, indextype__first, loop__1__i) >=
           elementtype__last * (indextype__first - loop__1__i))))) .
C8:    sum_between(a, indextype__first, loop__1__i) >=
           sumtype__first .
C9:    sum_between(a, indextype__first, loop__1__i) <=
           sumtype__last .
C10:   loop__1__i >= indextype__first .
C11:   loop__1__i <= indextype__last .
C12:   loop__1__i >= indextype__first .
C13:   loop__1__i <= indextype__last .


procedure_sumarray_shift_7.
H1:    (loop__1__i <> indextype__first) -> (sum =
           sum_between(a, indextype__first, loop__1__i - 1)) .
H2:    (loop__1__i = indextype__first) -> (sum = shift) .
H3:    sum <= sum_between(a, indextype__first, loop__1__i - 1) .
H4:    0 <= sum .
H5:    (loop__1__i <> indextype__first) -> (sum <=
           elementtype__last * (loop__1__i - indextype__first)) .
H6:    for_all(i___1: integer, ((i___1 >= indextype__first) and (
           i___1 <= indextype__last)) -> ((element(a, [
           i___1]) >= elementtype__first) and (element(a, [
           i___1]) <= elementtype__last))) .
H7:    shift >= elementtype__first .
H8:    shift <= elementtype__last .
H9:    ((((loop__1__i - 1 >= counttype__first) and (
           loop__1__i - 1 <= counttype__last)) and ((
           indextype__first >= indextype__first) and (
           indextype__first <= indextype__last))) and (for_all(
           i___1: integer, ((i___1 >= indextype__first) and (
           i___1 <= indextype__last)) -> ((element(a, [
           i___1]) >= elementtype__first) and (element(a, [
           i___1]) <= elementtype__last))))) -> (((
           indextype__first = loop__1__i - 1) -> (
           sum_between(a, indextype__first, loop__1__i - 1) = element(
           a, [loop__1__i - 1]))) and (((indextype__first <
           loop__1__i - 1) -> (sum_between(a, indextype__first,
           loop__1__i - 1) = sum_between(a, indextype__first,
           loop__1__i - 1 - 1) + element(a, [loop__1__i - 1]))) and ((
           indextype__first > loop__1__i - 1) -> (
           sum_between(a, indextype__first, loop__1__i - 1) >=
           elementtype__last * (indextype__first - (
           loop__1__i - 1)))))) .
H10:   sum_between(a, indextype__first, loop__1__i - 1) >=
           sumtype__first .
H11:   sum_between(a, indextype__first, loop__1__i - 1) <=
           sumtype__last .
H12:   ((((loop__1__i - 1 >= counttype__first) and (
           loop__1__i - 1 <= counttype__last)) and ((
           indextype__first >= indextype__first) and (
           indextype__first <= indextype__last))) and (for_all(
           i___1: integer, ((i___1 >= indextype__first) and (
           i___1 <= indextype__last)) -> ((element(a, [
           i___1]) >= elementtype__first) and (element(a, [
           i___1]) <= elementtype__last))))) -> (((
           indextype__first = loop__1__i - 1) -> (
           sum_between(a, indextype__first, loop__1__i - 1) = element(
           a, [loop__1__i - 1]))) and (((indextype__first <
           loop__1__i - 1) -> (sum_between(a, indextype__first,
           loop__1__i - 1) = sum_between(a, indextype__first,
           loop__1__i - 1 - 1) + element(a, [loop__1__i - 1]))) and ((
           indextype__first > loop__1__i - 1) -> (
           sum_between(a, indextype__first, loop__1__i - 1) >=
           elementtype__last * (indextype__first - (
           loop__1__i - 1)))))) .
H13:   sum_between(a, indextype__first, loop__1__i - 1) >=
           sumtype__first .
H14:   sum_between(a, indextype__first, loop__1__i - 1) <=
           sumtype__last .
H15:   loop__1__i >= indextype__first .
H16:   loop__1__i <= indextype__last .
H17:   loop__1__i >= indextype__first .
H18:   loop__1__i <= indextype__last .
H19:   not (loop__1__i = indextype__first) .
H20:   sum >= sumtype__first .
H21:   sum <= sumtype__last .
H22:   sum + element(a, [loop__1__i]) >= sumtype__first .
H23:   sum + element(a, [loop__1__i]) <= sumtype__last .
H24:   loop__1__i >= indextype__first .
H25:   loop__1__i <= indextype__last .
H26:   ((((loop__1__i >= counttype__first) and (loop__1__i <=
           counttype__last)) and ((indextype__first >=
           indextype__first) and (indextype__first <=
           indextype__last))) and (for_all(i___1: integer, ((
           i___1 >= indextype__first) and (i___1 <=
           indextype__last)) -> ((element(a, [i___1]) >=
           elementtype__first) and (element(a, [i___1]) <=
           elementtype__last))))) -> (((indextype__first =
           loop__1__i) -> (sum_between(a, indextype__first,
           loop__1__i) = element(a, [loop__1__i]))) and (((
           indextype__first < loop__1__i) -> (sum_between(a,
           indextype__first, loop__1__i) = sum_between(a,
           indextype__first, loop__1__i - 1) + element(a, [
           loop__1__i]))) and ((indextype__first > loop__1__i) -> (
           sum_between(a, indextype__first, loop__1__i) >=
           elementtype__last * (indextype__first - loop__1__i))))) .
H27:   sum_between(a, indextype__first, loop__1__i) >=
           sumtype__first .
H28:   sum_between(a, indextype__first, loop__1__i) <=
           sumtype__last .
        ->
C1:    sum + element(a, [loop__1__i]) = sum_between(a,
           indextype__first, loop__1__i) .
C2:    0 <= sum + element(a, [loop__1__i]) .
C3:    sum + element(a, [loop__1__i]) <= elementtype__last * (
           loop__1__i - indextype__first + 1) .
C4:    for_all(i___1: integer, ((i___1 >= indextype__first) and (
           i___1 <= indextype__last)) -> ((element(a, [
           i___1]) >= elementtype__first) and (element(a, [
           i___1]) <= elementtype__last))) .
C5:    shift >= elementtype__first .
C6:    shift <= elementtype__last .
C7:    ((((loop__1__i >= counttype__first) and (loop__1__i <=
           counttype__last)) and ((indextype__first >=
           indextype__first) and (indextype__first <=
           indextype__last))) and (for_all(i___1: integer, ((
           i___1 >= indextype__first) and (i___1 <=
           indextype__last)) -> ((element(a, [i___1]) >=
           elementtype__first) and (element(a, [i___1]) <=
           elementtype__last))))) -> (((indextype__first =
           loop__1__i) -> (sum_between(a, indextype__first,
           loop__1__i) = element(a, [loop__1__i]))) and (((
           indextype__first < loop__1__i) -> (sum_between(a,
           indextype__first, loop__1__i) = sum_between(a,
           indextype__first, loop__1__i - 1) + element(a, [
           loop__1__i]))) and ((indextype__first > loop__1__i) -> (
           sum_between(a, indextype__first, loop__1__i) >=
           elementtype__last * (indextype__first - loop__1__i))))) .
C8:    sum_between(a, indextype__first, loop__1__i) >=
           sumtype__first .
C9:    sum_between(a, indextype__first, loop__1__i) <=
           sumtype__last .
C10:   loop__1__i >= indextype__first .
C11:   loop__1__i <= indextype__last .
C12:   loop__1__i >= indextype__first .
C13:   loop__1__i <= indextype__last .


For path(s) from assertion of line 31 to finish:

procedure_sumarray_shift_8.
H1:    sum = sum_between(a, indextype__first, loop__1__i) .
H2:    0 <= sum .
H3:    sum <= elementtype__last * (loop__1__i - indextype__first + 1) .
H4:    for_all(i___1: integer, ((i___1 >= indextype__first) and (
           i___1 <= indextype__last)) -> ((element(a, [
           i___1]) >= elementtype__first) and (element(a, [
           i___1]) <= elementtype__last))) .
H5:    shift >= elementtype__first .
H6:    shift <= elementtype__last .
H7:    ((((loop__1__i >= counttype__first) and (loop__1__i <=
           counttype__last)) and ((indextype__first >=
           indextype__first) and (indextype__first <=
           indextype__last))) and (for_all(i___1: integer, ((
           i___1 >= indextype__first) and (i___1 <=
           indextype__last)) -> ((element(a, [i___1]) >=
           elementtype__first) and (element(a, [i___1]) <=
           elementtype__last))))) -> (((indextype__first =
           loop__1__i) -> (sum_between(a, indextype__first,
           loop__1__i) = element(a, [loop__1__i]))) and (((
           indextype__first < loop__1__i) -> (sum_between(a,
           indextype__first, loop__1__i) = sum_between(a,
           indextype__first, loop__1__i - 1) + element(a, [
           loop__1__i]))) and ((indextype__first > loop__1__i) -> (
           sum_between(a, indextype__first, loop__1__i) >=
           elementtype__last * (indextype__first - loop__1__i))))) .
H8:    sum_between(a, indextype__first, loop__1__i) >=
           sumtype__first .
H9:    sum_between(a, indextype__first, loop__1__i) <=
           sumtype__last .
H10:   loop__1__i >= indextype__first .
H11:   loop__1__i <= indextype__last .
H12:   loop__1__i >= indextype__first .
H13:   loop__1__i <= indextype__last .
H14:   loop__1__i = indextype__last .
H15:   ((((indextype__last >= counttype__first) and (
           indextype__last <= counttype__last)) and ((
           indextype__first >= indextype__first) and (
           indextype__first <= indextype__last))) and (for_all(
           i___1: integer, ((i___1 >= indextype__first) and (
           i___1 <= indextype__last)) -> ((element(a, [
           i___1]) >= elementtype__first) and (element(a, [
           i___1]) <= elementtype__last))))) -> (((
           indextype__first = indextype__last) -> (
           sum_between(a, indextype__first, indextype__last) = element(
           a, [indextype__last]))) and (((indextype__first <
           indextype__last) -> (sum_between(a, indextype__first,
           indextype__last) = sum_between(a, indextype__first,
           indextype__last - 1) + element(a, [indextype__last]))) and ((
           indextype__first > indextype__last) -> (
           sum_between(a, indextype__first, indextype__last) >=
           elementtype__last * (indextype__first -
           indextype__last))))) .
H16:   sum_between(a, indextype__first, indextype__last) >=
           sumtype__first .
H17:   sum_between(a, indextype__first, indextype__last) <=
           sumtype__last .
        ->
C1:    sum = sum_between(a, indextype__first, indextype__last) .
