*****************************************************************************
                       Semantic Analysis of SPARK Text
                             Examiner Pro Edition

*****************************************************************************



SPARK Simplifier Pro Edition


procedure Skein.Skein_512_Process_Block.Do_First_Key_Injection






@@@@@@@@@@  VC: procedure_do_first_key_injection_1.  @@@@@@@@@@
%%%  Simplified H2 on reading formula in, to give:
     %%%  H2:  for_all(i___1 : integer, spark__crypto__i8__first <= i___1 and 
          i___1 <= spark__crypto__i8__last -> spark__unsigned__u64__first <= 
          element(w, [i___1]) and element(w, [i___1]) <= 
          spark__unsigned__u64__last)
%%%  Simplified H3 on reading formula in, to give:
     %%%  H3:  for_all(i___1 : integer, spark__crypto__i9__first <= i___1 and 
          i___1 <= spark__crypto__i9__last -> spark__unsigned__u64__first <= 
          element(ks, [i___1]) and element(ks, [i___1]) <= 
          spark__unsigned__u64__last)
%%%  Simplified H4 on reading formula in, to give:
     %%%  H4:  for_all(i___1 : integer, spark__crypto__i3__first <= i___1 and 
          i___1 <= spark__crypto__i3__last -> spark__unsigned__u64__first <= 
          element(ts, [i___1]) and element(ts, [i___1]) <= 
          spark__unsigned__u64__last)
-S-  Applied substitution rule do_first_key_rules(15).
     This was achieved by replacing all occurrences of 
          spark__unsigned__u64__first by:
          0.
<S>  New H2:  for_all(i___1 : integer, spark__crypto__i8__first <= i___1 and 
          i___1 <= spark__crypto__i8__last -> 0 <= element(w, [i___1]) and 
          element(w, [i___1]) <= spark__unsigned__u64__last)
<S>  New H3:  for_all(i___1 : integer, spark__crypto__i9__first <= i___1 and 
          i___1 <= spark__crypto__i9__last -> 0 <= element(ks, [i___1]) and 
          element(ks, [i___1]) <= spark__unsigned__u64__last)
<S>  New H4:  for_all(i___1 : integer, spark__crypto__i3__first <= i___1 and 
          i___1 <= spark__crypto__i3__last -> 0 <= element(ts, [i___1]) and 
          element(ts, [i___1]) <= spark__unsigned__u64__last)
<S>  New C1:  (element(w, [7]) + element(ks, [7])) mod 
          interfaces__unsigned_64__modulus >= 0
<S>  New C7:  (element(w, [6]) + element(ks, [6])) mod 
          interfaces__unsigned_64__modulus >= 0
<S>  New C13:  (element(w, [5]) + element(ks, [5])) mod 
          interfaces__unsigned_64__modulus >= 0
<S>  New C19:  (element(w, [4]) + element(ks, [4])) mod 
          interfaces__unsigned_64__modulus >= 0
<S>  New C25:  (element(w, [3]) + element(ks, [3])) mod 
          interfaces__unsigned_64__modulus >= 0
<S>  New C31:  (element(w, [2]) + element(ks, [2])) mod 
          interfaces__unsigned_64__modulus >= 0
<S>  New C37:  (element(w, [1]) + element(ks, [1])) mod 
          interfaces__unsigned_64__modulus >= 0
<S>  New C43:  (element(w, [0]) + element(ks, [0])) mod 
          interfaces__unsigned_64__modulus >= 0
-S-  Applied substitution rule do_first_key_rules(16).
     This was achieved by replacing all occurrences of 
          spark__unsigned__u64__last by:
          18446744073709551615.
<S>  New H2:  for_all(i___1 : integer, spark__crypto__i8__first <= i___1 and 
          i___1 <= spark__crypto__i8__last -> 0 <= element(w, [i___1]) and 
          element(w, [i___1]) <= 18446744073709551615)
<S>  New H3:  for_all(i___1 : integer, spark__crypto__i9__first <= i___1 and 
          i___1 <= spark__crypto__i9__last -> 0 <= element(ks, [i___1]) and 
          element(ks, [i___1]) <= 18446744073709551615)
<S>  New H4:  for_all(i___1 : integer, spark__crypto__i3__first <= i___1 and 
          i___1 <= spark__crypto__i3__last -> 0 <= element(ts, [i___1]) and 
          element(ts, [i___1]) <= 18446744073709551615)
<S>  New C2:  (element(w, [7]) + element(ks, [7])) mod 
          interfaces__unsigned_64__modulus <= 18446744073709551615
<S>  New C8:  (element(w, [6]) + element(ks, [6])) mod 
          interfaces__unsigned_64__modulus <= 18446744073709551615
<S>  New C14:  (element(w, [5]) + element(ks, [5])) mod 
          interfaces__unsigned_64__modulus <= 18446744073709551615
<S>  New C20:  (element(w, [4]) + element(ks, [4])) mod 
          interfaces__unsigned_64__modulus <= 18446744073709551615
<S>  New C26:  (element(w, [3]) + element(ks, [3])) mod 
          interfaces__unsigned_64__modulus <= 18446744073709551615
<S>  New C32:  (element(w, [2]) + element(ks, [2])) mod 
          interfaces__unsigned_64__modulus <= 18446744073709551615
<S>  New C38:  (element(w, [1]) + element(ks, [1])) mod 
          interfaces__unsigned_64__modulus <= 18446744073709551615
<S>  New C44:  (element(w, [0]) + element(ks, [0])) mod 
          interfaces__unsigned_64__modulus <= 18446744073709551615
-S-  Applied substitution rule do_first_key_rules(31).
     This was achieved by replacing all occurrences of spark__crypto__i9__first 
          by:
          0.
<S>  New H3:  for_all(i___1 : integer, 0 <= i___1 and i___1 <= 
          spark__crypto__i9__last -> 0 <= element(ks, [i___1]) and element(ks, [
          i___1]) <= 18446744073709551615)
<S>  New C3:  true
<S>  New C9:  true
<S>  New C15:  true
<S>  New C21:  true
<S>  New C27:  true
<S>  New C33:  true
<S>  New C39:  true
<S>  New C45:  true
-S-  Applied substitution rule do_first_key_rules(32).
     This was achieved by replacing all occurrences of spark__crypto__i9__last 
          by:
          8.
