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

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



SPARK Simplifier Pro Edition


procedure Skein.Skein_512_Update.Copy_Msg_To_B






@@@@@@@@@@  VC: procedure_copy_msg_to_b_1.  @@@@@@@@@@
%%%  Simplified H11 on reading formula in, to give:
     %%%  H11:  for_all(i___2 : integer, skein_512_block_bytes_index__first <= 
          i___2 and i___2 <= skein_512_block_bytes_index__last -> 
          spark__unsigned__byte__first <= element(fld_b(ctx), [i___2]) and 
          element(fld_b(ctx), [i___2]) <= spark__unsigned__byte__last)
%%%  Simplified H12 on reading formula in, to give:
     %%%  H12:  for_all(i___1 : integer, skein_512_state_words_index__first <= 
          i___1 and i___1 <= skein_512_state_words_index__last -> 
          spark__unsigned__u64__first <= element(fld_x(ctx), [i___1]) and 
          element(fld_x(ctx), [i___1]) <= spark__unsigned__u64__last)
%%%  Simplified H30 on reading formula in, to give:
     %%%  H30:  for_all(i___1 : integer, msg__index__subtype__1__first <= i___1 
          and i___1 <= msg__index__subtype__1__last -> 
          spark__unsigned__byte__first <= element(msg, [i___1]) and element(
          msg, [i___1]) <= spark__unsigned__byte__last)
***  Proved C1:  msg_offset >= natural__first
     using hypothesis H7.
***  Proved C2:  msg_offset <= natural__last
     using hypothesis H8.
***  PROVED VC.


@@@@@@@@@@  VC: procedure_copy_msg_to_b_2.  @@@@@@@@@@
%%%  Simplified H11 on reading formula in, to give:
     %%%  H11:  for_all(i___2 : integer, skein_512_block_bytes_index__first <= 
          i___2 and i___2 <= skein_512_block_bytes_index__last -> 
          spark__unsigned__byte__first <= element(fld_b(ctx), [i___2]) and 
          element(fld_b(ctx), [i___2]) <= spark__unsigned__byte__last)
%%%  Simplified H12 on reading formula in, to give:
     %%%  H12:  for_all(i___1 : integer, skein_512_state_words_index__first <= 
          i___1 and i___1 <= skein_512_state_words_index__last -> 
          spark__unsigned__u64__first <= element(fld_x(ctx), [i___1]) and 
          element(fld_x(ctx), [i___1]) <= spark__unsigned__u64__last)
%%%  Simplified H30 on reading formula in, to give:
     %%%  H30:  for_all(i___1 : integer, msg__index__subtype__1__first <= i___1 
          and i___1 <= msg__index__subtype__1__last -> 
          spark__unsigned__byte__first <= element(msg, [i___1]) and element(
          msg, [i___1]) <= spark__unsigned__byte__last)
---  Hypothesis H32 has been replaced by "true".  (It is already present, as H7)
          .
---  Hypothesis H33 has been replaced by "true".  (It is already present, as H8)
          .
-S-  Applied substitution rule copy_msg_to__rules(96).
     This was achieved by replacing all occurrences of 
          skein_512_block_bytes_index__first by:
          0.
<S>  New H11:  for_all(i___2 : integer, 0 <= i___2 and i___2 <= 
          skein_512_block_bytes_index__last -> spark__unsigned__byte__first <= 
          element(fld_b(ctx), [i___2]) and element(fld_b(ctx), [i___2]) <= 
          spark__unsigned__byte__last)
<S>  New C1:  fld_byte_count(fld_h(ctx)) >= 0
-S-  Applied substitution rule copy_msg_to__rules(97).
     This was achieved by replacing all occurrences of 
          skein_512_block_bytes_index__last by:
          63.
<S>  New H6:  fld_byte_count(fld_h(ctx)) + (num_bytes - 1) <= 63
<S>  New H11:  for_all(i___2 : integer, 0 <= i___2 and i___2 <= 63 -> 
          spark__unsigned__byte__first <= element(fld_b(ctx), [i___2]) and 
          element(fld_b(ctx), [i___2]) <= spark__unsigned__byte__last)
<S>  New C2:  fld_byte_count(fld_h(ctx)) <= 63
-S-  Applied substitution rule copy_msg_to__rules(7).
     This was achieved by replacing all occurrences of natural__first by:
          0.
<S>  New H7:  msg_offset >= 0
<S>  New H9:  num_bytes >= 0
<S>  New H13:  fld_byte_count(fld_h(ctx)) >= 0
-S-  Applied substitution rule copy_msg_to__rules(8).
     This was achieved by replacing all occurrences of natural__last by:
          2147483647.
<S>  New H8:  msg_offset <= 2147483647
<S>  New H10:  num_bytes <= 2147483647
<S>  New H14:  fld_byte_count(fld_h(ctx)) <= 2147483647
-S-  Applied substitution rule copy_msg_to__rules(40).
     This was achieved by replacing all occurrences of 
          spark__unsigned__u6__first by:
          0.
<S>  New H19:  fld_field_type(fld_tweak_words(fld_h(ctx))) >= 0
-S-  Applied substitution rule copy_msg_to__rules(41).
     This was achieved by replacing all occurrences of 
          spark__unsigned__u6__last by:
          63.
<S>  New H20:  fld_field_type(fld_tweak_words(fld_h(ctx))) <= 63
-S-  Applied substitution rule copy_msg_to__rules(46).
     This was achieved by replacing all occurrences of 
          spark__unsigned__u7__first by:
          0.
<S>  New H22:  fld_tree_level(fld_tweak_words(fld_h(ctx))) >= 0
-S-  Applied substitution rule copy_msg_to__rules(47).
     This was achieved by replacing all occurrences of 
          spark__unsigned__u7__last by:
          127.
<S>  New H23:  fld_tree_level(fld_tweak_words(fld_h(ctx))) <= 127
-S-  Applied substitution rule copy_msg_to__rules(52).
     This was achieved by replacing all occurrences of 
          spark__unsigned__byte__first by:
          0.
<S>  New H11:  for_all(i___2 : integer, 0 <= i___2 and i___2 <= 63 -> 0 <= 
          element(fld_b(ctx), [i___2]) and element(fld_b(ctx), [i___2]) <= 
          spark__unsigned__byte__last)
<S>  New H30:  for_all(i___1 : integer, msg__index__subtype__1__first <= i___1 
          and i___1 <= msg__index__subtype__1__last -> 0 <= element(msg, [i___1]
          ) and element(msg, [i___1]) <= spark__unsigned__byte__last)
-S-  Applied substitution rule copy_msg_to__rules(53).
     This was achieved by replacing all occurrences of 
          spark__unsigned__byte__last by:
          255.
<S>  New H11:  for_all(i___2 : integer, 0 <= i___2 and i___2 <= 63 -> 0 <= 
          element(fld_b(ctx), [i___2]) and element(fld_b(ctx), [i___2]) <= 255)
<S>  New H30:  for_all(i___1 : integer, msg__index__subtype__1__first <= i___1 
          and i___1 <= msg__index__subtype__1__last -> 0 <= element(msg, [i___1]
          ) and element(msg, [i___1]) <= 255)
-S-  Applied substitution rule copy_msg_to__rules(58).
     This was achieved by replacing all occurrences of 
          spark__unsigned__u16__first by:
          0.
<S>  New H24:  fld_reserved(fld_tweak_words(fld_h(ctx))) >= 0
-S-  Applied substitution rule copy_msg_to__rules(59).
     This was achieved by replacing all occurrences of 
          spark__unsigned__u16__last by:
          65535.
<S>  New H25:  fld_reserved(fld_tweak_words(fld_h(ctx))) <= 65535
-S-  Applied substitution rule copy_msg_to__rules(64).
     This was achieved by replacing all occurrences of 
          spark__unsigned__u32__first by:
          0.
<S>  New H26:  fld_byte_count_msb(fld_tweak_words(fld_h(ctx))) >= 0
-S-  Applied substitution rule copy_msg_to__rules(65).
     This was achieved by replacing all occurrences of 
          spark__unsigned__u32__last by:
          4294967295.
<S>  New H27:  fld_byte_count_msb(fld_tweak_words(fld_h(ctx))) <= 4294967295
-S-  Applied substitution rule copy_msg_to__rules(70).
     This was achieved by replacing all occurrences of 
          spark__unsigned__u64__first by:
          0.
<S>  New H12:  for_all(i___1 : integer, skein_512_state_words_index__first <= 
          i___1 and i___1 <= skein_512_state_words_index__last -> 0 <= element(
          fld_x(ctx), [i___1]) and element(fld_x(ctx), [i___1]) <= 
          spark__unsigned__u64__last)
<S>  New H28:  fld_byte_count_lsb(fld_tweak_words(fld_h(ctx))) >= 0
-S-  Applied substitution rule copy_msg_to__rules(71).
     This was achieved by replacing all occurrences of 
          spark__unsigned__u64__last by:
          18446744073709551615.
<S>  New H29:  fld_byte_count_lsb(fld_tweak_words(fld_h(ctx))) <= 
          18446744073709551615
<S>  New H12:  for_all(i___1 : integer, skein_512_state_words_index__first <= 
          i___1 and i___1 <= skein_512_state_words_index__last -> 0 <= element(
          fld_x(ctx), [i___1]) and element(fld_x(ctx), [i___1]) <= 
          18446744073709551615)
-S-  Applied substitution rule copy_msg_to__rules(81).
     This was achieved by replacing all occurrences of hash_bit_length__first 
          by:
          0.
<S>  New H15:  fld_hash_bit_len(fld_h(ctx)) >= 0
-S-  Applied substitution rule copy_msg_to__rules(82).
     This was achieved by replacing all occurrences of hash_bit_length__last by:
          2147483640.
<S>  New H16:  fld_hash_bit_len(fld_h(ctx)) <= 2147483640
-S-  Applied substitution rule copy_msg_to__rules(86).
     This was achieved by replacing all occurrences of 
          skein_512_state_words_index__first by:
          0.
<S>  New H12:  for_all(i___1 : integer, 0 <= i___1 and i___1 <= 
          skein_512_state_words_index__last -> 0 <= element(fld_x(ctx), [i___1])
           and element(fld_x(ctx), [i___1]) <= 18446744073709551615)
-S-  Applied substitution rule copy_msg_to__rules(87).
     This was achieved by replacing all occurrences of 
          skein_512_state_words_index__last by:
          7.
<S>  New H12:  for_all(i___1 : integer, 0 <= i___1 and i___1 <= 7 -> 0 <= 
          element(fld_x(ctx), [i___1]) and element(fld_x(ctx), [i___1]) <= 
          18446744073709551615)
***  Proved C1:  fld_byte_count(fld_h(ctx)) >= 0
     using hypothesis H13.
---  Eliminated hypothesis H17 (true-hypothesis).
---  Eliminated hypothesis H18 (true-hypothesis).
---  Eliminated hypothesis H21 (true-hypothesis).
---  Eliminated hypothesis H32 (true-hypothesis).
---  Eliminated hypothesis H33 (true-hypothesis).
---  Eliminated hypothesis H9 (redundant, given H31).
---  Eliminated hypothesis H10 (redundant, given H6 & H13).
---  Eliminated hypothesis H14 (redundant, given H6 & H31).
---  Eliminated hypothesis H15 (redundant, given H1).
***  Proved C2:  fld_byte_count(fld_h(ctx)) <= 63
     via its standard form, which is:
     Std.Fm C2:  - fld_byte_count(fld_h(ctx)) > - 64
     using hypotheses H6 & H31.
***  PROVED VC.


@@@@@@@@@@  VC: procedure_copy_msg_to_b_3.  @@@@@@@@@@
%%%  Simplified H11 on reading formula in, to give:
     %%%  H11:  for_all(i___2 : integer, skein_512_block_bytes_index__first <= 
          i___2 and i___2 <= skein_512_block_bytes_index__last -> 
          spark__unsigned__byte__first <= element(fld_b(ctx), [i___2]) and 
          element(fld_b(ctx), [i___2]) <= spark__unsigned__byte__last)
%%%  Simplified H12 on reading formula in, to give:
     %%%  H12:  for_all(i___1 : integer, skein_512_state_words_index__first <= 
          i___1 and i___1 <= skein_512_state_words_index__last -> 
          spark__unsigned__u64__first <= element(fld_x(ctx), [i___1]) and 
          element(fld_x(ctx), [i___1]) <= spark__unsigned__u64__last)
%%%  Simplified H30 on reading formula in, to give:
     %%%  H30:  for_all(i___1 : integer, msg__index__subtype__1__first <= i___1 
          and i___1 <= msg__index__subtype__1__last -> 
          spark__unsigned__byte__first <= element(msg, [i___1]) and element(
          msg, [i___1]) <= spark__unsigned__byte__last)
---  Hypothesis H32 has been replaced by "true".  (It is already present, as H7)
          .
---  Hypothesis H33 has been replaced by "true".  (It is already present, as H8)
          .
---  Hypothesis H36 has been replaced by "true".  (It is already present, as 
          H34).
---  Hypothesis H37 has been replaced by "true".  (It is already present, as 
          H35).
***  Proved C2:  fld_byte_count(fld_h(ctx)) + (num_bytes - 1) <= 
          skein_512_block_bytes_index__last
     using hypothesis H6.
-S-  Applied substitution rule copy_msg_to__rules(96).
     This was achieved by replacing all occurrences of 
          skein_512_block_bytes_index__first by:
          0.
<S>  New H11:  for_all(i___2 : integer, 0 <= i___2 and i___2 <= 
          skein_512_block_bytes_index__last -> spark__unsigned__byte__first <= 
          element(fld_b(ctx), [i___2]) and element(fld_b(ctx), [i___2]) <= 
          spark__unsigned__byte__last)
<S>  New H34:  fld_byte_count(fld_h(ctx)) >= 0
<S>  New C1:  fld_byte_count(fld_h(ctx)) + (num_bytes - 1) >= 0
-S-  Applied substitution rule copy_msg_to__rules(4).
     This was achieved by replacing all occurrences of integer__base__first by:
          - 2147483648.
<S>  New C3:  num_bytes >= - 2147483647
-S-  Applied substitution rule copy_msg_to__rules(5).
     This was achieved by replacing all occurrences of integer__base__last by:
          2147483647.
<S>  New C4:  num_bytes <= 2147483648
***  Proved C1:  fld_byte_count(fld_h(ctx)) + (num_bytes - 1) >= 0
     using hypotheses H31 & H34.
***  Proved C3:  num_bytes >= - 2147483647
     using hypothesis H31.
-S-  Applied substitution rule copy_msg_to__rules(7).
     This was achieved by replacing all occurrences of natural__first by:
          0.
<S>  New H7:  msg_offset >= 0
<S>  New H9:  num_bytes >= 0
<S>  New H13:  fld_byte_count(fld_h(ctx)) >= 0
-S-  Applied substitution rule copy_msg_to__rules(8).
     This was achieved by replacing all occurrences of natural__last by:
          2147483647.
<S>  New H8:  msg_offset <= 2147483647
<S>  New H10:  num_bytes <= 2147483647
<S>  New H14:  fld_byte_count(fld_h(ctx)) <= 2147483647
-S-  Applied substitution rule copy_msg_to__rules(40).
     This was achieved by replacing all occurrences of 
          spark__unsigned__u6__first by:
          0.
<S>  New H19:  fld_field_type(fld_tweak_words(fld_h(ctx))) >= 0
-S-  Applied substitution rule copy_msg_to__rules(41).
     This was achieved by replacing all occurrences of 
          spark__unsigned__u6__last by:
          63.
<S>  New H20:  fld_field_type(fld_tweak_words(fld_h(ctx))) <= 63
-S-  Applied substitution rule copy_msg_to__rules(46).
     This was achieved by replacing all occurrences of 
          spark__unsigned__u7__first by:
          0.
<S>  New H22:  fld_tree_level(fld_tweak_words(fld_h(ctx))) >= 0
-S-  Applied substitution rule copy_msg_to__rules(47).
     This was achieved by replacing all occurrences of 
          spark__unsigned__u7__last by:
          127.
<S>  New H23:  fld_tree_level(fld_tweak_words(fld_h(ctx))) <= 127
-S-  Applied substitution rule copy_msg_to__rules(52).
     This was achieved by replacing all occurrences of 
          spark__unsigned__byte__first by:
          0.
<S>  New H11:  for_all(i___2 : integer, 0 <= i___2 and i___2 <= 
          skein_512_block_bytes_index__last -> 0 <= element(fld_b(ctx), [i___2])
           and element(fld_b(ctx), [i___2]) <= spark__unsigned__byte__last)
<S>  New H30:  for_all(i___1 : integer, msg__index__subtype__1__first <= i___1 
          and i___1 <= msg__index__subtype__1__last -> 0 <= element(msg, [i___1]
          ) and element(msg, [i___1]) <= spark__unsigned__byte__last)
-S-  Applied substitution rule copy_msg_to__rules(53).
     This was achieved by replacing all occurrences of 
          spark__unsigned__byte__last by:
          255.
<S>  New H11:  for_all(i___2 : integer, 0 <= i___2 and i___2 <= 
          skein_512_block_bytes_index__last -> 0 <= element(fld_b(ctx), [i___2])
           and element(fld_b(ctx), [i___2]) <= 255)
<S>  New H30:  for_all(i___1 : integer, msg__index__subtype__1__first <= i___1 
          and i___1 <= msg__index__subtype__1__last -> 0 <= element(msg, [i___1]
          ) and element(msg, [i___1]) <= 255)
-S-  Applied substitution rule copy_msg_to__rules(58).
     This was achieved by replacing all occurrences of 
          spark__unsigned__u16__first by:
          0.