<S>  New H3:  for_all(i___1 : integer, 0 <= i___1 and i___1 <= 8 -> 0 <= 
          element(ks, [i___1]) and element(ks, [i___1]) <= 18446744073709551615)
<S>  New C4:  true
<S>  New C10:  true
<S>  New C16:  true
<S>  New C22:  true
<S>  New C28:  true
<S>  New C34:  true
<S>  New C40:  true
<S>  New C46:  true
-S-  Applied substitution rule do_first_key_rules(26).
     This was achieved by replacing all occurrences of spark__crypto__i8__first 
          by:
          0.
<S>  New H2:  for_all(i___1 : integer, 0 <= i___1 and i___1 <= 
          spark__crypto__i8__last -> 0 <= element(w, [i___1]) and element(w, [
          i___1]) <= 18446744073709551615)
<S>  New C5:  true
<S>  New C11:  true
<S>  New C17:  true
<S>  New C23:  true
<S>  New C29:  true
<S>  New C35:  true
<S>  New C41:  true
<S>  New C47:  true
-S-  Applied substitution rule do_first_key_rules(27).
     This was achieved by replacing all occurrences of spark__crypto__i8__last 
          by:
          7.
<S>  New H2:  for_all(i___1 : integer, 0 <= i___1 and i___1 <= 7 -> 0 <= 
          element(w, [i___1]) and element(w, [i___1]) <= 18446744073709551615)
<S>  New C6:  true
<S>  New C12:  true
<S>  New C18:  true
<S>  New C24:  true
<S>  New C30:  true
<S>  New C36:  true
<S>  New C42:  true
<S>  New C48:  true
***  Proved C3:  true
***  Proved C9:  true
***  Proved C15:  true
***  Proved C21:  true
***  Proved C27:  true
***  Proved C33:  true
***  Proved C39:  true
***  Proved C45:  true
***  Proved C4:  true
***  Proved C10:  true
***  Proved C16:  true
***  Proved C22:  true
***  Proved C28:  true
***  Proved C34:  true
***  Proved C40:  true
***  Proved C46:  true
***  Proved C5:  true
***  Proved C11:  true
***  Proved C17:  true
***  Proved C23:  true
***  Proved C29:  true
***  Proved C35:  true
***  Proved C41:  true
***  Proved C47:  true
***  Proved C6:  true
***  Proved C12:  true
***  Proved C18:  true
***  Proved C24:  true
***  Proved C30:  true
***  Proved C36:  true
***  Proved C42:  true
***  Proved C48:  true
-S-  Applied substitution rule do_first_key_rules(13).
     This was achieved by replacing all occurrences of 
          interfaces__unsigned_64__modulus by:
          18446744073709551616.
<S>  New C1:  (element(w, [7]) + element(ks, [7])) mod 18446744073709551616 >= 0
<S>  New C7:  (element(w, [6]) + element(ks, [6])) mod 18446744073709551616 >= 0
<S>  New C13:  (element(w, [5]) + element(ks, [5])) mod 18446744073709551616 >= 
          0
<S>  New C19:  (element(w, [4]) + element(ks, [4])) mod 18446744073709551616 >= 
          0
<S>  New C25:  (element(w, [3]) + element(ks, [3])) mod 18446744073709551616 >= 
          0
<S>  New C31:  (element(w, [2]) + element(ks, [2])) mod 18446744073709551616 >= 
          0
<S>  New C37:  (element(w, [1]) + element(ks, [1])) mod 18446744073709551616 >= 
          0
<S>  New C43:  (element(w, [0]) + element(ks, [0])) mod 18446744073709551616 >= 
          0
<S>  New C2:  (element(w, [7]) + element(ks, [7])) mod 18446744073709551616 <= 
          18446744073709551615
<S>  New C8:  (element(w, [6]) + element(ks, [6])) mod 18446744073709551616 <= 
          18446744073709551615
<S>  New C14:  (element(w, [5]) + element(ks, [5])) mod 18446744073709551616 <= 
          18446744073709551615
<S>  New C20:  (element(w, [4]) + element(ks, [4])) mod 18446744073709551616 <= 
          18446744073709551615
<S>  New C26:  (element(w, [3]) + element(ks, [3])) mod 18446744073709551616 <= 
          18446744073709551615
<S>  New C32:  (element(w, [2]) + element(ks, [2])) mod 18446744073709551616 <= 
          18446744073709551615
<S>  New C38:  (element(w, [1]) + element(ks, [1])) mod 18446744073709551616 <= 
          18446744073709551615
<S>  New C44:  (element(w, [0]) + element(ks, [0])) mod 18446744073709551616 <= 
          18446744073709551615
-S-  Applied substitution rule do_first_key_rules(21).
     This was achieved by replacing all occurrences of spark__crypto__i3__first 
          by:
          0.
<S>  New H4:  for_all(i___1 : integer, 0 <= i___1 and i___1 <= 
          spark__crypto__i3__last -> 0 <= element(ts, [i___1]) and element(ts, [
          i___1]) <= 18446744073709551615)
-S-  Applied substitution rule do_first_key_rules(22).
     This was achieved by replacing all occurrences of spark__crypto__i3__last 
          by:
          2.
<S>  New H4:  for_all(i___1 : integer, 0 <= i___1 and i___1 <= 2 -> 0 <= 
          element(ts, [i___1]) and element(ts, [i___1]) <= 18446744073709551615)
***  Proved C1:  (element(w, [7]) + element(ks, [7])) mod 18446744073709551616 
          >= 0
***  Proved C7:  (element(w, [6]) + element(ks, [6])) mod 18446744073709551616 
          >= 0
***  Proved C13:  (element(w, [5]) + element(ks, [5])) mod 18446744073709551616 
          >= 0
***  Proved C19:  (element(w, [4]) + element(ks, [4])) mod 18446744073709551616 
          >= 0
***  Proved C25:  (element(w, [3]) + element(ks, [3])) mod 18446744073709551616 
          >= 0
***  Proved C31:  (element(w, [2]) + element(ks, [2])) mod 18446744073709551616 
          >= 0
***  Proved C37:  (element(w, [1]) + element(ks, [1])) mod 18446744073709551616 
          >= 0
***  Proved C43:  (element(w, [0]) + element(ks, [0])) mod 18446744073709551616 
          >= 0
***  Proved C2:  (element(w, [7]) + element(ks, [7])) mod 18446744073709551616 
          <= 18446744073709551615
***  Proved C8:  (element(w, [6]) + element(ks, [6])) mod 18446744073709551616 
          <= 18446744073709551615
***  Proved C14:  (element(w, [5]) + element(ks, [5])) mod 18446744073709551616 
          <= 18446744073709551615
***  Proved C20:  (element(w, [4]) + element(ks, [4])) mod 18446744073709551616 
          <= 18446744073709551615
***  Proved C26:  (element(w, [3]) + element(ks, [3])) mod 18446744073709551616 
          <= 18446744073709551615
***  Proved C32:  (element(w, [2]) + element(ks, [2])) mod 18446744073709551616 
          <= 18446744073709551615
***  Proved C38:  (element(w, [1]) + element(ks, [1])) mod 18446744073709551616 
          <= 18446744073709551615
***  Proved C44:  (element(w, [0]) + element(ks, [0])) mod 18446744073709551616 
          <= 18446744073709551615
***  PROVED VC.


@@@@@@@@@@  VC: procedure_do_first_key_injection_2.  @@@@@@@@@@
%%%  Simplified H2 on reading formula in, to give:
     %%%  H2:  for_all(i___1 : integer, spark__crypto__i8__first <= i___1 and 
          i___1 <= spark__crypto__i8__last -> spark__unsigned__u64__first <= 
          element(w, [i___1]) and element(w, [i___1]) <= 
          spark__unsigned__u64__last)
%%%  Simplified H3 on reading formula in, to give:
     %%%  H3:  for_all(i___1 : integer, spark__crypto__i9__first <= i___1 and 
          i___1 <= spark__crypto__i9__last -> spark__unsigned__u64__first <= 
          element(ks, [i___1]) and element(ks, [i___1]) <= 
          spark__unsigned__u64__last)
%%%  Simplified H4 on reading formula in, to give:
     %%%  H4:  for_all(i___1 : integer, spark__crypto__i3__first <= i___1 and 
          i___1 <= spark__crypto__i3__last -> spark__unsigned__u64__first <= 
          element(ts, [i___1]) and element(ts, [i___1]) <= 
          spark__unsigned__u64__last)
-S-  Applied substitution rule do_first_key_rules(15).
     This was achieved by replacing all occurrences of 
          spark__unsigned__u64__first by:
          0.
<S>  New H2:  for_all(i___1 : integer, spark__crypto__i8__first <= i___1 and 
          i___1 <= spark__crypto__i8__last -> 0 <= element(w, [i___1]) and 
          element(w, [i___1]) <= spark__unsigned__u64__last)
<S>  New H3:  for_all(i___1 : integer, spark__crypto__i9__first <= i___1 and 
          i___1 <= spark__crypto__i9__last -> 0 <= element(ks, [i___1]) and 
          element(ks, [i___1]) <= spark__unsigned__u64__last)
<S>  New H4:  for_all(i___1 : integer, spark__crypto__i3__first <= i___1 and 
          i___1 <= spark__crypto__i3__last -> 0 <= element(ts, [i___1]) and 
          element(ts, [i___1]) <= spark__unsigned__u64__last)
<S>  New H5:  (element(w, [7]) + element(ks, [7])) mod 
          interfaces__unsigned_64__modulus >= 0
<S>  New H11:  (element(w, [6]) + element(ks, [6])) mod 
          interfaces__unsigned_64__modulus >= 0
<S>  New H17:  (element(w, [5]) + element(ks, [5])) mod 
          interfaces__unsigned_64__modulus >= 0
<S>  New H23:  (element(w, [4]) + element(ks, [4])) mod 
          interfaces__unsigned_64__modulus >= 0
<S>  New H29:  (element(w, [3]) + element(ks, [3])) mod 
          interfaces__unsigned_64__modulus >= 0
<S>  New H35:  (element(w, [2]) + element(ks, [2])) mod 
          interfaces__unsigned_64__modulus >= 0
<S>  New H41:  (element(w, [1]) + element(ks, [1])) mod 
          interfaces__unsigned_64__modulus >= 0
<S>  New H47:  (element(w, [0]) + element(ks, [0])) mod 
          interfaces__unsigned_64__modulus >= 0
<S>  New C1:  (element(mk__spark__crypto__u64_seq([0] := (element(w, [0]) + 
          element(ks, [0])) mod interfaces__unsigned_64__modulus, [1] := (
          element(w, [1]) + element(ks, [1])) mod 
          interfaces__unsigned_64__modulus, [2] := (element(w, [2]) + element(
          ks, [2])) mod interfaces__unsigned_64__modulus, [3] := (element(w, [3]
          ) + element(ks, [3])) mod interfaces__unsigned_64__modulus, [4] := (
          element(w, [4]) + element(ks, [4])) mod 
          interfaces__unsigned_64__modulus, [5] := (element(w, [5]) + element(
          ks, [5])) mod interfaces__unsigned_64__modulus, [6] := (element(w, [6]
          ) + element(ks, [6])) mod interfaces__unsigned_64__modulus, [7] := (
          element(w, [7]) + element(ks, [7])) mod 
          interfaces__unsigned_64__modulus), [wcnt - 3]) + element(ts, [0])) 
          mod interfaces__unsigned_64__modulus >= 0
-S-  Applied substitution rule do_first_key_rules(16).
     This was achieved by replacing all occurrences of 
          spark__unsigned__u64__last by:
          18446744073709551615.
<S>  New H6:  (element(w, [7]) + element(ks, [7])) mod 
          interfaces__unsigned_64__modulus <= 18446744073709551615
<S>  New H12:  (element(w, [6]) + element(ks, [6])) mod 
          interfaces__unsigned_64__modulus <= 18446744073709551615
<S>  New H18:  (element(w, [5]) + element(ks, [5])) mod 
          interfaces__unsigned_64__modulus <= 18446744073709551615
<S>  New H24:  (element(w, [4]) + element(ks, [4])) mod 
          interfaces__unsigned_64__modulus <= 18446744073709551615
<S>  New H30:  (element(w, [3]) + element(ks, [3])) mod 
          interfaces__unsigned_64__modulus <= 18446744073709551615