<S>  New H24:  fld_reserved(fld_tweak_words(fld_h(ctx))) >= 0
-S-  Applied substitution rule copy_msg_to__rules(59).
     This was achieved by replacing all occurrences of 
          spark__unsigned__u16__last by:
          65535.
<S>  New H25:  fld_reserved(fld_tweak_words(fld_h(ctx))) <= 65535
-S-  Applied substitution rule copy_msg_to__rules(64).
     This was achieved by replacing all occurrences of 
          spark__unsigned__u32__first by:
          0.
<S>  New H26:  fld_byte_count_msb(fld_tweak_words(fld_h(ctx))) >= 0
-S-  Applied substitution rule copy_msg_to__rules(65).
     This was achieved by replacing all occurrences of 
          spark__unsigned__u32__last by:
          4294967295.
<S>  New H27:  fld_byte_count_msb(fld_tweak_words(fld_h(ctx))) <= 4294967295
-S-  Applied substitution rule copy_msg_to__rules(70).
     This was achieved by replacing all occurrences of 
          spark__unsigned__u64__first by:
          0.
<S>  New H12:  for_all(i___1 : integer, skein_512_state_words_index__first <= 
          i___1 and i___1 <= skein_512_state_words_index__last -> 0 <= element(
          fld_x(ctx), [i___1]) and element(fld_x(ctx), [i___1]) <= 
          spark__unsigned__u64__last)
<S>  New H28:  fld_byte_count_lsb(fld_tweak_words(fld_h(ctx))) >= 0
-S-  Applied substitution rule copy_msg_to__rules(71).
     This was achieved by replacing all occurrences of 
          spark__unsigned__u64__last by:
          18446744073709551615.
<S>  New H29:  fld_byte_count_lsb(fld_tweak_words(fld_h(ctx))) <= 
          18446744073709551615
<S>  New H12:  for_all(i___1 : integer, skein_512_state_words_index__first <= 
          i___1 and i___1 <= skein_512_state_words_index__last -> 0 <= element(
          fld_x(ctx), [i___1]) and element(fld_x(ctx), [i___1]) <= 
          18446744073709551615)
-S-  Applied substitution rule copy_msg_to__rules(81).
     This was achieved by replacing all occurrences of hash_bit_length__first 
          by:
          0.
<S>  New H15:  fld_hash_bit_len(fld_h(ctx)) >= 0
-S-  Applied substitution rule copy_msg_to__rules(82).
     This was achieved by replacing all occurrences of hash_bit_length__last by:
          2147483640.
<S>  New H16:  fld_hash_bit_len(fld_h(ctx)) <= 2147483640
-S-  Applied substitution rule copy_msg_to__rules(86).
     This was achieved by replacing all occurrences of 
          skein_512_state_words_index__first by:
          0.
<S>  New H12:  for_all(i___1 : integer, 0 <= i___1 and i___1 <= 
          skein_512_state_words_index__last -> 0 <= element(fld_x(ctx), [i___1])
           and element(fld_x(ctx), [i___1]) <= 18446744073709551615)
-S-  Applied substitution rule copy_msg_to__rules(87).
     This was achieved by replacing all occurrences of 
          skein_512_state_words_index__last by:
          7.
<S>  New H12:  for_all(i___1 : integer, 0 <= i___1 and i___1 <= 7 -> 0 <= 
          element(fld_x(ctx), [i___1]) and element(fld_x(ctx), [i___1]) <= 
          18446744073709551615)
-S-  Applied substitution rule copy_msg_to__rules(97).
     This was achieved by replacing all occurrences of 
          skein_512_block_bytes_index__last by:
          63.
<S>  New H6:  fld_byte_count(fld_h(ctx)) + (num_bytes - 1) <= 63
<S>  New H35:  fld_byte_count(fld_h(ctx)) <= 63
<S>  New H11:  for_all(i___2 : integer, 0 <= i___2 and i___2 <= 63 -> 0 <= 
          element(fld_b(ctx), [i___2]) and element(fld_b(ctx), [i___2]) <= 255)
***  Proved C4:  num_bytes <= 2147483648
     using hypothesis H10.
***  PROVED VC.


@@@@@@@@@@  VC: procedure_copy_msg_to_b_4.  @@@@@@@@@@
%%%  Simplified H11 on reading formula in, to give:
     %%%  H11:  for_all(i___2 : integer, skein_512_block_bytes_index__first <= 
          i___2 and i___2 <= skein_512_block_bytes_index__last -> 
          spark__unsigned__byte__first <= element(fld_b(ctx), [i___2]) and 
          element(fld_b(ctx), [i___2]) <= spark__unsigned__byte__last)
%%%  Simplified H12 on reading formula in, to give:
     %%%  H12:  for_all(i___1 : integer, skein_512_state_words_index__first <= 
          i___1 and i___1 <= skein_512_state_words_index__last -> 
          spark__unsigned__u64__first <= element(fld_x(ctx), [i___1]) and 
          element(fld_x(ctx), [i___1]) <= spark__unsigned__u64__last)
%%%  Simplified H30 on reading formula in, to give:
     %%%  H30:  for_all(i___1 : integer, msg__index__subtype__1__first <= i___1 
          and i___1 <= msg__index__subtype__1__last -> 
          spark__unsigned__byte__first <= element(msg, [i___1]) and element(
          msg, [i___1]) <= spark__unsigned__byte__last)
---  Hypothesis H32 has been replaced by "true".  (It is already present, as H7)
          .
---  Hypothesis H33 has been replaced by "true".  (It is already present, as H8)
          .
---  Hypothesis H36 has been replaced by "true".  (It is already present, as 
          H34).
---  Hypothesis H37 has been replaced by "true".  (It is already present, as 
          H35).
---  Hypothesis H39 has been replaced by "true".  (It is already present, as H6)
          .
---  Hypothesis H42 has been replaced by "true".  (It is already present, as H7)
          .
---  Hypothesis H43 has been replaced by "true".  (It is already present, as H8)
          .
***  Proved C3:  num_bytes - 1 >= integer__base__first
     using hypothesis H40.
***  Proved C4:  num_bytes - 1 <= integer__base__last
     using hypothesis H41.
-S-  Applied substitution rule copy_msg_to__rules(7).
     This was achieved by replacing all occurrences of natural__first by:
          0.
<S>  New H7:  msg_offset >= 0
<S>  New H9:  num_bytes >= 0
<S>  New H13:  fld_byte_count(fld_h(ctx)) >= 0
<S>  New C1:  msg_offset + (num_bytes - 1) >= 0
-S-  Applied substitution rule copy_msg_to__rules(8).
     This was achieved by replacing all occurrences of natural__last by:
          2147483647.
<S>  New H8:  msg_offset <= 2147483647
<S>  New H10:  num_bytes <= 2147483647
<S>  New H14:  fld_byte_count(fld_h(ctx)) <= 2147483647
<S>  New C2:  msg_offset + (num_bytes - 1) <= 2147483647
***  Proved C1:  msg_offset + (num_bytes - 1) >= 0
     using hypotheses H7 & H31.
-S-  Applied substitution rule copy_msg_to__rules(4).
     This was achieved by replacing all occurrences of integer__base__first by:
          - 2147483648.
<S>  New H40:  num_bytes >= - 2147483647
-S-  Applied substitution rule copy_msg_to__rules(5).
     This was achieved by replacing all occurrences of integer__base__last by:
          2147483647.
<S>  New H41:  num_bytes <= 2147483648
-S-  Applied substitution rule copy_msg_to__rules(40).
     This was achieved by replacing all occurrences of 
          spark__unsigned__u6__first by:
          0.
<S>  New H19:  fld_field_type(fld_tweak_words(fld_h(ctx))) >= 0
-S-  Applied substitution rule copy_msg_to__rules(41).
     This was achieved by replacing all occurrences of 
          spark__unsigned__u6__last by:
          63.
<S>  New H20:  fld_field_type(fld_tweak_words(fld_h(ctx))) <= 63
-S-  Applied substitution rule copy_msg_to__rules(46).
     This was achieved by replacing all occurrences of 
          spark__unsigned__u7__first by:
          0.
<S>  New H22:  fld_tree_level(fld_tweak_words(fld_h(ctx))) >= 0
-S-  Applied substitution rule copy_msg_to__rules(47).
     This was achieved by replacing all occurrences of 
          spark__unsigned__u7__last by:
          127.
<S>  New H23:  fld_tree_level(fld_tweak_words(fld_h(ctx))) <= 127
-S-  Applied substitution rule copy_msg_to__rules(52).
     This was achieved by replacing all occurrences of 
          spark__unsigned__byte__first by:
          0.
<S>  New H11:  for_all(i___2 : integer, skein_512_block_bytes_index__first <= 
          i___2 and i___2 <= skein_512_block_bytes_index__last -> 0 <= element(
          fld_b(ctx), [i___2]) and element(fld_b(ctx), [i___2]) <= 
          spark__unsigned__byte__last)
<S>  New H30:  for_all(i___1 : integer, msg__index__subtype__1__first <= i___1 
          and i___1 <= msg__index__subtype__1__last -> 0 <= element(msg, [i___1]
          ) and element(msg, [i___1]) <= spark__unsigned__byte__last)
-S-  Applied substitution rule copy_msg_to__rules(53).
     This was achieved by replacing all occurrences of 
          spark__unsigned__byte__last by:
          255.
<S>  New H11:  for_all(i___2 : integer, skein_512_block_bytes_index__first <= 
          i___2 and i___2 <= skein_512_block_bytes_index__last -> 0 <= element(
          fld_b(ctx), [i___2]) and element(fld_b(ctx), [i___2]) <= 255)
<S>  New H30:  for_all(i___1 : integer, msg__index__subtype__1__first <= i___1 
          and i___1 <= msg__index__subtype__1__last -> 0 <= element(msg, [i___1]
          ) and element(msg, [i___1]) <= 255)
-S-  Applied substitution rule copy_msg_to__rules(58).
     This was achieved by replacing all occurrences of 
          spark__unsigned__u16__first by:
          0.
<S>  New H24:  fld_reserved(fld_tweak_words(fld_h(ctx))) >= 0
-S-  Applied substitution rule copy_msg_to__rules(59).
     This was achieved by replacing all occurrences of 
          spark__unsigned__u16__last by:
          65535.
<S>  New H25:  fld_reserved(fld_tweak_words(fld_h(ctx))) <= 65535
-S-  Applied substitution rule copy_msg_to__rules(64).
     This was achieved by replacing all occurrences of 
          spark__unsigned__u32__first by:
          0.
<S>  New H26:  fld_byte_count_msb(fld_tweak_words(fld_h(ctx))) >= 0
-S-  Applied substitution rule copy_msg_to__rules(65).
     This was achieved by replacing all occurrences of 
          spark__unsigned__u32__last by:
          4294967295.
<S>  New H27:  fld_byte_count_msb(fld_tweak_words(fld_h(ctx))) <= 4294967295
-S-  Applied substitution rule copy_msg_to__rules(70).
     This was achieved by replacing all occurrences of 
          spark__unsigned__u64__first by:
          0.
<S>  New H12:  for_all(i___1 : integer, skein_512_state_words_index__first <= 
          i___1 and i___1 <= skein_512_state_words_index__last -> 0 <= element(
          fld_x(ctx), [i___1]) and element(fld_x(ctx), [i___1]) <= 
          spark__unsigned__u64__last)
<S>  New H28:  fld_byte_count_lsb(fld_tweak_words(fld_h(ctx))) >= 0
-S-  Applied substitution rule copy_msg_to__rules(71).
     This was achieved by replacing all occurrences of 
          spark__unsigned__u64__last by:
          18446744073709551615.
<S>  New H29:  fld_byte_count_lsb(fld_tweak_words(fld_h(ctx))) <= 
          18446744073709551615
<S>  New H12:  for_all(i___1 : integer, skein_512_state_words_index__first <= 
          i___1 and i___1 <= skein_512_state_words_index__last -> 0 <= element(
          fld_x(ctx), [i___1]) and element(fld_x(ctx), [i___1]) <= 
          18446744073709551615)
-S-  Applied substitution rule copy_msg_to__rules(81).
     This was achieved by replacing all occurrences of hash_bit_length__first 
          by:
          0.
<S>  New H15:  fld_hash_bit_len(fld_h(ctx)) >= 0
-S-  Applied substitution rule copy_msg_to__rules(82).
     This was achieved by replacing all occurrences of hash_bit_length__last by:
          2147483640.
<S>  New H16:  fld_hash_bit_len(fld_h(ctx)) <= 2147483640
-S-  Applied substitution rule copy_msg_to__rules(86).
     This was achieved by replacing all occurrences of 
          skein_512_state_words_index__first by:
          0.
<S>  New H12:  for_all(i___1 : integer, 0 <= i___1 and i___1 <= 
          skein_512_state_words_index__last -> 0 <= element(fld_x(ctx), [i___1])
           and element(fld_x(ctx), [i___1]) <= 18446744073709551615)
-S-  Applied substitution rule copy_msg_to__rules(87).
     This was achieved by replacing all occurrences of 
          skein_512_state_words_index__last by:
          7.
<S>  New H12:  for_all(i___1 : integer, 0 <= i___1 and i___1 <= 7 -> 0 <= 
          element(fld_x(ctx), [i___1]) and element(fld_x(ctx), [i___1]) <= 
          18446744073709551615)
-S-  Applied substitution rule copy_msg_to__rules(96).
     This was achieved by replacing all occurrences of 
          skein_512_block_bytes_index__first by:
          0.
<S>  New H34:  fld_byte_count(fld_h(ctx)) >= 0
<S>  New H38:  fld_byte_count(fld_h(ctx)) + (num_bytes - 1) >= 0
<S>  New H11:  for_all(i___2 : integer, 0 <= i___2 and i___2 <= 
          skein_512_block_bytes_index__last -> 0 <= element(fld_b(ctx), [i___2])
           and element(fld_b(ctx), [i___2]) <= 255)
-S-  Applied substitution rule copy_msg_to__rules(97).
     This was achieved by replacing all occurrences of 
          skein_512_block_bytes_index__last by:
          63.
<S>  New H6:  fld_byte_count(fld_h(ctx)) + (num_bytes - 1) <= 63
<S>  New H35:  fld_byte_count(fld_h(ctx)) <= 63
<S>  New H11:  for_all(i___2 : integer, 0 <= i___2 and i___2 <= 63 -> 0 <= 
          element(fld_b(ctx), [i___2]) and element(fld_b(ctx), [i___2]) <= 255)
---  Eliminated hypothesis H17 (true-hypothesis).
---  Eliminated hypothesis H18 (true-hypothesis).
---  Eliminated hypothesis H21 (true-hypothesis).
---  Eliminated hypothesis H32 (true-hypothesis).
---  Eliminated hypothesis H33 (true-hypothesis).
---  Eliminated hypothesis H36 (true-hypothesis).
---  Eliminated hypothesis H37 (true-hypothesis).
---  Eliminated hypothesis H39 (true-hypothesis).
---  Eliminated hypothesis H42 (true-hypothesis).
---  Eliminated hypothesis H43 (true-hypothesis).
---  Eliminated hypothesis H34 (duplicate of H13).
---  Eliminated hypothesis H9 (redundant, given H31).
---  Eliminated hypothesis H10 (redundant, given H6 & H13).
---  Eliminated hypothesis H14 (redundant, given H35).
---  Eliminated hypothesis H15 (redundant, given H1).
---  Eliminated hypothesis H40 (redundant, given H31).
---  Eliminated hypothesis H41 (redundant, given H6 & H13).
***  Proved C2:  msg_offset + (num_bytes - 1) <= 2147483647
     using hypothesis H5.
***  PROVED VC.


@@@@@@@@@@  VC: procedure_copy_msg_to_b_5.  @@@@@@@@@@
%%%  Simplified H11 on reading formula in, to give:
     %%%  H11:  for_all(i___2 : integer, skein_512_block_bytes_index__first <= 
          i___2 and i___2 <= skein_512_block_bytes_index__last -> 
          spark__unsigned__byte__first <= element(fld_b(ctx), [i___2]) and 
          element(fld_b(ctx), [i___2]) <= spark__unsigned__byte__last)
%%%  Simplified H12 on reading formula in, to give:
     %%%  H12:  for_all(i___1 : integer, skein_512_state_words_index__first <= 
          i___1 and i___1 <= skein_512_state_words_index__last -> 
          spark__unsigned__u64__first <= element(fld_x(ctx), [i___1]) and 
          element(fld_x(ctx), [i___1]) <= spark__unsigned__u64__last)
%%%  Simplified H30 on reading formula in, to give:
     %%%  H30:  for_all(i___1 : integer, msg__index__subtype__1__first <= i___1 
          and i___1 <= msg__index__subtype__1__last -> 
          spark__unsigned__byte__first <= element(msg, [i___1]) and element(
          msg, [i___1]) <= spark__unsigned__byte__last)
---  Hypothesis H32 has been replaced by "true".  (It is already present, as H7)
          .
---  Hypothesis H33 has been replaced by "true".  (It is already present, as H8)
          .
---  Hypothesis H36 has been replaced by "true".  (It is already present, as 
          H34).
---  Hypothesis H37 has been replaced by "true".  (It is already present, as 
          H35).
---  Hypothesis H39 has been replaced by "true".  (It is already present, as H6)
          .
---  Hypothesis H42 has been replaced by "true".  (It is already present, as H7)
          .
---  Hypothesis H43 has been replaced by "true".  (It is already present, as H8)
          .
---  Hypothesis H46 has been replaced by "true".  (It is already present, as 
          H40).
---  Hypothesis H47 has been replaced by "true".  (It is already present, as 
          H41).
---  Hypothesis H48 has been replaced by "true".  (It is already present, as H7)
          .
---  Hypothesis H49 has been replaced by "true".  (It is already present, as H8)
          .
***  Proved C1:  element(msg, [msg_offset]) >= spark__unsigned__byte__first
     using hypotheses H3, H4 & H30.
***  Proved C2:  element(msg, [msg_offset]) <= spark__unsigned__byte__last
     using hypotheses H3, H4 & H30.
***  Proved C3:  msg_offset >= msg__index__subtype__1__first
     using hypothesis H3.
***  Proved C4:  msg_offset <= msg__index__subtype__1__last
     using hypothesis H4.
***  Proved C5:  fld_byte_count(fld_h(ctx)) >= 
          skein_512_block_bytes_index__first
     using hypothesis H34.
***  Proved C6:  fld_byte_count(fld_h(ctx)) <= skein_512_block_bytes_index__last
     using hypothesis H35.
***  PROVED VC.


@@@@@@@@@@  VC: procedure_copy_msg_to_b_6.  @@@@@@@@@@
%%%  Simplified H2 on reading formula in, to give:
     %%%  H2:  fld_hash_bit_len(fld_h(ctx)) = fld_hash_bit_len(fld_h(ctx~))
%%%  Simplified H3 on reading formula in, to give:
     %%%  H3:  fld_byte_count(fld_h(ctx)) = fld_byte_count(fld_h(ctx~))
%%%  Simplified H12 on reading formula in, to give:
     %%%  H12:  for_all(i___2 : integer, skein_512_block_bytes_index__first <= 
          i___2 and i___2 <= skein_512_block_bytes_index__last -> 
          spark__unsigned__byte__first <= element(fld_b(ctx), [i___2]) and 
          element(fld_b(ctx), [i___2]) <= spark__unsigned__byte__last)
%%%  Simplified H13 on reading formula in, to give:
     %%%  H13:  for_all(i___1 : integer, skein_512_state_words_index__first <= 
          i___1 and i___1 <= skein_512_state_words_index__last -> 
          spark__unsigned__u64__first <= element(fld_x(ctx), [i___1]) and 
          element(fld_x(ctx), [i___1]) <= spark__unsigned__u64__last)
%%%  Simplified H31 on reading formula in, to give:
     %%%  H31:  for_all(i___1 : integer, msg__index__subtype__1__first <= i___1 
          and i___1 <= msg__index__subtype__1__last -> 
          spark__unsigned__byte__first <= element(msg, [i___1]) and element(
          msg, [i___1]) <= spark__unsigned__byte__last)
%%%  Simplified H32 on reading formula in, to give:
     %%%  H32:  fld_hash_bit_len(fld_h(ctx~)) > 0
%%%  Simplified H37 on reading formula in, to give:
     %%%  H37:  fld_byte_count(fld_h(ctx~)) + (num_bytes - 1) <= 
          skein_512_block_bytes_index__last
---  Hypothesis H47 has been replaced by "true".  (It is already present, as 
          H40).
---  Hypothesis H48 has been replaced by "true".  (It is already present, as 
          H41).
---  Hypothesis H51 has been replaced by "true".  (It is already present, as 
          H38).
---  Hypothesis H52 has been replaced by "true".  (It is already present, as 
          H39).
---  Hypothesis H55 has been replaced by "true".  (It is already present, as 
          H53).
---  Hypothesis H56 has been replaced by "true".  (It is already present, as 
          H54).
***  Proved C5:  dst + 1 >= skein_512_block_bytes_index__first
     using hypothesis H49.
***  Proved C6:  dst + 1 <= skein_512_block_bytes_index__last
     using hypothesis H50.
-S-  Applied substitution rule copy_msg_to__rules(52).
     This was achieved by replacing all occurrences of 
          spark__unsigned__byte__first by:
          0.
<S>  New H12:  for_all(i___2 : integer, skein_512_block_bytes_index__first <= 
          i___2 and i___2 <= skein_512_block_bytes_index__last -> 0 <= element(
          fld_b(ctx), [i___2]) and element(fld_b(ctx), [i___2]) <= 
          spark__unsigned__byte__last)
<S>  New H31:  for_all(i___1 : integer, msg__index__subtype__1__first <= i___1 
          and i___1 <= msg__index__subtype__1__last -> 0 <= element(msg, [i___1]
          ) and element(msg, [i___1]) <= spark__unsigned__byte__last)
<S>  New C1:  element(msg, [src + 1]) >= 0
-S-  Applied substitution rule copy_msg_to__rules(53).
     This was achieved by replacing all occurrences of 
          spark__unsigned__byte__last by:
          255.
<S>  New H12:  for_all(i___2 : integer, skein_512_block_bytes_index__first <= 
          i___2 and i___2 <= skein_512_block_bytes_index__last -> 0 <= element(
          fld_b(ctx), [i___2]) and element(fld_b(ctx), [i___2]) <= 255)
<S>  New H31:  for_all(i___1 : integer, msg__index__subtype__1__first <= i___1 
          and i___1 <= msg__index__subtype__1__last -> 0 <= element(msg, [i___1]
          ) and element(msg, [i___1]) <= 255)
<S>  New C2:  element(msg, [src + 1]) <= 255
>>>  Restructured hypothesis H46 into:
     >>>  H46:  dst < final_dst and src < final_src
>>>  Hypothesis H46 has now been split into two, giving:
     >>>  H57:  dst < final_dst
     >>>  H58:  src < final_src
-S-  Applied substitution rule copy_msg_to__rules(7).
     This was achieved by replacing all occurrences of natural__first by:
          0.
<S>  New H8:  msg_offset >= 0
<S>  New H10:  num_bytes >= 0
<S>  New H14:  fld_byte_count(fld_h(ctx)) >= 0
<S>  New H38:  src >= 0
<S>  New H44:  final_src >= 0
<S>  New H53:  src >= - 1
-S-  Applied substitution rule copy_msg_to__rules(8).
     This was achieved by replacing all occurrences of natural__last by:
          2147483647.
<S>  New H9:  msg_offset <= 2147483647
<S>  New H11:  num_bytes <= 2147483647
<S>  New H15:  fld_byte_count(fld_h(ctx)) <= 2147483647
<S>  New H39:  src <= 2147483647
<S>  New H45:  final_src <= 2147483647
<S>  New H54:  src <= 2147483646
-S-  Applied substitution rule copy_msg_to__rules(40).
     This was achieved by replacing all occurrences of 
          spark__unsigned__u6__first by:
          0.
<S>  New H20:  fld_field_type(fld_tweak_words(fld_h(ctx))) >= 0
-S-  Applied substitution rule copy_msg_to__rules(41).
     This was achieved by replacing all occurrences of 
          spark__unsigned__u6__last by:
          63.
<S>  New H21:  fld_field_type(fld_tweak_words(fld_h(ctx))) <= 63
-S-  Applied substitution rule copy_msg_to__rules(46).
     This was achieved by replacing all occurrences of 
          spark__unsigned__u7__first by:
          0.
<S>  New H23:  fld_tree_level(fld_tweak_words(fld_h(ctx))) >= 0
-S-  Applied substitution rule copy_msg_to__rules(47).
     This was achieved by replacing all occurrences of 
          spark__unsigned__u7__last by:
          127.
<S>  New H24:  fld_tree_level(fld_tweak_words(fld_h(ctx))) <= 127
-S-  Applied substitution rule copy_msg_to__rules(58).
     This was achieved by replacing all occurrences of 
          spark__unsigned__u16__first by:
          0.
<S>  New H25:  fld_reserved(fld_tweak_words(fld_h(ctx))) >= 0
-S-  Applied substitution rule copy_msg_to__rules(59).
     This was achieved by replacing all occurrences of 
          spark__unsigned__u16__last by:
          65535.
<S>  New H26:  fld_reserved(fld_tweak_words(fld_h(ctx))) <= 65535
-S-  Applied substitution rule copy_msg_to__rules(64).
     This was achieved by replacing all occurrences of 
          spark__unsigned__u32__first by:
          0.
<S>  New H27:  fld_byte_count_msb(fld_tweak_words(fld_h(ctx))) >= 0
-S-  Applied substitution rule copy_msg_to__rules(65).
     This was achieved by replacing all occurrences of 
          spark__unsigned__u32__last by:
          4294967295.
<S>  New H28:  fld_byte_count_msb(fld_tweak_words(fld_h(ctx))) <= 4294967295
-S-  Applied substitution rule copy_msg_to__rules(70).
     This was achieved by replacing all occurrences of 
          spark__unsigned__u64__first by:
          0.
<S>  New H13:  for_all(i___1 : integer, skein_512_state_words_index__first <= 
          i___1 and i___1 <= skein_512_state_words_index__last -> 0 <= element(
          fld_x(ctx), [i___1]) and element(fld_x(ctx), [i___1]) <= 
          spark__unsigned__u64__last)
<S>  New H29:  fld_byte_count_lsb(fld_tweak_words(fld_h(ctx))) >= 0
-S-  Applied substitution rule copy_msg_to__rules(71).
     This was achieved by replacing all occurrences of 
          spark__unsigned__u64__last by:
          18446744073709551615.
<S>  New H30:  fld_byte_count_lsb(fld_tweak_words(fld_h(ctx))) <= 
          18446744073709551615
<S>  New H13:  for_all(i___1 : integer, skein_512_state_words_index__first <= 
          i___1 and i___1 <= skein_512_state_words_index__last -> 0 <= element(
          fld_x(ctx), [i___1]) and element(fld_x(ctx), [i___1]) <= 
          18446744073709551615)
-S-  Applied substitution rule copy_msg_to__rules(81).
     This was achieved by replacing all occurrences of hash_bit_length__first 
          by:
          0.
<S>  New H16:  fld_hash_bit_len(fld_h(ctx)) >= 0
-S-  Applied substitution rule copy_msg_to__rules(82).
     This was achieved by replacing all occurrences of hash_bit_length__last by:
          2147483640.
<S>  New H17:  fld_hash_bit_len(fld_h(ctx)) <= 2147483640
-S-  Applied substitution rule copy_msg_to__rules(86).
     This was achieved by replacing all occurrences of 
          skein_512_state_words_index__first by:
          0.
<S>  New H13:  for_all(i___1 : integer, 0 <= i___1 and i___1 <= 
          skein_512_state_words_index__last -> 0 <= element(fld_x(ctx), [i___1])
           and element(fld_x(ctx), [i___1]) <= 18446744073709551615)
-S-  Applied substitution rule copy_msg_to__rules(87).
     This was achieved by replacing all occurrences of 
          skein_512_state_words_index__last by:
          7.
<S>  New H13:  for_all(i___1 : integer, 0 <= i___1 and i___1 <= 7 -> 0 <= 
          element(fld_x(ctx), [i___1]) and element(fld_x(ctx), [i___1]) <= 
          18446744073709551615)
-S-  Applied substitution rule copy_msg_to__rules(91).
     This was achieved by replacing all occurrences of 
          skein_512_block_bytes_count__first by:
          0.
<S>  New H4:  fld_byte_count(fld_h(ctx)) >= 0
-S-  Applied substitution rule copy_msg_to__rules(92).
     This was achieved by replacing all occurrences of 
          skein_512_block_bytes_count__last by:
          64.
<S>  New H5:  fld_byte_count(fld_h(ctx)) <= 64
-S-  Applied substitution rule copy_msg_to__rules(96).
     This was achieved by replacing all occurrences of 
          skein_512_block_bytes_index__first by:
          0.
<S>  New H12:  for_all(i___2 : integer, 0 <= i___2 and i___2 <= 
          skein_512_block_bytes_index__last -> 0 <= element(fld_b(ctx), [i___2])
           and element(fld_b(ctx), [i___2]) <= 255)
<S>  New H40:  dst >= 0
<S>  New H42:  final_dst >= 0
<S>  New H49:  dst >= - 1
-S-  Applied substitution rule copy_msg_to__rules(97).
     This was achieved by replacing all occurrences of 
          skein_512_block_bytes_index__last by:
          63.
<S>  New H6:  fld_byte_count(fld_h(ctx)) + num_bytes <= 64
<S>  New H37:  fld_byte_count(fld_h(ctx~)) + (num_bytes - 1) <= 63
<S>  New H41:  dst <= 63
<S>  New H43:  final_dst <= 63
<S>  New H50:  dst <= 62
<S>  New H12:  for_all(i___2 : integer, 0 <= i___2 and i___2 <= 63 -> 0 <= 
          element(fld_b(ctx), [i___2]) and element(fld_b(ctx), [i___2]) <= 255)
***  Proved C3:  src + 1 >= msg__index__subtype__1__first
     using hypotheses H33 & H38.
***  Proved C4:  src + 1 <= msg__index__subtype__1__last
     via its standard form, which is:
     Std.Fm C4:  msg__index__subtype__1__last - src > 0
     using hypotheses H7 & H58.
---  Eliminated hypothesis H18 (true-hypothesis).
---  Eliminated hypothesis H19 (true-hypothesis).
---  Eliminated hypothesis H22 (true-hypothesis).
---  Eliminated hypothesis H47 (true-hypothesis).
---  Eliminated hypothesis H48 (true-hypothesis).
---  Eliminated hypothesis H51 (true-hypothesis).
---  Eliminated hypothesis H52 (true-hypothesis).
---  Eliminated hypothesis H55 (true-hypothesis).
---  Eliminated hypothesis H56 (true-hypothesis).
---  Eliminated hypothesis H14 (duplicate of H4).
---  Eliminated hypothesis H11 (redundant, given H4 & H6).
---  Eliminated hypothesis H15 (redundant, given H5).
---  Eliminated hypothesis H16 (redundant, given H1).
---  Eliminated hypothesis H39 (redundant, given H54).
---  Eliminated hypothesis H41 (redundant, given H50).
---  Eliminated hypothesis H44 (redundant, given H38 & H58).
---  Eliminated hypothesis H49 (redundant, given H40).
---  Eliminated hypothesis H53 (redundant, given H38).
     +++  New H59:  integer__size >= 0
     +++  New H60:  natural__size >= 0
     +++  New H61:  spark__unsigned__u6__size >= 0
     +++  New H62:  spark__unsigned__u7__size >= 0
     +++  New H63:  spark__unsigned__byte__size >= 0
     +++  New H64:  spark__unsigned__u16__size >= 0
     +++  New H65:  spark__unsigned__u32__size >= 0
     +++  New H66:  spark__unsigned__u64__size >= 0
     +++  New H67:  spark__crypto__word_count_t__size >= 0
     +++  New H68:  hash_bit_length__size >= 0
     +++  New H69:  skein_512_state_words_index__size >= 0
     +++  New H70:  skein_512_block_bytes_count__size >= 0
     +++  New H71:  skein_512_block_bytes_index__size >= 0
     +++  New H72:  skein_512_context__size >= 0
     +++  New H73:  msg__index__subtype__1__first <= 
          msg__index__subtype__1__last
     +++  New H74:  context_header__size >= 0
     +++  New H75:  msg__index__subtype__1__first >= 0
     +++  New H76:  msg__index__subtype__1__last >= 0
     +++  New H77:  msg__index__subtype__1__last <= 2147483647
     +++  New H78:  msg__index__subtype__1__first <= 2147483647


@@@@@@@@@@  VC: procedure_copy_msg_to_b_7.  @@@@@@@@@@
%%%  Simplified H11 on reading formula in, to give:
     %%%  H11:  for_all(i___2 : integer, skein_512_block_bytes_index__first <= 
          i___2 and i___2 <= skein_512_block_bytes_index__last -> 
          spark__unsigned__byte__first <= element(fld_b(ctx), [i___2]) and 
          element(fld_b(ctx), [i___2]) <= spark__unsigned__byte__last)
%%%  Simplified H12 on reading formula in, to give:
     %%%  H12:  for_all(i___1 : integer, skein_512_state_words_index__first <= 
          i___1 and i___1 <= skein_512_state_words_index__last -> 
          spark__unsigned__u64__first <= element(fld_x(ctx), [i___1]) and 
          element(fld_x(ctx), [i___1]) <= spark__unsigned__u64__last)
%%%  Simplified H30 on reading formula in, to give:
     %%%  H30:  for_all(i___1 : integer, msg__index__subtype__1__first <= i___1 
          and i___1 <= msg__index__subtype__1__last -> 
          spark__unsigned__byte__first <= element(msg, [i___1]) and element(
          msg, [i___1]) <= spark__unsigned__byte__last)
---  Hypothesis H32 has been replaced by "true".  (It is already present, as H7)
          .
---  Hypothesis H33 has been replaced by "true".  (It is already present, as H8)
          .
---  Hypothesis H36 has been replaced by "true".  (It is already present, as 
          H34).
---  Hypothesis H37 has been replaced by "true".  (It is already present, as 
          H35).
---  Hypothesis H39 has been replaced by "true".  (It is already present, as H6)
          .
---  Hypothesis H42 has been replaced by "true".  (It is already present, as H7)
          .
---  Hypothesis H43 has been replaced by "true".  (It is already present, as H8)
          .
---  Hypothesis H46 has been replaced by "true".  (It is already present, as 
          H40).
---  Hypothesis H47 has been replaced by "true".  (It is already present, as 
          H41).
---  Hypothesis H48 has been replaced by "true".  (It is already present, as H7)
          .
---  Hypothesis H49 has been replaced by "true".  (It is already present, as H8)
          .
---  Hypothesis H52 has been replaced by "true".  (It is already present, as H3)
          .
---  Hypothesis H53 has been replaced by "true".  (It is already present, as H4)
          .