<S>  New H36:  (element(w, [2]) + element(ks, [2])) mod 
          interfaces__unsigned_64__modulus <= 18446744073709551615
<S>  New H42:  (element(w, [1]) + element(ks, [1])) mod 
          interfaces__unsigned_64__modulus <= 18446744073709551615
<S>  New H48:  (element(w, [0]) + element(ks, [0])) mod 
          interfaces__unsigned_64__modulus <= 18446744073709551615
<S>  New H2:  for_all(i___1 : integer, spark__crypto__i8__first <= i___1 and 
          i___1 <= spark__crypto__i8__last -> 0 <= element(w, [i___1]) and 
          element(w, [i___1]) <= 18446744073709551615)
<S>  New H3:  for_all(i___1 : integer, spark__crypto__i9__first <= i___1 and 
          i___1 <= spark__crypto__i9__last -> 0 <= element(ks, [i___1]) and 
          element(ks, [i___1]) <= 18446744073709551615)
<S>  New H4:  for_all(i___1 : integer, spark__crypto__i3__first <= i___1 and 
          i___1 <= spark__crypto__i3__last -> 0 <= element(ts, [i___1]) and 
          element(ts, [i___1]) <= 18446744073709551615)
<S>  New C2:  (element(mk__spark__crypto__u64_seq([0] := (element(w, [0]) + 
          element(ks, [0])) mod interfaces__unsigned_64__modulus, [1] := (
          element(w, [1]) + element(ks, [1])) mod 
          interfaces__unsigned_64__modulus, [2] := (element(w, [2]) + element(
          ks, [2])) mod interfaces__unsigned_64__modulus, [3] := (element(w, [3]
          ) + element(ks, [3])) mod interfaces__unsigned_64__modulus, [4] := (
          element(w, [4]) + element(ks, [4])) mod 
          interfaces__unsigned_64__modulus, [5] := (element(w, [5]) + element(
          ks, [5])) mod interfaces__unsigned_64__modulus, [6] := (element(w, [6]
          ) + element(ks, [6])) mod interfaces__unsigned_64__modulus, [7] := (
          element(w, [7]) + element(ks, [7])) mod 
          interfaces__unsigned_64__modulus), [wcnt - 3]) + element(ts, [0])) 
          mod interfaces__unsigned_64__modulus <= 18446744073709551615
-S-  Applied substitution rule do_first_key_rules(21).
     This was achieved by replacing all occurrences of spark__crypto__i3__first 
          by:
          0.
<S>  New H4:  for_all(i___1 : integer, 0 <= i___1 and i___1 <= 
          spark__crypto__i3__last -> 0 <= element(ts, [i___1]) and element(ts, [
          i___1]) <= 18446744073709551615)
<S>  New C3:  true
-S-  Applied substitution rule do_first_key_rules(22).
     This was achieved by replacing all occurrences of spark__crypto__i3__last 
          by:
          2.
<S>  New H4:  for_all(i___1 : integer, 0 <= i___1 and i___1 <= 2 -> 0 <= 
          element(ts, [i___1]) and element(ts, [i___1]) <= 18446744073709551615)
<S>  New C4:  true
-S-  Applied substitution rule do_first_key_rules(26).
     This was achieved by replacing all occurrences of spark__crypto__i8__first 
          by:
          0.
<S>  New H9:  true
<S>  New H15:  true
<S>  New H21:  true
<S>  New H27:  true
<S>  New H33:  true
<S>  New H39:  true
<S>  New H45:  true
<S>  New H51:  true
<S>  New H2:  for_all(i___1 : integer, 0 <= i___1 and i___1 <= 
          spark__crypto__i8__last -> 0 <= element(w, [i___1]) and element(w, [
          i___1]) <= 18446744073709551615)
<S>  New C5:  wcnt >= 3
<S>  New C9:  wcnt >= 3
-S-  Applied substitution rule do_first_key_rules(1).
     This was achieved by replacing all occurrences of wcnt by:
          8.
<S>  New C6:  5 <= spark__crypto__i8__last
<S>  New C7:  5 >= integer__base__first
<S>  New C8:  5 <= integer__base__last
<S>  New C10:  5 <= spark__crypto__i8__last
<S>  New C11:  5 >= integer__base__first
<S>  New C12:  5 <= integer__base__last
<S>  New C1:  ((element(w, [5]) + element(ks, [5])) mod 
          interfaces__unsigned_64__modulus + element(ts, [0])) mod 
          interfaces__unsigned_64__modulus >= 0
<S>  New C2:  ((element(w, [5]) + element(ks, [5])) mod 
          interfaces__unsigned_64__modulus + element(ts, [0])) mod 
          interfaces__unsigned_64__modulus <= 18446744073709551615
<S>  New C5:  true
<S>  New C9:  true
-S-  Applied substitution rule do_first_key_rules(27).
     This was achieved by replacing all occurrences of spark__crypto__i8__last 
          by:
          7.
<S>  New H10:  true
<S>  New H16:  true
<S>  New H22:  true
<S>  New H28:  true
<S>  New H34:  true
<S>  New H40:  true
<S>  New H46:  true
<S>  New H52:  true
<S>  New H2:  for_all(i___1 : integer, 0 <= i___1 and i___1 <= 7 -> 0 <= 
          element(w, [i___1]) and element(w, [i___1]) <= 18446744073709551615)
<S>  New C6:  true
<S>  New C10:  true
-S-  Applied substitution rule do_first_key_rules(5).
     This was achieved by replacing all occurrences of integer__base__first by:
          - 2147483648.
<S>  New C7:  true
<S>  New C11:  true
-S-  Applied substitution rule do_first_key_rules(6).
     This was achieved by replacing all occurrences of integer__base__last by:
          2147483647.
<S>  New C8:  true
<S>  New C12:  true
***  Proved C3:  true
***  Proved C4:  true
***  Proved C5:  true
***  Proved C9:  true
***  Proved C6:  true
***  Proved C10:  true
***  Proved C7:  true
***  Proved C11:  true
***  Proved C8:  true
***  Proved C12:  true
-S-  Applied substitution rule do_first_key_rules(13).
     This was achieved by replacing all occurrences of 
          interfaces__unsigned_64__modulus by:
          18446744073709551616.
<S>  New H5:  (element(w, [7]) + element(ks, [7])) mod 18446744073709551616 >= 0
<S>  New H6:  (element(w, [7]) + element(ks, [7])) mod 18446744073709551616 <= 
          18446744073709551615