---  Hypothesis H54 has been replaced by "true".  (It is already present, as 
          H34).
---  Hypothesis H55 has been replaced by "true".  (It is already present, as 
          H35).
%%%  Simplified C1 on reading formula in, to give:
     %%%  C1:  fld_hash_bit_len(fld_h(ctx)) > 0
%%%  Simplified C2 on reading formula in, to give:
     %%%  C2:  true
%%%  Simplified C3 on reading formula in, to give:
     %%%  C3:  true
%%%  Simplified C4 on reading formula in, to give:
     %%%  C4:  fld_byte_count(fld_h(ctx)) >= skein_512_block_bytes_count__first
%%%  Simplified C5 on reading formula in, to give:
     %%%  C5:  fld_byte_count(fld_h(ctx)) <= skein_512_block_bytes_count__last
%%%  Simplified C6 on reading formula in, to give:
     %%%  C6:  fld_byte_count(fld_h(ctx)) + num_bytes - 1 <= 
          skein_512_block_bytes_index__last
%%%  Simplified C12 on reading formula in, to give:
     %%%  C12:  for_all(i___2 : integer, skein_512_block_bytes_index__first <= 
          i___2 and i___2 <= skein_512_block_bytes_index__last -> 
          spark__unsigned__byte__first <= element(update(fld_b(ctx), [
          fld_byte_count(fld_h(ctx))], element(msg, [msg_offset])), [i___2]) 
          and element(update(fld_b(ctx), [fld_byte_count(fld_h(ctx))], element(
          msg, [msg_offset])), [i___2]) <= spark__unsigned__byte__last)
%%%  Simplified C13 on reading formula in, to give:
     %%%  C13:  for_all(i___1 : integer, skein_512_state_words_index__first <= 
          i___1 and i___1 <= skein_512_state_words_index__last -> 
          spark__unsigned__u64__first <= element(fld_x(ctx), [i___1]) and 
          element(fld_x(ctx), [i___1]) <= spark__unsigned__u64__last)
%%%  Simplified C14 on reading formula in, to give:
     %%%  C14:  fld_byte_count(fld_h(ctx)) >= natural__first
%%%  Simplified C15 on reading formula in, to give:
     %%%  C15:  fld_byte_count(fld_h(ctx)) <= natural__last
%%%  Simplified C16 on reading formula in, to give:
     %%%  C16:  fld_hash_bit_len(fld_h(ctx)) >= hash_bit_length__first
%%%  Simplified C17 on reading formula in, to give:
     %%%  C17:  fld_hash_bit_len(fld_h(ctx)) <= hash_bit_length__last
%%%  Simplified C20 on reading formula in, to give:
     %%%  C20:  fld_field_type(fld_tweak_words(fld_h(ctx))) >= 
          spark__unsigned__u6__first
%%%  Simplified C21 on reading formula in, to give:
     %%%  C21:  fld_field_type(fld_tweak_words(fld_h(ctx))) <= 
          spark__unsigned__u6__last
%%%  Simplified C23 on reading formula in, to give:
     %%%  C23:  fld_tree_level(fld_tweak_words(fld_h(ctx))) >= 
          spark__unsigned__u7__first
%%%  Simplified C24 on reading formula in, to give:
     %%%  C24:  fld_tree_level(fld_tweak_words(fld_h(ctx))) <= 
          spark__unsigned__u7__last
%%%  Simplified C25 on reading formula in, to give:
     %%%  C25:  fld_reserved(fld_tweak_words(fld_h(ctx))) >= 
          spark__unsigned__u16__first
%%%  Simplified C26 on reading formula in, to give:
     %%%  C26:  fld_reserved(fld_tweak_words(fld_h(ctx))) <= 
          spark__unsigned__u16__last
%%%  Simplified C27 on reading formula in, to give:
     %%%  C27:  fld_byte_count_msb(fld_tweak_words(fld_h(ctx))) >= 
          spark__unsigned__u32__first
%%%  Simplified C28 on reading formula in, to give:
     %%%  C28:  fld_byte_count_msb(fld_tweak_words(fld_h(ctx))) <= 
          spark__unsigned__u32__last
%%%  Simplified C29 on reading formula in, to give:
     %%%  C29:  fld_byte_count_lsb(fld_tweak_words(fld_h(ctx))) >= 
          spark__unsigned__u64__first
%%%  Simplified C30 on reading formula in, to give:
     %%%  C30:  fld_byte_count_lsb(fld_tweak_words(fld_h(ctx))) <= 
          spark__unsigned__u64__last
%%%  Simplified C31 on reading formula in, to give:
     %%%  C31:  for_all(i___1 : integer, msg__index__subtype__1__first <= i___1 
          and i___1 <= msg__index__subtype__1__last -> 
          spark__unsigned__byte__first <= element(msg, [i___1]) and element(
          msg, [i___1]) <= spark__unsigned__byte__last)
***  Proved C1:  fld_hash_bit_len(fld_h(ctx)) > 0
     using hypothesis H1.
***  Proved C2:  true
***  Proved C3:  true
***  Proved C7:  msg_offset + (num_bytes - 1) <= msg__index__subtype__1__last
     using hypothesis H5.
***  Proved C8:  msg_offset >= natural__first
     using hypothesis H7.
***  Proved C9:  msg_offset <= natural__last
     using hypothesis H8.
***  Proved C10:  num_bytes >= natural__first
     using hypothesis H9.
***  Proved C11:  num_bytes <= natural__last
     using hypothesis H10.
***  Proved C12:  for_all(i___2 : integer, skein_512_block_bytes_index__first 
          <= i___2 and i___2 <= skein_512_block_bytes_index__last -> 
          spark__unsigned__byte__first <= element(update(fld_b(ctx), [
          fld_byte_count(fld_h(ctx))], element(msg, [msg_offset])), [i___2]) 
          and element(update(fld_b(ctx), [fld_byte_count(fld_h(ctx))], element(
          msg, [msg_offset])), [i___2]) <= spark__unsigned__byte__last)
     using hypotheses H11, H34, H35, H50 & H51.
***  Proved C13:  for_all(i___1 : integer, skein_512_state_words_index__first 
          <= i___1 and i___1 <= skein_512_state_words_index__last -> 
          spark__unsigned__u64__first <= element(fld_x(ctx), [i___1]) and 
          element(fld_x(ctx), [i___1]) <= spark__unsigned__u64__last)
     using hypothesis H12.
***  Proved C14:  fld_byte_count(fld_h(ctx)) >= natural__first
     using hypothesis H13.
***  Proved C15:  fld_byte_count(fld_h(ctx)) <= natural__last
     using hypothesis H14.
***  Proved C16:  fld_hash_bit_len(fld_h(ctx)) >= hash_bit_length__first
     using hypothesis H15.
***  Proved C17:  fld_hash_bit_len(fld_h(ctx)) <= hash_bit_length__last
     using hypothesis H16.
***  Proved C18:  true
***  Proved C19:  true
***  Proved C20:  fld_field_type(fld_tweak_words(fld_h(ctx))) >= 
          spark__unsigned__u6__first
     using hypothesis H19.
***  Proved C21:  fld_field_type(fld_tweak_words(fld_h(ctx))) <= 
          spark__unsigned__u6__last
     using hypothesis H20.
***  Proved C22:  true
***  Proved C23:  fld_tree_level(fld_tweak_words(fld_h(ctx))) >= 
          spark__unsigned__u7__first
     using hypothesis H22.
***  Proved C24:  fld_tree_level(fld_tweak_words(fld_h(ctx))) <= 
          spark__unsigned__u7__last
     using hypothesis H23.
***  Proved C25:  fld_reserved(fld_tweak_words(fld_h(ctx))) >= 
          spark__unsigned__u16__first
     using hypothesis H24.
***  Proved C26:  fld_reserved(fld_tweak_words(fld_h(ctx))) <= 
          spark__unsigned__u16__last
     using hypothesis H25.
***  Proved C27:  fld_byte_count_msb(fld_tweak_words(fld_h(ctx))) >= 
          spark__unsigned__u32__first
     using hypothesis H26.
***  Proved C28:  fld_byte_count_msb(fld_tweak_words(fld_h(ctx))) <= 
          spark__unsigned__u32__last
     using hypothesis H27.
***  Proved C29:  fld_byte_count_lsb(fld_tweak_words(fld_h(ctx))) >= 
          spark__unsigned__u64__first
     using hypothesis H28.
***  Proved C30:  fld_byte_count_lsb(fld_tweak_words(fld_h(ctx))) <= 
          spark__unsigned__u64__last
     using hypothesis H29.
***  Proved C31:  for_all(i___1 : integer, msg__index__subtype__1__first <= 
          i___1 and i___1 <= msg__index__subtype__1__last -> 
          spark__unsigned__byte__first <= element(msg, [i___1]) and element(
          msg, [i___1]) <= spark__unsigned__byte__last)
     using hypothesis H30.
***  Proved C32:  fld_hash_bit_len(fld_h(ctx)) > 0
     using hypothesis H1.
***  Proved C33:  msg__index__subtype__1__first = 0
     using hypothesis H2.
***  Proved C34:  msg_offset >= msg__index__subtype__1__first
     using hypothesis H3.
***  Proved C35:  msg_offset <= msg__index__subtype__1__last
     using hypothesis H4.
***  Proved C36:  msg_offset + (num_bytes - 1) <= msg__index__subtype__1__last
     using hypothesis H5.
***  Proved C37:  fld_byte_count(fld_h(ctx)) + (num_bytes - 1) <= 
          skein_512_block_bytes_index__last
     using hypothesis H6.
-S-  Applied substitution rule copy_msg_to__rules(91).
     This was achieved by replacing all occurrences of 
          skein_512_block_bytes_count__first by:
          0.
<S>  New C4:  fld_byte_count(fld_h(ctx)) >= 0
-S-  Applied substitution rule copy_msg_to__rules(92).
     This was achieved by replacing all occurrences of 
          skein_512_block_bytes_count__last by:
          64.
<S>  New C5:  fld_byte_count(fld_h(ctx)) <= 64
-S-  Applied substitution rule copy_msg_to__rules(97).
     This was achieved by replacing all occurrences of 
          skein_512_block_bytes_index__last by:
          63.
<S>  New H6:  fld_byte_count(fld_h(ctx)) + (num_bytes - 1) <= 63
<S>  New H11:  for_all(i___2 : integer, skein_512_block_bytes_index__first <= 
          i___2 and i___2 <= 63 -> spark__unsigned__byte__first <= element(
          fld_b(ctx), [i___2]) and element(fld_b(ctx), [i___2]) <= 
          spark__unsigned__byte__last)
<S>  New H35:  fld_byte_count(fld_h(ctx)) <= 63
<S>  New C6:  fld_byte_count(fld_h(ctx)) + num_bytes <= 64
***  Proved C5:  fld_byte_count(fld_h(ctx)) <= 64
     using hypothesis H35.
-S-  Applied substitution rule copy_msg_to__rules(4).
     This was achieved by replacing all occurrences of integer__base__first by:
          - 2147483648.
<S>  New H40:  num_bytes >= - 2147483647
-S-  Applied substitution rule copy_msg_to__rules(5).
     This was achieved by replacing all occurrences of integer__base__last by:
          2147483647.
<S>  New H41:  num_bytes <= 2147483648
-S-  Applied substitution rule copy_msg_to__rules(7).
     This was achieved by replacing all occurrences of natural__first by:
          0.
<S>  New H7:  msg_offset >= 0
<S>  New H9:  num_bytes >= 0
<S>  New H13:  fld_byte_count(fld_h(ctx)) >= 0
<S>  New H44:  msg_offset + (num_bytes - 1) >= 0
-S-  Applied substitution rule copy_msg_to__rules(8).
     This was achieved by replacing all occurrences of natural__last by:
          2147483647.
<S>  New H8:  msg_offset <= 2147483647
<S>  New H10:  num_bytes <= 2147483647
<S>  New H14:  fld_byte_count(fld_h(ctx)) <= 2147483647
<S>  New H45:  msg_offset + (num_bytes - 1) <= 2147483647
-S-  Applied substitution rule copy_msg_to__rules(40).
     This was achieved by replacing all occurrences of 
          spark__unsigned__u6__first by:
          0.
<S>  New H19:  fld_field_type(fld_tweak_words(fld_h(ctx))) >= 0
-S-  Applied substitution rule copy_msg_to__rules(41).
     This was achieved by replacing all occurrences of 
          spark__unsigned__u6__last by:
          63.
<S>  New H20:  fld_field_type(fld_tweak_words(fld_h(ctx))) <= 63
-S-  Applied substitution rule copy_msg_to__rules(46).
     This was achieved by replacing all occurrences of 
          spark__unsigned__u7__first by:
          0.
<S>  New H22:  fld_tree_level(fld_tweak_words(fld_h(ctx))) >= 0
-S-  Applied substitution rule copy_msg_to__rules(47).
     This was achieved by replacing all occurrences of 
          spark__unsigned__u7__last by:
          127.
<S>  New H23:  fld_tree_level(fld_tweak_words(fld_h(ctx))) <= 127
-S-  Applied substitution rule copy_msg_to__rules(52).
     This was achieved by replacing all occurrences of 
          spark__unsigned__byte__first by:
          0.
<S>  New H11:  for_all(i___2 : integer, skein_512_block_bytes_index__first <= 
          i___2 and i___2 <= 63 -> 0 <= element(fld_b(ctx), [i___2]) and 
          element(fld_b(ctx), [i___2]) <= spark__unsigned__byte__last)
<S>  New H30:  for_all(i___1 : integer, msg__index__subtype__1__first <= i___1 
          and i___1 <= msg__index__subtype__1__last -> 0 <= element(msg, [i___1]
          ) and element(msg, [i___1]) <= spark__unsigned__byte__last)
<S>  New H50:  element(msg, [msg_offset]) >= 0
-S-  Applied substitution rule copy_msg_to__rules(53).
     This was achieved by replacing all occurrences of 
          spark__unsigned__byte__last by:
          255.
<S>  New H51:  element(msg, [msg_offset]) <= 255
<S>  New H11:  for_all(i___2 : integer, skein_512_block_bytes_index__first <= 
          i___2 and i___2 <= 63 -> 0 <= element(fld_b(ctx), [i___2]) and 
          element(fld_b(ctx), [i___2]) <= 255)
<S>  New H30:  for_all(i___1 : integer, msg__index__subtype__1__first <= i___1 
          and i___1 <= msg__index__subtype__1__last -> 0 <= element(msg, [i___1]
          ) and element(msg, [i___1]) <= 255)
-S-  Applied substitution rule copy_msg_to__rules(58).
     This was achieved by replacing all occurrences of 
          spark__unsigned__u16__first by:
          0.
<S>  New H24:  fld_reserved(fld_tweak_words(fld_h(ctx))) >= 0
-S-  Applied substitution rule copy_msg_to__rules(59).
     This was achieved by replacing all occurrences of 
          spark__unsigned__u16__last by:
          65535.
<S>  New H25:  fld_reserved(fld_tweak_words(fld_h(ctx))) <= 65535
-S-  Applied substitution rule copy_msg_to__rules(64).
     This was achieved by replacing all occurrences of 
          spark__unsigned__u32__first by:
          0.
<S>  New H26:  fld_byte_count_msb(fld_tweak_words(fld_h(ctx))) >= 0
-S-  Applied substitution rule copy_msg_to__rules(65).
     This was achieved by replacing all occurrences of 
          spark__unsigned__u32__last by:
          4294967295.
<S>  New H27:  fld_byte_count_msb(fld_tweak_words(fld_h(ctx))) <= 4294967295
-S-  Applied substitution rule copy_msg_to__rules(70).
     This was achieved by replacing all occurrences of 
          spark__unsigned__u64__first by:
          0.
<S>  New H12:  for_all(i___1 : integer, skein_512_state_words_index__first <= 
          i___1 and i___1 <= skein_512_state_words_index__last -> 0 <= element(
          fld_x(ctx), [i___1]) and element(fld_x(ctx), [i___1]) <= 
          spark__unsigned__u64__last)
<S>  New H28:  fld_byte_count_lsb(fld_tweak_words(fld_h(ctx))) >= 0
-S-  Applied substitution rule copy_msg_to__rules(71).
     This was achieved by replacing all occurrences of 
          spark__unsigned__u64__last by:
          18446744073709551615.
<S>  New H29:  fld_byte_count_lsb(fld_tweak_words(fld_h(ctx))) <= 
          18446744073709551615
<S>  New H12:  for_all(i___1 : integer, skein_512_state_words_index__first <= 
          i___1 and i___1 <= skein_512_state_words_index__last -> 0 <= element(
          fld_x(ctx), [i___1]) and element(fld_x(ctx), [i___1]) <= 
          18446744073709551615)
-S-  Applied substitution rule copy_msg_to__rules(81).
     This was achieved by replacing all occurrences of hash_bit_length__first 
          by:
          0.
<S>  New H15:  fld_hash_bit_len(fld_h(ctx)) >= 0
-S-  Applied substitution rule copy_msg_to__rules(82).
     This was achieved by replacing all occurrences of hash_bit_length__last by:
          2147483640.
<S>  New H16:  fld_hash_bit_len(fld_h(ctx)) <= 2147483640
-S-  Applied substitution rule copy_msg_to__rules(86).
     This was achieved by replacing all occurrences of 
          skein_512_state_words_index__first by:
          0.
<S>  New H12:  for_all(i___1 : integer, 0 <= i___1 and i___1 <= 
          skein_512_state_words_index__last -> 0 <= element(fld_x(ctx), [i___1])
           and element(fld_x(ctx), [i___1]) <= 18446744073709551615)