<S>  New H11:  (element(w, [6]) + element(ks, [6])) mod 18446744073709551616 >= 
          0
<S>  New H12:  (element(w, [6]) + element(ks, [6])) mod 18446744073709551616 <= 
          18446744073709551615
<S>  New H17:  (element(w, [5]) + element(ks, [5])) mod 18446744073709551616 >= 
          0
<S>  New H18:  (element(w, [5]) + element(ks, [5])) mod 18446744073709551616 <= 
          18446744073709551615
<S>  New H23:  (element(w, [4]) + element(ks, [4])) mod 18446744073709551616 >= 
          0
<S>  New H24:  (element(w, [4]) + element(ks, [4])) mod 18446744073709551616 <= 
          18446744073709551615
<S>  New H29:  (element(w, [3]) + element(ks, [3])) mod 18446744073709551616 >= 
          0
<S>  New H30:  (element(w, [3]) + element(ks, [3])) mod 18446744073709551616 <= 
          18446744073709551615
<S>  New H35:  (element(w, [2]) + element(ks, [2])) mod 18446744073709551616 >= 
          0
<S>  New H36:  (element(w, [2]) + element(ks, [2])) mod 18446744073709551616 <= 
          18446744073709551615
<S>  New H41:  (element(w, [1]) + element(ks, [1])) mod 18446744073709551616 >= 
          0
<S>  New H42:  (element(w, [1]) + element(ks, [1])) mod 18446744073709551616 <= 
          18446744073709551615
<S>  New H47:  (element(w, [0]) + element(ks, [0])) mod 18446744073709551616 >= 
          0
<S>  New H48:  (element(w, [0]) + element(ks, [0])) mod 18446744073709551616 <= 
          18446744073709551615
<S>  New C1:  ((element(w, [5]) + element(ks, [5])) mod 18446744073709551616 + 
          element(ts, [0])) mod 18446744073709551616 >= 0
<S>  New C2:  ((element(w, [5]) + element(ks, [5])) mod 18446744073709551616 + 
          element(ts, [0])) mod 18446744073709551616 <= 18446744073709551615
-S-  Applied substitution rule do_first_key_rules(31).
     This was achieved by replacing all occurrences of spark__crypto__i9__first 
          by:
          0.
<S>  New H3:  for_all(i___1 : integer, 0 <= i___1 and i___1 <= 
          spark__crypto__i9__last -> 0 <= element(ks, [i___1]) and element(ks, [
          i___1]) <= 18446744073709551615)
<S>  New H7:  true
<S>  New H13:  true
<S>  New H19:  true
<S>  New H25:  true
<S>  New H31:  true
<S>  New H37:  true
<S>  New H43:  true
<S>  New H49:  true
-S-  Applied substitution rule do_first_key_rules(32).
     This was achieved by replacing all occurrences of spark__crypto__i9__last 
          by:
          8.
<S>  New H8:  true
<S>  New H14:  true
<S>  New H20:  true
<S>  New H26:  true
<S>  New H32:  true
<S>  New H38:  true
<S>  New H44:  true
<S>  New H50:  true
<S>  New H3:  for_all(i___1 : integer, 0 <= i___1 and i___1 <= 8 -> 0 <= 
          element(ks, [i___1]) and element(ks, [i___1]) <= 18446744073709551615)
***  Proved C1:  ((element(w, [5]) + element(ks, [5])) mod 18446744073709551616 
          + element(ts, [0])) mod 18446744073709551616 >= 0
***  Proved C2:  ((element(w, [5]) + element(ks, [5])) mod 18446744073709551616 
          + element(ts, [0])) mod 18446744073709551616 <= 18446744073709551615
***  PROVED VC.


@@@@@@@@@@  VC: procedure_do_first_key_injection_3.  @@@@@@@@@@
%%%  Simplified H2 on reading formula in, to give:
     %%%  H2:  for_all(i___1 : integer, spark__crypto__i8__first <= i___1 and 
          i___1 <= spark__crypto__i8__last -> spark__unsigned__u64__first <= 
          element(w, [i___1]) and element(w, [i___1]) <= 
          spark__unsigned__u64__last)
%%%  Simplified H3 on reading formula in, to give:
     %%%  H3:  for_all(i___1 : integer, spark__crypto__i9__first <= i___1 and 
          i___1 <= spark__crypto__i9__last -> spark__unsigned__u64__first <= 
          element(ks, [i___1]) and element(ks, [i___1]) <= 
          spark__unsigned__u64__last)
%%%  Simplified H4 on reading formula in, to give:
     %%%  H4:  for_all(i___1 : integer, spark__crypto__i3__first <= i___1 and 
          i___1 <= spark__crypto__i3__last -> spark__unsigned__u64__first <= 
          element(ts, [i___1]) and element(ts, [i___1]) <= 
          spark__unsigned__u64__last)
---  Hypothesis H61 has been replaced by "true".  (It is already present, as 
          H57).
---  Hypothesis H62 has been replaced by "true".  (It is already present, as 
          H58).
---  Hypothesis H63 has been replaced by "true".  (It is already present, as 
          H59).
---  Hypothesis H64 has been replaced by "true".  (It is already present, as 
          H60).
%%%  Simplified C1 on reading formula in, to give:
     %%%  C1:  (element(mk__spark__crypto__u64_seq([0] := (element(w, [0]) + 
          element(ks, [0])) mod interfaces__unsigned_64__modulus, [1] := (
          element(w, [1]) + element(ks, [1])) mod 
          interfaces__unsigned_64__modulus, [2] := (element(w, [2]) + element(
          ks, [2])) mod interfaces__unsigned_64__modulus, [3] := (element(w, [3]
          ) + element(ks, [3])) mod interfaces__unsigned_64__modulus, [4] := (
          element(w, [4]) + element(ks, [4])) mod 
          interfaces__unsigned_64__modulus, [5] := (element(w, [5]) + element(
          ks, [5])) mod interfaces__unsigned_64__modulus, [6] := (element(w, [6]
          ) + element(ks, [6])) mod interfaces__unsigned_64__modulus, [7] := (
          element(w, [7]) + element(ks, [7])) mod 
          interfaces__unsigned_64__modulus), [wcnt - 2]) + element(ts, [1])) 
          mod interfaces__unsigned_64__modulus >= spark__unsigned__u64__first