-S-  Applied substitution rule copy_msg_to__rules(87).
     This was achieved by replacing all occurrences of 
          skein_512_state_words_index__last by:
          7.
<S>  New H12:  for_all(i___1 : integer, 0 <= i___1 and i___1 <= 7 -> 0 <= 
          element(fld_x(ctx), [i___1]) and element(fld_x(ctx), [i___1]) <= 
          18446744073709551615)
-S-  Applied substitution rule copy_msg_to__rules(96).
     This was achieved by replacing all occurrences of 
          skein_512_block_bytes_index__first by:
          0.
<S>  New H34:  fld_byte_count(fld_h(ctx)) >= 0
<S>  New H38:  fld_byte_count(fld_h(ctx)) + (num_bytes - 1) >= 0
<S>  New H11:  for_all(i___2 : integer, 0 <= i___2 and i___2 <= 63 -> 0 <= 
          element(fld_b(ctx), [i___2]) and element(fld_b(ctx), [i___2]) <= 255)
***  Proved C4:  fld_byte_count(fld_h(ctx)) >= 0
     using hypothesis H13.
***  Proved C6:  fld_byte_count(fld_h(ctx)) + num_bytes <= 64
     via its standard form, which is:
     Std.Fm C6:  - num_bytes - fld_byte_count(fld_h(ctx)) > - 65
     using hypothesis H6.
***  PROVED VC.


@@@@@@@@@@  VC: procedure_copy_msg_to_b_8.  @@@@@@@@@@
%%%  Simplified H2 on reading formula in, to give:
     %%%  H2:  fld_hash_bit_len(fld_h(ctx)) = fld_hash_bit_len(fld_h(ctx~))
%%%  Simplified H3 on reading formula in, to give:
     %%%  H3:  fld_byte_count(fld_h(ctx)) = fld_byte_count(fld_h(ctx~))
%%%  Simplified H12 on reading formula in, to give:
     %%%  H12:  for_all(i___2 : integer, skein_512_block_bytes_index__first <= 
          i___2 and i___2 <= skein_512_block_bytes_index__last -> 
          spark__unsigned__byte__first <= element(fld_b(ctx), [i___2]) and 
          element(fld_b(ctx), [i___2]) <= spark__unsigned__byte__last)
%%%  Simplified H13 on reading formula in, to give:
     %%%  H13:  for_all(i___1 : integer, skein_512_state_words_index__first <= 
          i___1 and i___1 <= skein_512_state_words_index__last -> 
          spark__unsigned__u64__first <= element(fld_x(ctx), [i___1]) and 
          element(fld_x(ctx), [i___1]) <= spark__unsigned__u64__last)
%%%  Simplified H31 on reading formula in, to give:
     %%%  H31:  for_all(i___1 : integer, msg__index__subtype__1__first <= i___1 
          and i___1 <= msg__index__subtype__1__last -> 
          spark__unsigned__byte__first <= element(msg, [i___1]) and element(
          msg, [i___1]) <= spark__unsigned__byte__last)
%%%  Simplified H32 on reading formula in, to give:
     %%%  H32:  fld_hash_bit_len(fld_h(ctx~)) > 0
%%%  Simplified H37 on reading formula in, to give:
     %%%  H37:  fld_byte_count(fld_h(ctx~)) + (num_bytes - 1) <= 
          skein_512_block_bytes_index__last
---  Hypothesis H47 has been replaced by "true".  (It is already present, as 
          H40).
---  Hypothesis H48 has been replaced by "true".  (It is already present, as 
          H41).
---  Hypothesis H51 has been replaced by "true".  (It is already present, as 
          H38).
---  Hypothesis H52 has been replaced by "true".  (It is already present, as 
          H39).
---  Hypothesis H55 has been replaced by "true".  (It is already present, as 
          H53).
---  Hypothesis H56 has been replaced by "true".  (It is already present, as 
          H54).
---  Hypothesis H61 has been replaced by "true".  (It is already present, as 
          H49).
---  Hypothesis H62 has been replaced by "true".  (It is already present, as 
          H50).
%%%  Simplified C1 on reading formula in, to give:
     %%%  C1:  fld_hash_bit_len(fld_h(ctx)) > 0
%%%  Simplified C2 on reading formula in, to give:
     %%%  C2:  fld_hash_bit_len(fld_h(ctx)) = fld_hash_bit_len(fld_h(ctx~))
%%%  Simplified C3 on reading formula in, to give:
     %%%  C3:  fld_byte_count(fld_h(ctx)) = fld_byte_count(fld_h(ctx~))
%%%  Simplified C4 on reading formula in, to give:
     %%%  C4:  fld_byte_count(fld_h(ctx)) >= skein_512_block_bytes_count__first
%%%  Simplified C5 on reading formula in, to give:
     %%%  C5:  fld_byte_count(fld_h(ctx)) <= skein_512_block_bytes_count__last
%%%  Simplified C6 on reading formula in, to give:
     %%%  C6:  fld_byte_count(fld_h(ctx)) + num_bytes - 1 <= 
          skein_512_block_bytes_index__last
%%%  Simplified C12 on reading formula in, to give:
     %%%  C12:  for_all(i___2 : integer, skein_512_block_bytes_index__first <= 
          i___2 and i___2 <= skein_512_block_bytes_index__last -> 
          spark__unsigned__byte__first <= element(update(fld_b(ctx), [dst + 1], 
          element(msg, [src + 1])), [i___2]) and element(update(fld_b(ctx), [
          dst + 1], element(msg, [src + 1])), [i___2]) <= 
          spark__unsigned__byte__last)
%%%  Simplified C13 on reading formula in, to give:
     %%%  C13:  for_all(i___1 : integer, skein_512_state_words_index__first <= 
          i___1 and i___1 <= skein_512_state_words_index__last -> 
          spark__unsigned__u64__first <= element(fld_x(ctx), [i___1]) and 
          element(fld_x(ctx), [i___1]) <= spark__unsigned__u64__last)
%%%  Simplified C14 on reading formula in, to give:
     %%%  C14:  fld_byte_count(fld_h(ctx)) >= natural__first
%%%  Simplified C15 on reading formula in, to give:
     %%%  C15:  fld_byte_count(fld_h(ctx)) <= natural__last
%%%  Simplified C16 on reading formula in, to give:
     %%%  C16:  fld_hash_bit_len(fld_h(ctx)) >= hash_bit_length__first
%%%  Simplified C17 on reading formula in, to give:
     %%%  C17:  fld_hash_bit_len(fld_h(ctx)) <= hash_bit_length__last
%%%  Simplified C20 on reading formula in, to give:
     %%%  C20:  fld_field_type(fld_tweak_words(fld_h(ctx))) >= 
          spark__unsigned__u6__first
%%%  Simplified C21 on reading formula in, to give:
     %%%  C21:  fld_field_type(fld_tweak_words(fld_h(ctx))) <= 
          spark__unsigned__u6__last
%%%  Simplified C23 on reading formula in, to give:
     %%%  C23:  fld_tree_level(fld_tweak_words(fld_h(ctx))) >= 
          spark__unsigned__u7__first
%%%  Simplified C24 on reading formula in, to give:
     %%%  C24:  fld_tree_level(fld_tweak_words(fld_h(ctx))) <= 
          spark__unsigned__u7__last
%%%  Simplified C25 on reading formula in, to give:
     %%%  C25:  fld_reserved(fld_tweak_words(fld_h(ctx))) >= 
          spark__unsigned__u16__first
%%%  Simplified C26 on reading formula in, to give:
     %%%  C26:  fld_reserved(fld_tweak_words(fld_h(ctx))) <= 
          spark__unsigned__u16__last
%%%  Simplified C27 on reading formula in, to give:
     %%%  C27:  fld_byte_count_msb(fld_tweak_words(fld_h(ctx))) >= 
          spark__unsigned__u32__first
%%%  Simplified C28 on reading formula in, to give:
     %%%  C28:  fld_byte_count_msb(fld_tweak_words(fld_h(ctx))) <= 
          spark__unsigned__u32__last
%%%  Simplified C29 on reading formula in, to give:
     %%%  C29:  fld_byte_count_lsb(fld_tweak_words(fld_h(ctx))) >= 
          spark__unsigned__u64__first
%%%  Simplified C30 on reading formula in, to give:
     %%%  C30:  fld_byte_count_lsb(fld_tweak_words(fld_h(ctx))) <= 
          spark__unsigned__u64__last
%%%  Simplified C31 on reading formula in, to give:
     %%%  C31:  for_all(i___1 : integer, msg__index__subtype__1__first <= i___1 
          and i___1 <= msg__index__subtype__1__last -> 
          spark__unsigned__byte__first <= element(msg, [i___1]) and element(
          msg, [i___1]) <= spark__unsigned__byte__last)
%%%  Simplified C32 on reading formula in, to give:
     %%%  C32:  fld_hash_bit_len(fld_h(ctx~)) > 0
%%%  Simplified C37 on reading formula in, to give:
     %%%  C37:  fld_byte_count(fld_h(ctx~)) + (num_bytes - 1) <= 
          skein_512_block_bytes_index__last
***  Proved C1:  fld_hash_bit_len(fld_h(ctx)) > 0
     using hypothesis H1.
***  Proved C2:  fld_hash_bit_len(fld_h(ctx)) = fld_hash_bit_len(fld_h(ctx~))
     using hypothesis H2.
***  Proved C3:  fld_byte_count(fld_h(ctx)) = fld_byte_count(fld_h(ctx~))
     using hypothesis H3.
***  Proved C4:  fld_byte_count(fld_h(ctx)) >= 
          skein_512_block_bytes_count__first
     using hypothesis H4.
***  Proved C5:  fld_byte_count(fld_h(ctx)) <= skein_512_block_bytes_count__last
     using hypothesis H5.
***  Proved C6:  fld_byte_count(fld_h(ctx)) + num_bytes - 1 <= 
          skein_512_block_bytes_index__last
     using hypothesis H6.
***  Proved C7:  final_src <= msg__index__subtype__1__last
     using hypothesis H7.
***  Proved C8:  msg_offset >= natural__first
     using hypothesis H8.
***  Proved C9:  msg_offset <= natural__last
     using hypothesis H9.
***  Proved C10:  num_bytes >= natural__first
     using hypothesis H10.
***  Proved C11:  num_bytes <= natural__last
     using hypothesis H11.
***  Proved C12:  for_all(i___2 : integer, skein_512_block_bytes_index__first 
          <= i___2 and i___2 <= skein_512_block_bytes_index__last -> 
          spark__unsigned__byte__first <= element(update(fld_b(ctx), [dst + 1], 
          element(msg, [src + 1])), [i___2]) and element(update(fld_b(ctx), [
          dst + 1], element(msg, [src + 1])), [i___2]) <= 
          spark__unsigned__byte__last)
     using hypotheses H12, H49, H50, H57 & H58.
***  Proved C13:  for_all(i___1 : integer, skein_512_state_words_index__first 
          <= i___1 and i___1 <= skein_512_state_words_index__last -> 
          spark__unsigned__u64__first <= element(fld_x(ctx), [i___1]) and 
          element(fld_x(ctx), [i___1]) <= spark__unsigned__u64__last)
     using hypothesis H13.
***  Proved C14:  fld_byte_count(fld_h(ctx)) >= natural__first
     using hypothesis H14.
***  Proved C15:  fld_byte_count(fld_h(ctx)) <= natural__last
     using hypothesis H15.
***  Proved C16:  fld_hash_bit_len(fld_h(ctx)) >= hash_bit_length__first
     using hypothesis H16.
***  Proved C17:  fld_hash_bit_len(fld_h(ctx)) <= hash_bit_length__last
     using hypothesis H17.
***  Proved C18:  true
***  Proved C19:  true
***  Proved C20:  fld_field_type(fld_tweak_words(fld_h(ctx))) >= 
          spark__unsigned__u6__first
     using hypothesis H20.
***  Proved C21:  fld_field_type(fld_tweak_words(fld_h(ctx))) <= 
          spark__unsigned__u6__last
     using hypothesis H21.
***  Proved C22:  true
***  Proved C23:  fld_tree_level(fld_tweak_words(fld_h(ctx))) >= 
          spark__unsigned__u7__first
     using hypothesis H23.
***  Proved C24:  fld_tree_level(fld_tweak_words(fld_h(ctx))) <= 
          spark__unsigned__u7__last
     using hypothesis H24.
***  Proved C25:  fld_reserved(fld_tweak_words(fld_h(ctx))) >= 
          spark__unsigned__u16__first
     using hypothesis H25.
***  Proved C26:  fld_reserved(fld_tweak_words(fld_h(ctx))) <= 
          spark__unsigned__u16__last
     using hypothesis H26.
***  Proved C27:  fld_byte_count_msb(fld_tweak_words(fld_h(ctx))) >= 
          spark__unsigned__u32__first
     using hypothesis H27.
***  Proved C28:  fld_byte_count_msb(fld_tweak_words(fld_h(ctx))) <= 
          spark__unsigned__u32__last
     using hypothesis H28.
***  Proved C29:  fld_byte_count_lsb(fld_tweak_words(fld_h(ctx))) >= 
          spark__unsigned__u64__first
     using hypothesis H29.
***  Proved C30:  fld_byte_count_lsb(fld_tweak_words(fld_h(ctx))) <= 
          spark__unsigned__u64__last
     using hypothesis H30.
***  Proved C31:  for_all(i___1 : integer, msg__index__subtype__1__first <= 
          i___1 and i___1 <= msg__index__subtype__1__last -> 
          spark__unsigned__byte__first <= element(msg, [i___1]) and element(
          msg, [i___1]) <= spark__unsigned__byte__last)
     using hypothesis H31.
***  Proved C32:  fld_hash_bit_len(fld_h(ctx~)) > 0
     using hypothesis H32.
***  Proved C33:  msg__index__subtype__1__first = 0
     using hypothesis H33.
***  Proved C34:  msg_offset >= msg__index__subtype__1__first
     using hypothesis H34.
***  Proved C35:  msg_offset <= msg__index__subtype__1__last
     using hypothesis H35.
***  Proved C36:  msg_offset + (num_bytes - 1) <= msg__index__subtype__1__last
     using hypothesis H36.
***  Proved C37:  fld_byte_count(fld_h(ctx~)) + (num_bytes - 1) <= 
          skein_512_block_bytes_index__last
     using hypothesis H37.
***  PROVED VC.


@@@@@@@@@@  VC: procedure_copy_msg_to_b_9.  @@@@@@@@@@
%%%  Simplified H2 on reading formula in, to give:
     %%%  H2:  fld_hash_bit_len(fld_h(ctx)) = fld_hash_bit_len(fld_h(ctx~))
%%%  Simplified H3 on reading formula in, to give:
     %%%  H3:  fld_byte_count(fld_h(ctx)) = fld_byte_count(fld_h(ctx~))
%%%  Simplified H12 on reading formula in, to give:
     %%%  H12:  for_all(i___2 : integer, skein_512_block_bytes_index__first <= 
          i___2 and i___2 <= skein_512_block_bytes_index__last -> 
          spark__unsigned__byte__first <= element(fld_b(ctx), [i___2]) and 
          element(fld_b(ctx), [i___2]) <= spark__unsigned__byte__last)
%%%  Simplified H13 on reading formula in, to give:
     %%%  H13:  for_all(i___1 : integer, skein_512_state_words_index__first <= 
          i___1 and i___1 <= skein_512_state_words_index__last -> 
          spark__unsigned__u64__first <= element(fld_x(ctx), [i___1]) and 
          element(fld_x(ctx), [i___1]) <= spark__unsigned__u64__last)
%%%  Simplified H31 on reading formula in, to give:
     %%%  H31:  for_all(i___1 : integer, msg__index__subtype__1__first <= i___1 
          and i___1 <= msg__index__subtype__1__last -> 
          spark__unsigned__byte__first <= element(msg, [i___1]) and element(
          msg, [i___1]) <= spark__unsigned__byte__last)
%%%  Simplified H32 on reading formula in, to give:
     %%%  H32:  fld_hash_bit_len(fld_h(ctx~)) > 0
%%%  Simplified H37 on reading formula in, to give:
     %%%  H37:  fld_byte_count(fld_h(ctx~)) + (num_bytes - 1) <= 
          skein_512_block_bytes_index__last
---  Hypothesis H47 has been replaced by "true".  (It is already present, as 
          H40).
---  Hypothesis H48 has been replaced by "true".  (It is already present, as 
          H41).
***  Proved C1:  dst + 1 >= skein_512_block_bytes_index__first
     using hypothesis H40.
-S-  Applied substitution rule copy_msg_to__rules(97).
     This was achieved by replacing all occurrences of 
          skein_512_block_bytes_index__last by:
          63.
<S>  New H6:  fld_byte_count(fld_h(ctx)) + num_bytes <= 64
<S>  New H12:  for_all(i___2 : integer, skein_512_block_bytes_index__first <= 
          i___2 and i___2 <= 63 -> spark__unsigned__byte__first <= element(
          fld_b(ctx), [i___2]) and element(fld_b(ctx), [i___2]) <= 
          spark__unsigned__byte__last)
<S>  New H37:  fld_byte_count(fld_h(ctx~)) + (num_bytes - 1) <= 63
<S>  New H41:  dst <= 63
<S>  New H43:  final_dst <= 63
<S>  New C2:  dst <= 62
>>>  Restructured hypothesis H46 into:
     >>>  H46:  dst < final_dst and src < final_src
>>>  Hypothesis H46 has now been split into two, giving:
     >>>  H49:  dst < final_dst
     >>>  H50:  src < final_src
-S-  Applied substitution rule copy_msg_to__rules(7).
     This was achieved by replacing all occurrences of natural__first by:
          0.