%%%  Simplified C2 on reading formula in, to give:
     %%%  C2:  (element(mk__spark__crypto__u64_seq([0] := (element(w, [0]) + 
          element(ks, [0])) mod interfaces__unsigned_64__modulus, [1] := (
          element(w, [1]) + element(ks, [1])) mod 
          interfaces__unsigned_64__modulus, [2] := (element(w, [2]) + element(
          ks, [2])) mod interfaces__unsigned_64__modulus, [3] := (element(w, [3]
          ) + element(ks, [3])) mod interfaces__unsigned_64__modulus, [4] := (
          element(w, [4]) + element(ks, [4])) mod 
          interfaces__unsigned_64__modulus, [5] := (element(w, [5]) + element(
          ks, [5])) mod interfaces__unsigned_64__modulus, [6] := (element(w, [6]
          ) + element(ks, [6])) mod interfaces__unsigned_64__modulus, [7] := (
          element(w, [7]) + element(ks, [7])) mod 
          interfaces__unsigned_64__modulus), [wcnt - 2]) + element(ts, [1])) 
          mod interfaces__unsigned_64__modulus <= spark__unsigned__u64__last
***  Proved C3:  1 >= spark__crypto__i3__first
     using hypothesis H55.
-S-  Applied substitution rule do_first_key_rules(15).
     This was achieved by replacing all occurrences of 
          spark__unsigned__u64__first by:
          0.
<S>  New H2:  for_all(i___1 : integer, spark__crypto__i8__first <= i___1 and 
          i___1 <= spark__crypto__i8__last -> 0 <= element(w, [i___1]) and 
          element(w, [i___1]) <= spark__unsigned__u64__last)
<S>  New H3:  for_all(i___1 : integer, spark__crypto__i9__first <= i___1 and 
          i___1 <= spark__crypto__i9__last -> 0 <= element(ks, [i___1]) and 
          element(ks, [i___1]) <= spark__unsigned__u64__last)
<S>  New H4:  for_all(i___1 : integer, spark__crypto__i3__first <= i___1 and 
          i___1 <= spark__crypto__i3__last -> 0 <= element(ts, [i___1]) and 
          element(ts, [i___1]) <= spark__unsigned__u64__last)
<S>  New H5:  (element(w, [7]) + element(ks, [7])) mod 
          interfaces__unsigned_64__modulus >= 0
<S>  New H11:  (element(w, [6]) + element(ks, [6])) mod 
          interfaces__unsigned_64__modulus >= 0
<S>  New H17:  (element(w, [5]) + element(ks, [5])) mod 
          interfaces__unsigned_64__modulus >= 0
<S>  New H23:  (element(w, [4]) + element(ks, [4])) mod 
          interfaces__unsigned_64__modulus >= 0
<S>  New H29:  (element(w, [3]) + element(ks, [3])) mod 
          interfaces__unsigned_64__modulus >= 0
<S>  New H35:  (element(w, [2]) + element(ks, [2])) mod 
          interfaces__unsigned_64__modulus >= 0
<S>  New H41:  (element(w, [1]) + element(ks, [1])) mod 
          interfaces__unsigned_64__modulus >= 0
<S>  New H47:  (element(w, [0]) + element(ks, [0])) mod 
          interfaces__unsigned_64__modulus >= 0
<S>  New H53:  (element(mk__spark__crypto__u64_seq([0] := (element(w, [0]) + 
          element(ks, [0])) mod interfaces__unsigned_64__modulus, [1] := (
          element(w, [1]) + element(ks, [1])) mod 
          interfaces__unsigned_64__modulus, [2] := (element(w, [2]) + element(
          ks, [2])) mod interfaces__unsigned_64__modulus, [3] := (element(w, [3]
          ) + element(ks, [3])) mod interfaces__unsigned_64__modulus, [4] := (
          element(w, [4]) + element(ks, [4])) mod 
          interfaces__unsigned_64__modulus, [5] := (element(w, [5]) + element(
          ks, [5])) mod interfaces__unsigned_64__modulus, [6] := (element(w, [6]
          ) + element(ks, [6])) mod interfaces__unsigned_64__modulus, [7] := (
          element(w, [7]) + element(ks, [7])) mod 
          interfaces__unsigned_64__modulus), [wcnt - 3]) + element(ts, [0])) 
          mod interfaces__unsigned_64__modulus >= 0
<S>  New C1:  (element(mk__spark__crypto__u64_seq([0] := (element(w, [0]) + 
          element(ks, [0])) mod interfaces__unsigned_64__modulus, [1] := (
          element(w, [1]) + element(ks, [1])) mod 
          interfaces__unsigned_64__modulus, [2] := (element(w, [2]) + element(
          ks, [2])) mod interfaces__unsigned_64__modulus, [3] := (element(w, [3]
          ) + element(ks, [3])) mod interfaces__unsigned_64__modulus, [4] := (
          element(w, [4]) + element(ks, [4])) mod 
          interfaces__unsigned_64__modulus, [5] := (element(w, [5]) + element(
          ks, [5])) mod interfaces__unsigned_64__modulus, [6] := (element(w, [6]
          ) + element(ks, [6])) mod interfaces__unsigned_64__modulus, [7] := (
          element(w, [7]) + element(ks, [7])) mod 
          interfaces__unsigned_64__modulus), [wcnt - 2]) + element(ts, [1])) 
          mod interfaces__unsigned_64__modulus >= 0
-S-  Applied substitution rule do_first_key_rules(16).
     This was achieved by replacing all occurrences of 
          spark__unsigned__u64__last by:
          18446744073709551615.
<S>  New H6:  (element(w, [7]) + element(ks, [7])) mod 
          interfaces__unsigned_64__modulus <= 18446744073709551615
<S>  New H12:  (element(w, [6]) + element(ks, [6])) mod 
          interfaces__unsigned_64__modulus <= 18446744073709551615
<S>  New H18:  (element(w, [5]) + element(ks, [5])) mod 
          interfaces__unsigned_64__modulus <= 18446744073709551615
<S>  New H24:  (element(w, [4]) + element(ks, [4])) mod 
          interfaces__unsigned_64__modulus <= 18446744073709551615