<S>  New H8:  msg_offset >= 0
<S>  New H10:  num_bytes >= 0
<S>  New H14:  fld_byte_count(fld_h(ctx)) >= 0
<S>  New H38:  src >= 0
<S>  New H44:  final_src >= 0
-S-  Applied substitution rule copy_msg_to__rules(8).
     This was achieved by replacing all occurrences of natural__last by:
          2147483647.
<S>  New H9:  msg_offset <= 2147483647
<S>  New H11:  num_bytes <= 2147483647
<S>  New H15:  fld_byte_count(fld_h(ctx)) <= 2147483647
<S>  New H39:  src <= 2147483647
<S>  New H45:  final_src <= 2147483647
-S-  Applied substitution rule copy_msg_to__rules(40).
     This was achieved by replacing all occurrences of 
          spark__unsigned__u6__first by:
          0.
<S>  New H20:  fld_field_type(fld_tweak_words(fld_h(ctx))) >= 0
-S-  Applied substitution rule copy_msg_to__rules(41).
     This was achieved by replacing all occurrences of 
          spark__unsigned__u6__last by:
          63.
<S>  New H21:  fld_field_type(fld_tweak_words(fld_h(ctx))) <= 63
-S-  Applied substitution rule copy_msg_to__rules(46).
     This was achieved by replacing all occurrences of 
          spark__unsigned__u7__first by:
          0.
<S>  New H23:  fld_tree_level(fld_tweak_words(fld_h(ctx))) >= 0
-S-  Applied substitution rule copy_msg_to__rules(47).
     This was achieved by replacing all occurrences of 
          spark__unsigned__u7__last by:
          127.
<S>  New H24:  fld_tree_level(fld_tweak_words(fld_h(ctx))) <= 127
-S-  Applied substitution rule copy_msg_to__rules(52).
     This was achieved by replacing all occurrences of 
          spark__unsigned__byte__first by:
          0.
<S>  New H12:  for_all(i___2 : integer, skein_512_block_bytes_index__first <= 
          i___2 and i___2 <= 63 -> 0 <= element(fld_b(ctx), [i___2]) and 
          element(fld_b(ctx), [i___2]) <= spark__unsigned__byte__last)
<S>  New H31:  for_all(i___1 : integer, msg__index__subtype__1__first <= i___1 
          and i___1 <= msg__index__subtype__1__last -> 0 <= element(msg, [i___1]
          ) and element(msg, [i___1]) <= spark__unsigned__byte__last)
-S-  Applied substitution rule copy_msg_to__rules(53).
     This was achieved by replacing all occurrences of 
          spark__unsigned__byte__last by:
          255.
<S>  New H12:  for_all(i___2 : integer, skein_512_block_bytes_index__first <= 
          i___2 and i___2 <= 63 -> 0 <= element(fld_b(ctx), [i___2]) and 
          element(fld_b(ctx), [i___2]) <= 255)
<S>  New H31:  for_all(i___1 : integer, msg__index__subtype__1__first <= i___1 
          and i___1 <= msg__index__subtype__1__last -> 0 <= element(msg, [i___1]
          ) and element(msg, [i___1]) <= 255)
-S-  Applied substitution rule copy_msg_to__rules(58).
     This was achieved by replacing all occurrences of 
          spark__unsigned__u16__first by:
          0.
<S>  New H25:  fld_reserved(fld_tweak_words(fld_h(ctx))) >= 0
-S-  Applied substitution rule copy_msg_to__rules(59).
     This was achieved by replacing all occurrences of 
          spark__unsigned__u16__last by:
          65535.
<S>  New H26:  fld_reserved(fld_tweak_words(fld_h(ctx))) <= 65535
-S-  Applied substitution rule copy_msg_to__rules(64).
     This was achieved by replacing all occurrences of 
          spark__unsigned__u32__first by:
          0.
<S>  New H27:  fld_byte_count_msb(fld_tweak_words(fld_h(ctx))) >= 0
-S-  Applied substitution rule copy_msg_to__rules(65).
     This was achieved by replacing all occurrences of 
          spark__unsigned__u32__last by:
          4294967295.
<S>  New H28:  fld_byte_count_msb(fld_tweak_words(fld_h(ctx))) <= 4294967295
-S-  Applied substitution rule copy_msg_to__rules(70).
     This was achieved by replacing all occurrences of 
          spark__unsigned__u64__first by:
          0.
<S>  New H13:  for_all(i___1 : integer, skein_512_state_words_index__first <= 
          i___1 and i___1 <= skein_512_state_words_index__last -> 0 <= element(
          fld_x(ctx), [i___1]) and element(fld_x(ctx), [i___1]) <= 
          spark__unsigned__u64__last)
<S>  New H29:  fld_byte_count_lsb(fld_tweak_words(fld_h(ctx))) >= 0
-S-  Applied substitution rule copy_msg_to__rules(71).
     This was achieved by replacing all occurrences of 
          spark__unsigned__u64__last by:
          18446744073709551615.
<S>  New H30:  fld_byte_count_lsb(fld_tweak_words(fld_h(ctx))) <= 
          18446744073709551615
<S>  New H13:  for_all(i___1 : integer, skein_512_state_words_index__first <= 
          i___1 and i___1 <= skein_512_state_words_index__last -> 0 <= element(
          fld_x(ctx), [i___1]) and element(fld_x(ctx), [i___1]) <= 
          18446744073709551615)
-S-  Applied substitution rule copy_msg_to__rules(81).
     This was achieved by replacing all occurrences of hash_bit_length__first 
          by:
          0.
<S>  New H16:  fld_hash_bit_len(fld_h(ctx)) >= 0
-S-  Applied substitution rule copy_msg_to__rules(82).
     This was achieved by replacing all occurrences of hash_bit_length__last by:
          2147483640.
<S>  New H17:  fld_hash_bit_len(fld_h(ctx)) <= 2147483640
-S-  Applied substitution rule copy_msg_to__rules(86).
     This was achieved by replacing all occurrences of 
          skein_512_state_words_index__first by:
          0.
<S>  New H13:  for_all(i___1 : integer, 0 <= i___1 and i___1 <= 
          skein_512_state_words_index__last -> 0 <= element(fld_x(ctx), [i___1])
           and element(fld_x(ctx), [i___1]) <= 18446744073709551615)
-S-  Applied substitution rule copy_msg_to__rules(87).
     This was achieved by replacing all occurrences of 
          skein_512_state_words_index__last by:
          7.
<S>  New H13:  for_all(i___1 : integer, 0 <= i___1 and i___1 <= 7 -> 0 <= 
          element(fld_x(ctx), [i___1]) and element(fld_x(ctx), [i___1]) <= 
          18446744073709551615)
-S-  Applied substitution rule copy_msg_to__rules(91).
     This was achieved by replacing all occurrences of 
          skein_512_block_bytes_count__first by:
          0.
<S>  New H4:  fld_byte_count(fld_h(ctx)) >= 0
-S-  Applied substitution rule copy_msg_to__rules(92).
     This was achieved by replacing all occurrences of 
          skein_512_block_bytes_count__last by:
          64.
<S>  New H5:  fld_byte_count(fld_h(ctx)) <= 64
-S-  Applied substitution rule copy_msg_to__rules(96).
     This was achieved by replacing all occurrences of 
          skein_512_block_bytes_index__first by:
          0.
<S>  New H40:  dst >= 0
<S>  New H42:  final_dst >= 0
<S>  New H12:  for_all(i___2 : integer, 0 <= i___2 and i___2 <= 63 -> 0 <= 
          element(fld_b(ctx), [i___2]) and element(fld_b(ctx), [i___2]) <= 255)
***  Proved C2:  dst <= 62
     using hypotheses H43 & H49.
***  PROVED VC.


@@@@@@@@@@  VC: procedure_copy_msg_to_b_10.  @@@@@@@@@@
%%%  Simplified H2 on reading formula in, to give:
     %%%  H2:  fld_hash_bit_len(fld_h(ctx)) = fld_hash_bit_len(fld_h(ctx~))
%%%  Simplified H3 on reading formula in, to give:
     %%%  H3:  fld_byte_count(fld_h(ctx)) = fld_byte_count(fld_h(ctx~))
%%%  Simplified H12 on reading formula in, to give:
     %%%  H12:  for_all(i___2 : integer, skein_512_block_bytes_index__first <= 
          i___2 and i___2 <= skein_512_block_bytes_index__last -> 
          spark__unsigned__byte__first <= element(fld_b(ctx), [i___2]) and 
          element(fld_b(ctx), [i___2]) <= spark__unsigned__byte__last)
%%%  Simplified H13 on reading formula in, to give:
     %%%  H13:  for_all(i___1 : integer, skein_512_state_words_index__first <= 
          i___1 and i___1 <= skein_512_state_words_index__last -> 
          spark__unsigned__u64__first <= element(fld_x(ctx), [i___1]) and 
          element(fld_x(ctx), [i___1]) <= spark__unsigned__u64__last)
%%%  Simplified H31 on reading formula in, to give:
     %%%  H31:  for_all(i___1 : integer, msg__index__subtype__1__first <= i___1 
          and i___1 <= msg__index__subtype__1__last -> 
          spark__unsigned__byte__first <= element(msg, [i___1]) and element(
          msg, [i___1]) <= spark__unsigned__byte__last)
%%%  Simplified H32 on reading formula in, to give:
     %%%  H32:  fld_hash_bit_len(fld_h(ctx~)) > 0
%%%  Simplified H37 on reading formula in, to give:
     %%%  H37:  fld_byte_count(fld_h(ctx~)) + (num_bytes - 1) <= 
          skein_512_block_bytes_index__last
---  Hypothesis H47 has been replaced by "true".  (It is already present, as 
          H40).
---  Hypothesis H48 has been replaced by "true".  (It is already present, as 
          H41).
---  Hypothesis H51 has been replaced by "true".  (It is already present, as 
          H38).
---  Hypothesis H52 has been replaced by "true".  (It is already present, as 
          H39).
***  Proved C1:  src + 1 >= natural__first
     using hypothesis H38.
-S-  Applied substitution rule copy_msg_to__rules(8).
     This was achieved by replacing all occurrences of natural__last by:
          2147483647.
<S>  New H9:  msg_offset <= 2147483647
<S>  New H11:  num_bytes <= 2147483647
<S>  New H15:  fld_byte_count(fld_h(ctx)) <= 2147483647
<S>  New H39:  src <= 2147483647
<S>  New H45:  final_src <= 2147483647
<S>  New C2:  src <= 2147483646
>>>  Restructured hypothesis H46 into:
     >>>  H46:  dst < final_dst and src < final_src
>>>  Hypothesis H46 has now been split into two, giving:
     >>>  H53:  dst < final_dst
     >>>  H54:  src < final_src
-S-  Applied substitution rule copy_msg_to__rules(7).
     This was achieved by replacing all occurrences of natural__first by:
          0.
<S>  New H8:  msg_offset >= 0
<S>  New H10:  num_bytes >= 0
<S>  New H14:  fld_byte_count(fld_h(ctx)) >= 0
<S>  New H38:  src >= 0
<S>  New H44:  final_src >= 0
-S-  Applied substitution rule copy_msg_to__rules(40).
     This was achieved by replacing all occurrences of 
          spark__unsigned__u6__first by:
          0.
<S>  New H20:  fld_field_type(fld_tweak_words(fld_h(ctx))) >= 0
-S-  Applied substitution rule copy_msg_to__rules(41).
     This was achieved by replacing all occurrences of 
          spark__unsigned__u6__last by:
          63.
<S>  New H21:  fld_field_type(fld_tweak_words(fld_h(ctx))) <= 63
-S-  Applied substitution rule copy_msg_to__rules(46).
     This was achieved by replacing all occurrences of 
          spark__unsigned__u7__first by:
          0.
<S>  New H23:  fld_tree_level(fld_tweak_words(fld_h(ctx))) >= 0
-S-  Applied substitution rule copy_msg_to__rules(47).
     This was achieved by replacing all occurrences of 
          spark__unsigned__u7__last by:
          127.
<S>  New H24:  fld_tree_level(fld_tweak_words(fld_h(ctx))) <= 127
-S-  Applied substitution rule copy_msg_to__rules(52).
     This was achieved by replacing all occurrences of 
          spark__unsigned__byte__first by:
          0.
<S>  New H12:  for_all(i___2 : integer, skein_512_block_bytes_index__first <= 
          i___2 and i___2 <= skein_512_block_bytes_index__last -> 0 <= element(
          fld_b(ctx), [i___2]) and element(fld_b(ctx), [i___2]) <= 
          spark__unsigned__byte__last)
<S>  New H31:  for_all(i___1 : integer, msg__index__subtype__1__first <= i___1 
          and i___1 <= msg__index__subtype__1__last -> 0 <= element(msg, [i___1]
          ) and element(msg, [i___1]) <= spark__unsigned__byte__last)
-S-  Applied substitution rule copy_msg_to__rules(53).
     This was achieved by replacing all occurrences of 
          spark__unsigned__byte__last by:
          255.
<S>  New H12:  for_all(i___2 : integer, skein_512_block_bytes_index__first <= 
          i___2 and i___2 <= skein_512_block_bytes_index__last -> 0 <= element(
          fld_b(ctx), [i___2]) and element(fld_b(ctx), [i___2]) <= 255)
<S>  New H31:  for_all(i___1 : integer, msg__index__subtype__1__first <= i___1 
          and i___1 <= msg__index__subtype__1__last -> 0 <= element(msg, [i___1]
          ) and element(msg, [i___1]) <= 255)
-S-  Applied substitution rule copy_msg_to__rules(58).
     This was achieved by replacing all occurrences of 
          spark__unsigned__u16__first by:
          0.
<S>  New H25:  fld_reserved(fld_tweak_words(fld_h(ctx))) >= 0
-S-  Applied substitution rule copy_msg_to__rules(59).
     This was achieved by replacing all occurrences of 
          spark__unsigned__u16__last by:
          65535.
<S>  New H26:  fld_reserved(fld_tweak_words(fld_h(ctx))) <= 65535
-S-  Applied substitution rule copy_msg_to__rules(64).
     This was achieved by replacing all occurrences of 
          spark__unsigned__u32__first by:
          0.
<S>  New H27:  fld_byte_count_msb(fld_tweak_words(fld_h(ctx))) >= 0
-S-  Applied substitution rule copy_msg_to__rules(65).
     This was achieved by replacing all occurrences of 
          spark__unsigned__u32__last by:
          4294967295.
<S>  New H28:  fld_byte_count_msb(fld_tweak_words(fld_h(ctx))) <= 4294967295
-S-  Applied substitution rule copy_msg_to__rules(70).
     This was achieved by replacing all occurrences of 
          spark__unsigned__u64__first by:
          0.
<S>  New H13:  for_all(i___1 : integer, skein_512_state_words_index__first <= 
          i___1 and i___1 <= skein_512_state_words_index__last -> 0 <= element(
          fld_x(ctx), [i___1]) and element(fld_x(ctx), [i___1]) <= 
          spark__unsigned__u64__last)
<S>  New H29:  fld_byte_count_lsb(fld_tweak_words(fld_h(ctx))) >= 0
-S-  Applied substitution rule copy_msg_to__rules(71).
     This was achieved by replacing all occurrences of 
          spark__unsigned__u64__last by:
          18446744073709551615.
<S>  New H30:  fld_byte_count_lsb(fld_tweak_words(fld_h(ctx))) <= 
          18446744073709551615
<S>  New H13:  for_all(i___1 : integer, skein_512_state_words_index__first <= 
          i___1 and i___1 <= skein_512_state_words_index__last -> 0 <= element(
          fld_x(ctx), [i___1]) and element(fld_x(ctx), [i___1]) <= 
          18446744073709551615)
-S-  Applied substitution rule copy_msg_to__rules(81).
     This was achieved by replacing all occurrences of hash_bit_length__first 
          by:
          0.
<S>  New H16:  fld_hash_bit_len(fld_h(ctx)) >= 0
-S-  Applied substitution rule copy_msg_to__rules(82).
     This was achieved by replacing all occurrences of hash_bit_length__last by:
          2147483640.
<S>  New H17:  fld_hash_bit_len(fld_h(ctx)) <= 2147483640
-S-  Applied substitution rule copy_msg_to__rules(86).
     This was achieved by replacing all occurrences of 
          skein_512_state_words_index__first by:
          0.
<S>  New H13:  for_all(i___1 : integer, 0 <= i___1 and i___1 <= 
          skein_512_state_words_index__last -> 0 <= element(fld_x(ctx), [i___1])
           and element(fld_x(ctx), [i___1]) <= 18446744073709551615)
-S-  Applied substitution rule copy_msg_to__rules(87).
     This was achieved by replacing all occurrences of 
          skein_512_state_words_index__last by:
          7.
<S>  New H13:  for_all(i___1 : integer, 0 <= i___1 and i___1 <= 7 -> 0 <= 
          element(fld_x(ctx), [i___1]) and element(fld_x(ctx), [i___1]) <= 
          18446744073709551615)
-S-  Applied substitution rule copy_msg_to__rules(91).
     This was achieved by replacing all occurrences of 
          skein_512_block_bytes_count__first by:
          0.
<S>  New H4:  fld_byte_count(fld_h(ctx)) >= 0
-S-  Applied substitution rule copy_msg_to__rules(92).
     This was achieved by replacing all occurrences of 
          skein_512_block_bytes_count__last by:
          64.
<S>  New H5:  fld_byte_count(fld_h(ctx)) <= 64
-S-  Applied substitution rule copy_msg_to__rules(96).
     This was achieved by replacing all occurrences of 
          skein_512_block_bytes_index__first by:
          0.