<S>  New H30:  (element(w, [3]) + element(ks, [3])) mod 
          interfaces__unsigned_64__modulus <= 18446744073709551615
<S>  New H36:  (element(w, [2]) + element(ks, [2])) mod 
          interfaces__unsigned_64__modulus <= 18446744073709551615
<S>  New H42:  (element(w, [1]) + element(ks, [1])) mod 
          interfaces__unsigned_64__modulus <= 18446744073709551615
<S>  New H48:  (element(w, [0]) + element(ks, [0])) mod 
          interfaces__unsigned_64__modulus <= 18446744073709551615
<S>  New H54:  (element(mk__spark__crypto__u64_seq([0] := (element(w, [0]) + 
          element(ks, [0])) mod interfaces__unsigned_64__modulus, [1] := (
          element(w, [1]) + element(ks, [1])) mod 
          interfaces__unsigned_64__modulus, [2] := (element(w, [2]) + element(
          ks, [2])) mod interfaces__unsigned_64__modulus, [3] := (element(w, [3]
          ) + element(ks, [3])) mod interfaces__unsigned_64__modulus, [4] := (
          element(w, [4]) + element(ks, [4])) mod 
          interfaces__unsigned_64__modulus, [5] := (element(w, [5]) + element(
          ks, [5])) mod interfaces__unsigned_64__modulus, [6] := (element(w, [6]
          ) + element(ks, [6])) mod interfaces__unsigned_64__modulus, [7] := (
          element(w, [7]) + element(ks, [7])) mod 
          interfaces__unsigned_64__modulus), [wcnt - 3]) + element(ts, [0])) 
          mod interfaces__unsigned_64__modulus <= 18446744073709551615
<S>  New H2:  for_all(i___1 : integer, spark__crypto__i8__first <= i___1 and 
          i___1 <= spark__crypto__i8__last -> 0 <= element(w, [i___1]) and 
          element(w, [i___1]) <= 18446744073709551615)
<S>  New H3:  for_all(i___1 : integer, spark__crypto__i9__first <= i___1 and 
          i___1 <= spark__crypto__i9__last -> 0 <= element(ks, [i___1]) and 
          element(ks, [i___1]) <= 18446744073709551615)
<S>  New H4:  for_all(i___1 : integer, spark__crypto__i3__first <= i___1 and 
          i___1 <= spark__crypto__i3__last -> 0 <= element(ts, [i___1]) and 
          element(ts, [i___1]) <= 18446744073709551615)
<S>  New C2:  (element(mk__spark__crypto__u64_seq([0] := (element(w, [0]) + 
          element(ks, [0])) mod interfaces__unsigned_64__modulus, [1] := (
          element(w, [1]) + element(ks, [1])) mod 
          interfaces__unsigned_64__modulus, [2] := (element(w, [2]) + element(
          ks, [2])) mod interfaces__unsigned_64__modulus, [3] := (element(w, [3]
          ) + element(ks, [3])) mod interfaces__unsigned_64__modulus, [4] := (
          element(w, [4]) + element(ks, [4])) mod 
          interfaces__unsigned_64__modulus, [5] := (element(w, [5]) + element(
          ks, [5])) mod interfaces__unsigned_64__modulus, [6] := (element(w, [6]
          ) + element(ks, [6])) mod interfaces__unsigned_64__modulus, [7] := (
          element(w, [7]) + element(ks, [7])) mod 
          interfaces__unsigned_64__modulus), [wcnt - 2]) + element(ts, [1])) 
          mod interfaces__unsigned_64__modulus <= 18446744073709551615
-S-  Applied substitution rule do_first_key_rules(22).
     This was achieved by replacing all occurrences of spark__crypto__i3__last 
          by:
          2.
<S>  New H56:  true
<S>  New H4:  for_all(i___1 : integer, spark__crypto__i3__first <= i___1 and 
          i___1 <= 2 -> 0 <= element(ts, [i___1]) and element(ts, [i___1]) <= 
          18446744073709551615)
<S>  New C4:  true
-S-  Applied substitution rule do_first_key_rules(26).
     This was achieved by replacing all occurrences of spark__crypto__i8__first 
          by:
          0.
<S>  New H9:  true
<S>  New H15:  true
<S>  New H21:  true
<S>  New H27:  true
<S>  New H33:  true
<S>  New H39:  true
<S>  New H45:  true
<S>  New H51:  true
<S>  New H57:  wcnt >= 3
<S>  New H2:  for_all(i___1 : integer, 0 <= i___1 and i___1 <= 
          spark__crypto__i8__last -> 0 <= element(w, [i___1]) and element(w, [
          i___1]) <= 18446744073709551615)
<S>  New C5:  wcnt >= 2
<S>  New C9:  wcnt >= 2
-S-  Applied substitution rule do_first_key_rules(1).
     This was achieved by replacing all occurrences of wcnt by:
          8.
<S>  New H58:  5 <= spark__crypto__i8__last
<S>  New H59:  5 >= integer__base__first
<S>  New H60:  5 <= integer__base__last
<S>  New H53:  ((element(w, [5]) + element(ks, [5])) mod 
          interfaces__unsigned_64__modulus + element(ts, [0])) mod 
          interfaces__unsigned_64__modulus >= 0
<S>  New H54:  ((element(w, [5]) + element(ks, [5])) mod 
          interfaces__unsigned_64__modulus + element(ts, [0])) mod 
          interfaces__unsigned_64__modulus <= 18446744073709551615
<S>  New H57:  true
<S>  New C6:  6 <= spark__crypto__i8__last
<S>  New C7:  6 >= integer__base__first
<S>  New C8:  6 <= integer__base__last
<S>  New C10:  6 <= spark__crypto__i8__last
<S>  New C11:  6 >= integer__base__first
<S>  New C12:  6 <= integer__base__last
<S>  New C1:  ((element(w, [6]) + element(ks, [6])) mod 
          interfaces__unsigned_64__modulus + element(ts, [1])) mod 
          interfaces__unsigned_64__modulus >= 0
<S>  New C2:  ((element(w, [6]) + element(ks, [6])) mod 
          interfaces__unsigned_64__modulus + element(ts, [1])) mod 
          interfaces__unsigned_64__modulus <= 18446744073709551615