<S>  New H40:  dst >= 0
<S>  New H42:  final_dst >= 0
<S>  New H49:  dst >= - 1
<S>  New H12:  for_all(i___2 : integer, 0 <= i___2 and i___2 <= 
          skein_512_block_bytes_index__last -> 0 <= element(fld_b(ctx), [i___2])
           and element(fld_b(ctx), [i___2]) <= 255)
-S-  Applied substitution rule copy_msg_to__rules(97).
     This was achieved by replacing all occurrences of 
          skein_512_block_bytes_index__last by:
          63.
<S>  New H6:  fld_byte_count(fld_h(ctx)) + num_bytes <= 64
<S>  New H37:  fld_byte_count(fld_h(ctx~)) + (num_bytes - 1) <= 63
<S>  New H41:  dst <= 63
<S>  New H43:  final_dst <= 63
<S>  New H50:  dst <= 62
<S>  New H12:  for_all(i___2 : integer, 0 <= i___2 and i___2 <= 63 -> 0 <= 
          element(fld_b(ctx), [i___2]) and element(fld_b(ctx), [i___2]) <= 255)
***  Proved C2:  src <= 2147483646
     using hypotheses H45 & H54.
***  PROVED VC.


@@@@@@@@@@  VC: procedure_copy_msg_to_b_11.  @@@@@@@@@@
%%%  Simplified H2 on reading formula in, to give:
     %%%  H2:  fld_hash_bit_len(fld_h(ctx)) = fld_hash_bit_len(fld_h(ctx~))
%%%  Simplified H3 on reading formula in, to give:
     %%%  H3:  fld_byte_count(fld_h(ctx)) = fld_byte_count(fld_h(ctx~))
%%%  Simplified H12 on reading formula in, to give:
     %%%  H12:  for_all(i___2 : integer, skein_512_block_bytes_index__first <= 
          i___2 and i___2 <= skein_512_block_bytes_index__last -> 
          spark__unsigned__byte__first <= element(fld_b(ctx), [i___2]) and 
          element(fld_b(ctx), [i___2]) <= spark__unsigned__byte__last)
%%%  Simplified H13 on reading formula in, to give:
     %%%  H13:  for_all(i___1 : integer, skein_512_state_words_index__first <= 
          i___1 and i___1 <= skein_512_state_words_index__last -> 
          spark__unsigned__u64__first <= element(fld_x(ctx), [i___1]) and 
          element(fld_x(ctx), [i___1]) <= spark__unsigned__u64__last)
%%%  Simplified H31 on reading formula in, to give:
     %%%  H31:  for_all(i___1 : integer, msg__index__subtype__1__first <= i___1 
          and i___1 <= msg__index__subtype__1__last -> 
          spark__unsigned__byte__first <= element(msg, [i___1]) and element(
          msg, [i___1]) <= spark__unsigned__byte__last)
%%%  Simplified H32 on reading formula in, to give:
     %%%  H32:  fld_hash_bit_len(fld_h(ctx~)) > 0
%%%  Simplified H37 on reading formula in, to give:
     %%%  H37:  fld_byte_count(fld_h(ctx~)) + (num_bytes - 1) <= 
          skein_512_block_bytes_index__last
-S-  Applied substitution rule copy_msg_to__rules(7).
     This was achieved by replacing all occurrences of natural__first by:
          0.
<S>  New H8:  msg_offset >= 0
<S>  New H10:  num_bytes >= 0
<S>  New H14:  fld_byte_count(fld_h(ctx)) >= 0
<S>  New H38:  src >= 0
<S>  New H44:  final_src >= 0
<S>  New C1:  fld_byte_count(fld_h(ctx)) + num_bytes >= 0
-S-  Applied substitution rule copy_msg_to__rules(8).
     This was achieved by replacing all occurrences of natural__last by:
          2147483647.
<S>  New H9:  msg_offset <= 2147483647
<S>  New H11:  num_bytes <= 2147483647
<S>  New H15:  fld_byte_count(fld_h(ctx)) <= 2147483647
<S>  New H39:  src <= 2147483647
<S>  New H45:  final_src <= 2147483647
<S>  New C2:  fld_byte_count(fld_h(ctx)) + num_bytes <= 2147483647
***  Proved C1:  fld_byte_count(fld_h(ctx)) + num_bytes >= 0
     using hypotheses H10 & H14.
-S-  Applied substitution rule copy_msg_to__rules(40).
     This was achieved by replacing all occurrences of 
          spark__unsigned__u6__first by:
          0.
<S>  New H20:  fld_field_type(fld_tweak_words(fld_h(ctx))) >= 0
-S-  Applied substitution rule copy_msg_to__rules(41).
     This was achieved by replacing all occurrences of 
          spark__unsigned__u6__last by:
          63.
<S>  New H21:  fld_field_type(fld_tweak_words(fld_h(ctx))) <= 63
-S-  Applied substitution rule copy_msg_to__rules(46).
     This was achieved by replacing all occurrences of 
          spark__unsigned__u7__first by:
          0.
<S>  New H23:  fld_tree_level(fld_tweak_words(fld_h(ctx))) >= 0
-S-  Applied substitution rule copy_msg_to__rules(47).
     This was achieved by replacing all occurrences of 
          spark__unsigned__u7__last by:
          127.
<S>  New H24:  fld_tree_level(fld_tweak_words(fld_h(ctx))) <= 127
-S-  Applied substitution rule copy_msg_to__rules(52).
     This was achieved by replacing all occurrences of 
          spark__unsigned__byte__first by:
          0.
<S>  New H12:  for_all(i___2 : integer, skein_512_block_bytes_index__first <= 
          i___2 and i___2 <= skein_512_block_bytes_index__last -> 0 <= element(
          fld_b(ctx), [i___2]) and element(fld_b(ctx), [i___2]) <= 
          spark__unsigned__byte__last)
<S>  New H31:  for_all(i___1 : integer, msg__index__subtype__1__first <= i___1 
          and i___1 <= msg__index__subtype__1__last -> 0 <= element(msg, [i___1]
          ) and element(msg, [i___1]) <= spark__unsigned__byte__last)
-S-  Applied substitution rule copy_msg_to__rules(53).
     This was achieved by replacing all occurrences of 
          spark__unsigned__byte__last by:
          255.
<S>  New H12:  for_all(i___2 : integer, skein_512_block_bytes_index__first <= 
          i___2 and i___2 <= skein_512_block_bytes_index__last -> 0 <= element(
          fld_b(ctx), [i___2]) and element(fld_b(ctx), [i___2]) <= 255)
<S>  New H31:  for_all(i___1 : integer, msg__index__subtype__1__first <= i___1 
          and i___1 <= msg__index__subtype__1__last -> 0 <= element(msg, [i___1]
          ) and element(msg, [i___1]) <= 255)
-S-  Applied substitution rule copy_msg_to__rules(58).
     This was achieved by replacing all occurrences of 
          spark__unsigned__u16__first by:
          0.
<S>  New H25:  fld_reserved(fld_tweak_words(fld_h(ctx))) >= 0
-S-  Applied substitution rule copy_msg_to__rules(59).
     This was achieved by replacing all occurrences of 
          spark__unsigned__u16__last by:
          65535.
<S>  New H26:  fld_reserved(fld_tweak_words(fld_h(ctx))) <= 65535
-S-  Applied substitution rule copy_msg_to__rules(64).
     This was achieved by replacing all occurrences of 
          spark__unsigned__u32__first by:
          0.
<S>  New H27:  fld_byte_count_msb(fld_tweak_words(fld_h(ctx))) >= 0
-S-  Applied substitution rule copy_msg_to__rules(65).
     This was achieved by replacing all occurrences of 
          spark__unsigned__u32__last by:
          4294967295.
<S>  New H28:  fld_byte_count_msb(fld_tweak_words(fld_h(ctx))) <= 4294967295
-S-  Applied substitution rule copy_msg_to__rules(70).
     This was achieved by replacing all occurrences of 
          spark__unsigned__u64__first by:
          0.
<S>  New H13:  for_all(i___1 : integer, skein_512_state_words_index__first <= 
          i___1 and i___1 <= skein_512_state_words_index__last -> 0 <= element(
          fld_x(ctx), [i___1]) and element(fld_x(ctx), [i___1]) <= 
          spark__unsigned__u64__last)
<S>  New H29:  fld_byte_count_lsb(fld_tweak_words(fld_h(ctx))) >= 0
-S-  Applied substitution rule copy_msg_to__rules(71).
     This was achieved by replacing all occurrences of 
          spark__unsigned__u64__last by:
          18446744073709551615.
<S>  New H30:  fld_byte_count_lsb(fld_tweak_words(fld_h(ctx))) <= 
          18446744073709551615
<S>  New H13:  for_all(i___1 : integer, skein_512_state_words_index__first <= 
          i___1 and i___1 <= skein_512_state_words_index__last -> 0 <= element(
          fld_x(ctx), [i___1]) and element(fld_x(ctx), [i___1]) <= 
          18446744073709551615)
-S-  Applied substitution rule copy_msg_to__rules(81).
     This was achieved by replacing all occurrences of hash_bit_length__first 
          by:
          0.
<S>  New H16:  fld_hash_bit_len(fld_h(ctx)) >= 0
-S-  Applied substitution rule copy_msg_to__rules(82).
     This was achieved by replacing all occurrences of hash_bit_length__last by:
          2147483640.
<S>  New H17:  fld_hash_bit_len(fld_h(ctx)) <= 2147483640
-S-  Applied substitution rule copy_msg_to__rules(86).
     This was achieved by replacing all occurrences of 
          skein_512_state_words_index__first by:
          0.
<S>  New H13:  for_all(i___1 : integer, 0 <= i___1 and i___1 <= 
          skein_512_state_words_index__last -> 0 <= element(fld_x(ctx), [i___1])
           and element(fld_x(ctx), [i___1]) <= 18446744073709551615)
-S-  Applied substitution rule copy_msg_to__rules(87).
     This was achieved by replacing all occurrences of 
          skein_512_state_words_index__last by:
          7.
<S>  New H13:  for_all(i___1 : integer, 0 <= i___1 and i___1 <= 7 -> 0 <= 
          element(fld_x(ctx), [i___1]) and element(fld_x(ctx), [i___1]) <= 
          18446744073709551615)
-S-  Applied substitution rule copy_msg_to__rules(91).
     This was achieved by replacing all occurrences of 
          skein_512_block_bytes_count__first by:
          0.
<S>  New H4:  fld_byte_count(fld_h(ctx)) >= 0
-S-  Applied substitution rule copy_msg_to__rules(92).
     This was achieved by replacing all occurrences of 
          skein_512_block_bytes_count__last by:
          64.
<S>  New H5:  fld_byte_count(fld_h(ctx)) <= 64
-S-  Applied substitution rule copy_msg_to__rules(96).
     This was achieved by replacing all occurrences of 
          skein_512_block_bytes_index__first by:
          0.
<S>  New H40:  dst >= 0
<S>  New H42:  final_dst >= 0
<S>  New H12:  for_all(i___2 : integer, 0 <= i___2 and i___2 <= 
          skein_512_block_bytes_index__last -> 0 <= element(fld_b(ctx), [i___2])
           and element(fld_b(ctx), [i___2]) <= 255)
-S-  Applied substitution rule copy_msg_to__rules(97).
     This was achieved by replacing all occurrences of 
          skein_512_block_bytes_index__last by:
          63.
<S>  New H6:  fld_byte_count(fld_h(ctx)) + num_bytes <= 64
<S>  New H37:  fld_byte_count(fld_h(ctx~)) + (num_bytes - 1) <= 63
<S>  New H41:  dst <= 63
<S>  New H43:  final_dst <= 63
<S>  New H12:  for_all(i___2 : integer, 0 <= i___2 and i___2 <= 63 -> 0 <= 
          element(fld_b(ctx), [i___2]) and element(fld_b(ctx), [i___2]) <= 255)
***  Proved C2:  fld_byte_count(fld_h(ctx)) + num_bytes <= 2147483647
     using hypothesis H6.
***  PROVED VC.


@@@@@@@@@@  VC: procedure_copy_msg_to_b_12.  @@@@@@@@@@
%%%  Simplified H11 on reading formula in, to give:
     %%%  H11:  for_all(i___2 : integer, skein_512_block_bytes_index__first <= 
          i___2 and i___2 <= skein_512_block_bytes_index__last -> 
          spark__unsigned__byte__first <= element(fld_b(ctx), [i___2]) and 
          element(fld_b(ctx), [i___2]) <= spark__unsigned__byte__last)
%%%  Simplified H12 on reading formula in, to give:
     %%%  H12:  for_all(i___1 : integer, skein_512_state_words_index__first <= 
          i___1 and i___1 <= skein_512_state_words_index__last -> 
          spark__unsigned__u64__first <= element(fld_x(ctx), [i___1]) and 
          element(fld_x(ctx), [i___1]) <= spark__unsigned__u64__last)
%%%  Simplified H30 on reading formula in, to give:
     %%%  H30:  for_all(i___1 : integer, msg__index__subtype__1__first <= i___1 
          and i___1 <= msg__index__subtype__1__last -> 
          spark__unsigned__byte__first <= element(msg, [i___1]) and element(
          msg, [i___1]) <= spark__unsigned__byte__last)
%%%  Simplified C2 on reading formula in, to give:
     %%%  C2:  true
***  Proved C1:  fld_hash_bit_len(fld_h(ctx)) > 0
     using hypothesis H1.
***  Proved C2:  true
-S-  Applied substitution rule copy_msg_to__rules(91).
     This was achieved by replacing all occurrences of 
          skein_512_block_bytes_count__first by:
          0.
<S>  New C4:  fld_byte_count(fld_h(ctx)) >= 0
-S-  Applied substitution rule copy_msg_to__rules(92).
     This was achieved by replacing all occurrences of 
          skein_512_block_bytes_count__last by:
          64.
<S>  New C5:  fld_byte_count(fld_h(ctx)) <= 64
>>>  Restructured hypothesis H31 into:
     >>>  H31:  num_bytes <= 0
-S-  Applied substitution rule copy_msg_to__rules(7).
     This was achieved by replacing all occurrences of natural__first by:
          0.
<S>  New H7:  msg_offset >= 0
<S>  New H9:  num_bytes >= 0
<S>  New H13:  fld_byte_count(fld_h(ctx)) >= 0
-S-  Applied substitution rule copy_msg_to__rules(8).
     This was achieved by replacing all occurrences of natural__last by:
          2147483647.
<S>  New H8:  msg_offset <= 2147483647
<S>  New H10:  num_bytes <= 2147483647
<S>  New H14:  fld_byte_count(fld_h(ctx)) <= 2147483647
-S-  Applied substitution rule copy_msg_to__rules(40).
     This was achieved by replacing all occurrences of 
          spark__unsigned__u6__first by:
          0.
<S>  New H19:  fld_field_type(fld_tweak_words(fld_h(ctx))) >= 0
-S-  Applied substitution rule copy_msg_to__rules(41).
     This was achieved by replacing all occurrences of 
          spark__unsigned__u6__last by:
          63.
<S>  New H20:  fld_field_type(fld_tweak_words(fld_h(ctx))) <= 63
-S-  Applied substitution rule copy_msg_to__rules(46).
     This was achieved by replacing all occurrences of 
          spark__unsigned__u7__first by:
          0.
<S>  New H22:  fld_tree_level(fld_tweak_words(fld_h(ctx))) >= 0
-S-  Applied substitution rule copy_msg_to__rules(47).
     This was achieved by replacing all occurrences of 
          spark__unsigned__u7__last by:
          127.
<S>  New H23:  fld_tree_level(fld_tweak_words(fld_h(ctx))) <= 127
-S-  Applied substitution rule copy_msg_to__rules(52).
     This was achieved by replacing all occurrences of 
          spark__unsigned__byte__first by:
          0.
<S>  New H11:  for_all(i___2 : integer, skein_512_block_bytes_index__first <= 
          i___2 and i___2 <= skein_512_block_bytes_index__last -> 0 <= element(
          fld_b(ctx), [i___2]) and element(fld_b(ctx), [i___2]) <= 
          spark__unsigned__byte__last)
<S>  New H30:  for_all(i___1 : integer, msg__index__subtype__1__first <= i___1 
          and i___1 <= msg__index__subtype__1__last -> 0 <= element(msg, [i___1]
          ) and element(msg, [i___1]) <= spark__unsigned__byte__last)
-S-  Applied substitution rule copy_msg_to__rules(53).
     This was achieved by replacing all occurrences of 
          spark__unsigned__byte__last by:
          255.
<S>  New H11:  for_all(i___2 : integer, skein_512_block_bytes_index__first <= 
          i___2 and i___2 <= skein_512_block_bytes_index__last -> 0 <= element(
          fld_b(ctx), [i___2]) and element(fld_b(ctx), [i___2]) <= 255)
<S>  New H30:  for_all(i___1 : integer, msg__index__subtype__1__first <= i___1 
          and i___1 <= msg__index__subtype__1__last -> 0 <= element(msg, [i___1]
          ) and element(msg, [i___1]) <= 255)
-S-  Applied substitution rule copy_msg_to__rules(58).
     This was achieved by replacing all occurrences of 
          spark__unsigned__u16__first by:
          0.
<S>  New H24:  fld_reserved(fld_tweak_words(fld_h(ctx))) >= 0
-S-  Applied substitution rule copy_msg_to__rules(59).
     This was achieved by replacing all occurrences of 
          spark__unsigned__u16__last by:
          65535.
<S>  New H25:  fld_reserved(fld_tweak_words(fld_h(ctx))) <= 65535
-S-  Applied substitution rule copy_msg_to__rules(64).
     This was achieved by replacing all occurrences of 
          spark__unsigned__u32__first by:
          0.
<S>  New H26:  fld_byte_count_msb(fld_tweak_words(fld_h(ctx))) >= 0
-S-  Applied substitution rule copy_msg_to__rules(65).
     This was achieved by replacing all occurrences of 
          spark__unsigned__u32__last by:
          4294967295.
<S>  New H27:  fld_byte_count_msb(fld_tweak_words(fld_h(ctx))) <= 4294967295
-S-  Applied substitution rule copy_msg_to__rules(70).
     This was achieved by replacing all occurrences of 
          spark__unsigned__u64__first by:
          0.
<S>  New H12:  for_all(i___1 : integer, skein_512_state_words_index__first <= 
          i___1 and i___1 <= skein_512_state_words_index__last -> 0 <= element(
          fld_x(ctx), [i___1]) and element(fld_x(ctx), [i___1]) <= 
          spark__unsigned__u64__last)
<S>  New H28:  fld_byte_count_lsb(fld_tweak_words(fld_h(ctx))) >= 0
-S-  Applied substitution rule copy_msg_to__rules(71).
     This was achieved by replacing all occurrences of 
          spark__unsigned__u64__last by:
          18446744073709551615.
<S>  New H29:  fld_byte_count_lsb(fld_tweak_words(fld_h(ctx))) <= 
          18446744073709551615
<S>  New H12:  for_all(i___1 : integer, skein_512_state_words_index__first <= 
          i___1 and i___1 <= skein_512_state_words_index__last -> 0 <= element(
          fld_x(ctx), [i___1]) and element(fld_x(ctx), [i___1]) <= 
          18446744073709551615)
-S-  Applied substitution rule copy_msg_to__rules(81).
     This was achieved by replacing all occurrences of hash_bit_length__first 
          by:
          0.
<S>  New H15:  fld_hash_bit_len(fld_h(ctx)) >= 0
-S-  Applied substitution rule copy_msg_to__rules(82).
     This was achieved by replacing all occurrences of hash_bit_length__last by:
          2147483640.
<S>  New H16:  fld_hash_bit_len(fld_h(ctx)) <= 2147483640
-S-  Applied substitution rule copy_msg_to__rules(86).
     This was achieved by replacing all occurrences of 
          skein_512_state_words_index__first by:
          0.
<S>  New H12:  for_all(i___1 : integer, 0 <= i___1 and i___1 <= 
          skein_512_state_words_index__last -> 0 <= element(fld_x(ctx), [i___1])
           and element(fld_x(ctx), [i___1]) <= 18446744073709551615)
-S-  Applied substitution rule copy_msg_to__rules(87).
     This was achieved by replacing all occurrences of 
          skein_512_state_words_index__last by:
          7.
<S>  New H12:  for_all(i___1 : integer, 0 <= i___1 and i___1 <= 7 -> 0 <= 
          element(fld_x(ctx), [i___1]) and element(fld_x(ctx), [i___1]) <= 
          18446744073709551615)
-S-  Applied substitution rule copy_msg_to__rules(96).
     This was achieved by replacing all occurrences of 
          skein_512_block_bytes_index__first by:
          0.
<S>  New H11:  for_all(i___2 : integer, 0 <= i___2 and i___2 <= 
          skein_512_block_bytes_index__last -> 0 <= element(fld_b(ctx), [i___2])
           and element(fld_b(ctx), [i___2]) <= 255)
-S-  Applied substitution rule copy_msg_to__rules(97).
     This was achieved by replacing all occurrences of 
          skein_512_block_bytes_index__last by:
          63.
<S>  New H6:  fld_byte_count(fld_h(ctx)) + (num_bytes - 1) <= 63
<S>  New H11:  for_all(i___2 : integer, 0 <= i___2 and i___2 <= 63 -> 0 <= 
          element(fld_b(ctx), [i___2]) and element(fld_b(ctx), [i___2]) <= 255)
%%%  Hypotheses H31 & H9 together imply that
          num_bytes = 0.
     H31 & H9 have therefore been deleted and a new H32 added to this effect.
***  Proved C3:  fld_byte_count(fld_h(ctx)) = fld_byte_count(fld_h(ctx)) + 
          num_bytes
     via its standard form, which is:
     Std.Fm C3:  num_bytes = 0
     using hypothesis H32.
***  Proved C4:  fld_byte_count(fld_h(ctx)) >= 0
     using hypothesis H13.
---  Eliminated hypothesis H17 (true-hypothesis).
---  Eliminated hypothesis H18 (true-hypothesis).
---  Eliminated hypothesis H21 (true-hypothesis).
---  Eliminated hypothesis H10 (redundant, given H32).
---  Eliminated hypothesis H14 (redundant, given H6 & H32).
---  Eliminated hypothesis H15 (redundant, given H1).
-S-  Eliminated hypothesis H32.
     This was achieved by replacing all occurrences of num_bytes by:
          0.
<S>  New H5:  msg_offset + - 1 <= msg__index__subtype__1__last
<S>  New H6:  fld_byte_count(fld_h(ctx)) <= 64
***  Proved C5:  fld_byte_count(fld_h(ctx)) <= 64
     using hypothesis H6.
***  PROVED VC.


@@@@@@@@@@  VC: procedure_copy_msg_to_b_13.  @@@@@@@@@@
%%%  Simplified H2 on reading formula in, to give:
     %%%  H2:  fld_hash_bit_len(fld_h(ctx)) = fld_hash_bit_len(fld_h(ctx~))
%%%  Simplified H3 on reading formula in, to give:
     %%%  H3:  fld_byte_count(fld_h(ctx)) = fld_byte_count(fld_h(ctx~))
%%%  Simplified H12 on reading formula in, to give:
     %%%  H12:  for_all(i___2 : integer, skein_512_block_bytes_index__first <= 
          i___2 and i___2 <= skein_512_block_bytes_index__last -> 
          spark__unsigned__byte__first <= element(fld_b(ctx), [i___2]) and 
          element(fld_b(ctx), [i___2]) <= spark__unsigned__byte__last)
%%%  Simplified H13 on reading formula in, to give:
     %%%  H13:  for_all(i___1 : integer, skein_512_state_words_index__first <= 
          i___1 and i___1 <= skein_512_state_words_index__last -> 
          spark__unsigned__u64__first <= element(fld_x(ctx), [i___1]) and 
          element(fld_x(ctx), [i___1]) <= spark__unsigned__u64__last)
%%%  Simplified H31 on reading formula in, to give:
     %%%  H31:  for_all(i___1 : integer, msg__index__subtype__1__first <= i___1 
          and i___1 <= msg__index__subtype__1__last -> 
          spark__unsigned__byte__first <= element(msg, [i___1]) and element(
          msg, [i___1]) <= spark__unsigned__byte__last)
%%%  Simplified H32 on reading formula in, to give:
     %%%  H32:  fld_hash_bit_len(fld_h(ctx~)) > 0
%%%  Simplified H37 on reading formula in, to give:
     %%%  H37:  fld_byte_count(fld_h(ctx~)) + (num_bytes - 1) <= 
          skein_512_block_bytes_index__last
%%%  Simplified C1 on reading formula in, to give:
     %%%  C1:  fld_hash_bit_len(fld_h(ctx)) > 0
%%%  Simplified C2 on reading formula in, to give:
     %%%  C2:  fld_hash_bit_len(fld_h(ctx)) = fld_hash_bit_len(fld_h(ctx~))
%%%  Simplified C3 on reading formula in, to give:
     %%%  C3:  fld_byte_count(fld_h(ctx)) + num_bytes = fld_byte_count(fld_h(
          ctx~)) + num_bytes
%%%  Simplified C4 on reading formula in, to give:
     %%%  C4:  fld_byte_count(fld_h(ctx)) + num_bytes >= 
          skein_512_block_bytes_count__first
%%%  Simplified C5 on reading formula in, to give:
     %%%  C5:  fld_byte_count(fld_h(ctx)) + num_bytes <= 
          skein_512_block_bytes_count__last
***  Proved C1:  fld_hash_bit_len(fld_h(ctx)) > 0
     using hypothesis H1.
***  Proved C2:  fld_hash_bit_len(fld_h(ctx)) = fld_hash_bit_len(fld_h(ctx~))
     using hypothesis H2.
-S-  Applied substitution rule copy_msg_to__rules(91).
     This was achieved by replacing all occurrences of 
          skein_512_block_bytes_count__first by:
          0.
<S>  New H4:  fld_byte_count(fld_h(ctx)) >= 0
<S>  New C4:  fld_byte_count(fld_h(ctx)) + num_bytes >= 0
-S-  Applied substitution rule copy_msg_to__rules(92).
     This was achieved by replacing all occurrences of 
          skein_512_block_bytes_count__last by:
          64.
<S>  New H5:  fld_byte_count(fld_h(ctx)) <= 64
<S>  New C5:  fld_byte_count(fld_h(ctx)) + num_bytes <= 64
-S-  Applied substitution rule copy_msg_to__rules(7).
     This was achieved by replacing all occurrences of natural__first by:
          0.
<S>  New H8:  msg_offset >= 0
<S>  New H10:  num_bytes >= 0
<S>  New H14:  fld_byte_count(fld_h(ctx)) >= 0
<S>  New H38:  src >= 0
<S>  New H44:  final_src >= 0
<S>  New H47:  fld_byte_count(fld_h(ctx)) + num_bytes >= 0
-S-  Applied substitution rule copy_msg_to__rules(8).
     This was achieved by replacing all occurrences of natural__last by:
          2147483647.
<S>  New H9:  msg_offset <= 2147483647
<S>  New H11:  num_bytes <= 2147483647
<S>  New H15:  fld_byte_count(fld_h(ctx)) <= 2147483647
<S>  New H39:  src <= 2147483647
<S>  New H45:  final_src <= 2147483647
<S>  New H48:  fld_byte_count(fld_h(ctx)) + num_bytes <= 2147483647
-S-  Applied substitution rule copy_msg_to__rules(40).
     This was achieved by replacing all occurrences of 
          spark__unsigned__u6__first by:
          0.
<S>  New H20:  fld_field_type(fld_tweak_words(fld_h(ctx))) >= 0
-S-  Applied substitution rule copy_msg_to__rules(41).
     This was achieved by replacing all occurrences of 
          spark__unsigned__u6__last by:
          63.
<S>  New H21:  fld_field_type(fld_tweak_words(fld_h(ctx))) <= 63
-S-  Applied substitution rule copy_msg_to__rules(46).
     This was achieved by replacing all occurrences of 
          spark__unsigned__u7__first by:
          0.
<S>  New H23:  fld_tree_level(fld_tweak_words(fld_h(ctx))) >= 0
-S-  Applied substitution rule copy_msg_to__rules(47).
     This was achieved by replacing all occurrences of 
          spark__unsigned__u7__last by:
          127.
<S>  New H24:  fld_tree_level(fld_tweak_words(fld_h(ctx))) <= 127
-S-  Applied substitution rule copy_msg_to__rules(52).
     This was achieved by replacing all occurrences of 
          spark__unsigned__byte__first by:
          0.
<S>  New H12:  for_all(i___2 : integer, skein_512_block_bytes_index__first <= 
          i___2 and i___2 <= skein_512_block_bytes_index__last -> 0 <= element(
          fld_b(ctx), [i___2]) and element(fld_b(ctx), [i___2]) <= 
          spark__unsigned__byte__last)
<S>  New H31:  for_all(i___1 : integer, msg__index__subtype__1__first <= i___1 
          and i___1 <= msg__index__subtype__1__last -> 0 <= element(msg, [i___1]
          ) and element(msg, [i___1]) <= spark__unsigned__byte__last)
-S-  Applied substitution rule copy_msg_to__rules(53).
     This was achieved by replacing all occurrences of 
          spark__unsigned__byte__last by:
          255.
<S>  New H12:  for_all(i___2 : integer, skein_512_block_bytes_index__first <= 
          i___2 and i___2 <= skein_512_block_bytes_index__last -> 0 <= element(
          fld_b(ctx), [i___2]) and element(fld_b(ctx), [i___2]) <= 255)
<S>  New H31:  for_all(i___1 : integer, msg__index__subtype__1__first <= i___1 
          and i___1 <= msg__index__subtype__1__last -> 0 <= element(msg, [i___1]
          ) and element(msg, [i___1]) <= 255)
-S-  Applied substitution rule copy_msg_to__rules(58).
     This was achieved by replacing all occurrences of 
          spark__unsigned__u16__first by:
          0.
<S>  New H25:  fld_reserved(fld_tweak_words(fld_h(ctx))) >= 0
-S-  Applied substitution rule copy_msg_to__rules(59).
     This was achieved by replacing all occurrences of 
          spark__unsigned__u16__last by:
          65535.
<S>  New H26:  fld_reserved(fld_tweak_words(fld_h(ctx))) <= 65535
-S-  Applied substitution rule copy_msg_to__rules(64).
     This was achieved by replacing all occurrences of 
          spark__unsigned__u32__first by:
          0.
<S>  New H27:  fld_byte_count_msb(fld_tweak_words(fld_h(ctx))) >= 0
-S-  Applied substitution rule copy_msg_to__rules(65).
     This was achieved by replacing all occurrences of 
          spark__unsigned__u32__last by:
          4294967295.
<S>  New H28:  fld_byte_count_msb(fld_tweak_words(fld_h(ctx))) <= 4294967295
-S-  Applied substitution rule copy_msg_to__rules(70).
     This was achieved by replacing all occurrences of 
          spark__unsigned__u64__first by:
          0.
<S>  New H13:  for_all(i___1 : integer, skein_512_state_words_index__first <= 
          i___1 and i___1 <= skein_512_state_words_index__last -> 0 <= element(
          fld_x(ctx), [i___1]) and element(fld_x(ctx), [i___1]) <= 
          spark__unsigned__u64__last)
<S>  New H29:  fld_byte_count_lsb(fld_tweak_words(fld_h(ctx))) >= 0
-S-  Applied substitution rule copy_msg_to__rules(71).
     This was achieved by replacing all occurrences of 
          spark__unsigned__u64__last by:
          18446744073709551615.
<S>  New H30:  fld_byte_count_lsb(fld_tweak_words(fld_h(ctx))) <= 
          18446744073709551615
<S>  New H13:  for_all(i___1 : integer, skein_512_state_words_index__first <= 
          i___1 and i___1 <= skein_512_state_words_index__last -> 0 <= element(
          fld_x(ctx), [i___1]) and element(fld_x(ctx), [i___1]) <= 
          18446744073709551615)
-S-  Applied substitution rule copy_msg_to__rules(81).
     This was achieved by replacing all occurrences of hash_bit_length__first 
          by:
          0.
<S>  New H16:  fld_hash_bit_len(fld_h(ctx)) >= 0
-S-  Applied substitution rule copy_msg_to__rules(82).
     This was achieved by replacing all occurrences of hash_bit_length__last by:
          2147483640.
<S>  New H17:  fld_hash_bit_len(fld_h(ctx)) <= 2147483640
-S-  Applied substitution rule copy_msg_to__rules(86).
     This was achieved by replacing all occurrences of 
          skein_512_state_words_index__first by:
          0.
<S>  New H13:  for_all(i___1 : integer, 0 <= i___1 and i___1 <= 
          skein_512_state_words_index__last -> 0 <= element(fld_x(ctx), [i___1])
           and element(fld_x(ctx), [i___1]) <= 18446744073709551615)
-S-  Applied substitution rule copy_msg_to__rules(87).
     This was achieved by replacing all occurrences of 
          skein_512_state_words_index__last by:
          7.
<S>  New H13:  for_all(i___1 : integer, 0 <= i___1 and i___1 <= 7 -> 0 <= 
          element(fld_x(ctx), [i___1]) and element(fld_x(ctx), [i___1]) <= 
          18446744073709551615)
-S-  Applied substitution rule copy_msg_to__rules(96).
     This was achieved by replacing all occurrences of 
          skein_512_block_bytes_index__first by:
          0.
<S>  New H40:  dst >= 0
<S>  New H42:  final_dst >= 0
<S>  New H12:  for_all(i___2 : integer, 0 <= i___2 and i___2 <= 
          skein_512_block_bytes_index__last -> 0 <= element(fld_b(ctx), [i___2])
           and element(fld_b(ctx), [i___2]) <= 255)
-S-  Applied substitution rule copy_msg_to__rules(97).
     This was achieved by replacing all occurrences of 
          skein_512_block_bytes_index__last by:
          63.
<S>  New H6:  fld_byte_count(fld_h(ctx)) + num_bytes <= 64
<S>  New H37:  fld_byte_count(fld_h(ctx~)) + (num_bytes - 1) <= 63
<S>  New H41:  dst <= 63
<S>  New H43:  final_dst <= 63
<S>  New H12:  for_all(i___2 : integer, 0 <= i___2 and i___2 <= 63 -> 0 <= 
          element(fld_b(ctx), [i___2]) and element(fld_b(ctx), [i___2]) <= 255)
***  Proved C3:  fld_byte_count(fld_h(ctx)) + num_bytes = fld_byte_count(fld_h(
          ctx~)) + num_bytes
     via its standard form, which is:
     Std.Fm C3:  fld_byte_count(fld_h(ctx)) - fld_byte_count(fld_h(ctx~)) = 0
     using hypothesis H3.
***  Proved C4:  fld_byte_count(fld_h(ctx)) + num_bytes >= 0
     using hypothesis H47.
***  Proved C5:  fld_byte_count(fld_h(ctx)) + num_bytes <= 64
     using hypothesis H6.
***  PROVED VC.