<S>  New C5:  true
<S>  New C9:  true
-S-  Applied substitution rule do_first_key_rules(27).
     This was achieved by replacing all occurrences of spark__crypto__i8__last 
          by:
          7.
<S>  New H10:  true
<S>  New H16:  true
<S>  New H22:  true
<S>  New H28:  true
<S>  New H34:  true
<S>  New H40:  true
<S>  New H46:  true
<S>  New H52:  true
<S>  New H2:  for_all(i___1 : integer, 0 <= i___1 and i___1 <= 7 -> 0 <= 
          element(w, [i___1]) and element(w, [i___1]) <= 18446744073709551615)
<S>  New H58:  true
<S>  New C6:  true
<S>  New C10:  true
-S-  Applied substitution rule do_first_key_rules(5).
     This was achieved by replacing all occurrences of integer__base__first by:
          - 2147483648.
<S>  New H59:  true
<S>  New C7:  true
<S>  New C11:  true
-S-  Applied substitution rule do_first_key_rules(6).
     This was achieved by replacing all occurrences of integer__base__last by:
          2147483647.
<S>  New H60:  true
<S>  New C8:  true
<S>  New C12:  true
***  Proved C4:  true
***  Proved C5:  true
***  Proved C9:  true
***  Proved C6:  true
***  Proved C10:  true
***  Proved C7:  true
***  Proved C11:  true
***  Proved C8:  true
***  Proved C12:  true
-S-  Applied substitution rule do_first_key_rules(13).
     This was achieved by replacing all occurrences of 
          interfaces__unsigned_64__modulus by:
          18446744073709551616.
<S>  New H5:  (element(w, [7]) + element(ks, [7])) mod 18446744073709551616 >= 0
<S>  New H6:  (element(w, [7]) + element(ks, [7])) mod 18446744073709551616 <= 
          18446744073709551615
<S>  New H11:  (element(w, [6]) + element(ks, [6])) mod 18446744073709551616 >= 
          0
<S>  New H12:  (element(w, [6]) + element(ks, [6])) mod 18446744073709551616 <= 
          18446744073709551615
<S>  New H17:  (element(w, [5]) + element(ks, [5])) mod 18446744073709551616 >= 
          0
<S>  New H18:  (element(w, [5]) + element(ks, [5])) mod 18446744073709551616 <= 
          18446744073709551615
<S>  New H23:  (element(w, [4]) + element(ks, [4])) mod 18446744073709551616 >= 
          0
<S>  New H24:  (element(w, [4]) + element(ks, [4])) mod 18446744073709551616 <= 
          18446744073709551615
<S>  New H29:  (element(w, [3]) + element(ks, [3])) mod 18446744073709551616 >= 
          0
<S>  New H30:  (element(w, [3]) + element(ks, [3])) mod 18446744073709551616 <= 
          18446744073709551615
<S>  New H35:  (element(w, [2]) + element(ks, [2])) mod 18446744073709551616 >= 
          0
<S>  New H36:  (element(w, [2]) + element(ks, [2])) mod 18446744073709551616 <= 
          18446744073709551615
<S>  New H41:  (element(w, [1]) + element(ks, [1])) mod 18446744073709551616 >= 
          0
<S>  New H42:  (element(w, [1]) + element(ks, [1])) mod 18446744073709551616 <= 
          18446744073709551615
<S>  New H47:  (element(w, [0]) + element(ks, [0])) mod 18446744073709551616 >= 
          0
<S>  New H48:  (element(w, [0]) + element(ks, [0])) mod 18446744073709551616 <= 
          18446744073709551615
<S>  New H53:  ((element(w, [5]) + element(ks, [5])) mod 18446744073709551616 + 
          element(ts, [0])) mod 18446744073709551616 >= 0
<S>  New H54:  ((element(w, [5]) + element(ks, [5])) mod 18446744073709551616 + 
          element(ts, [0])) mod 18446744073709551616 <= 18446744073709551615
<S>  New C1:  ((element(w, [6]) + element(ks, [6])) mod 18446744073709551616 + 
          element(ts, [1])) mod 18446744073709551616 >= 0
<S>  New C2:  ((element(w, [6]) + element(ks, [6])) mod 18446744073709551616 + 
          element(ts, [1])) mod 18446744073709551616 <= 18446744073709551615
-S-  Applied substitution rule do_first_key_rules(21).
     This was achieved by replacing all occurrences of spark__crypto__i3__first 
          by:
          0.
<S>  New H4:  for_all(i___1 : integer, 0 <= i___1 and i___1 <= 2 -> 0 <= 
          element(ts, [i___1]) and element(ts, [i___1]) <= 18446744073709551615)
<S>  New H55:  true
-S-  Applied substitution rule do_first_key_rules(31).
     This was achieved by replacing all occurrences of spark__crypto__i9__first 
          by:
          0.
<S>  New H3:  for_all(i___1 : integer, 0 <= i___1 and i___1 <= 
          spark__crypto__i9__last -> 0 <= element(ks, [i___1]) and element(ks, [
          i___1]) <= 18446744073709551615)
<S>  New H7:  true
<S>  New H13:  true
<S>  New H19:  true
<S>  New H25:  true
<S>  New H31:  true
<S>  New H37:  true
<S>  New H43:  true
<S>  New H49:  true
-S-  Applied substitution rule do_first_key_rules(32).
     This was achieved by replacing all occurrences of spark__crypto__i9__last 
          by:
          8.
<S>  New H8:  true
<S>  New H14:  true
<S>  New H20:  true
<S>  New H26:  true
<S>  New H32:  true
<S>  New H38:  true
<S>  New H44:  true
<S>  New H50:  true
<S>  New H3:  for_all(i___1 : integer, 0 <= i___1 and i___1 <= 8 -> 0 <= 
          element(ks, [i___1]) and element(ks, [i___1]) <= 18446744073709551615)
***  Proved C1:  ((element(w, [6]) + element(ks, [6])) mod 18446744073709551616 
          + element(ts, [1])) mod 18446744073709551616 >= 0
***  Proved C2:  ((element(w, [6]) + element(ks, [6])) mod 18446744073709551616 
          + element(ts, [1])) mod 18446744073709551616 <= 18446744073709551615
***  PROVED VC.


@@@@@@@@@@  VC: procedure_do_first_key_injection_4.  @@@@@@@@@@
***  Proved C1:  true
***  PROVED VC.

