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

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



SPARK Simplifier Pro Edition


procedure Skein.Skein_512_Process_Block.Initialize_TS






@@@@@@@@@@  VC: procedure_initialize_ts_1.  @@@@@@@@@@
%%%  Simplified H2 on reading formula in, to give:
     %%%  H2:  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 H3 on reading formula in, to give:
     %%%  H3:  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 H21 on reading formula in, to give:
     %%%  H21:  for_all(i_ : integer, modifier_words_index__first <= i_ and i_ 
          <= modifier_words_index__last -> spark__unsigned__u64__first <= 
          element(tweak_to_words(fld_tweak_words(fld_h(ctx))), [i_]) and 
          element(tweak_to_words(fld_tweak_words(fld_h(ctx))), [i_]) <= 
          spark__unsigned__u64__last)
-S-  Applied substitution rule initialize_t_rules(70).
     This was achieved by replacing all occurrences of 
          spark__unsigned__u64__first by:
          0.
<S>  New H3:  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 H19:  fld_byte_count_lsb(fld_tweak_words(fld_h(ctx))) >= 0
<S>  New H21:  for_all(i_ : integer, modifier_words_index__first <= i_ and i_ 
          <= modifier_words_index__last -> 0 <= element(tweak_to_words(
          fld_tweak_words(fld_h(ctx))), [i_]) and element(tweak_to_words(
          fld_tweak_words(fld_h(ctx))), [i_]) <= spark__unsigned__u64__last)
<S>  New C1:  element(tweak_to_words(fld_tweak_words(fld_h(ctx))), [0]) >= 0
-S-  Applied substitution rule initialize_t_rules(71).
     This was achieved by replacing all occurrences of 
          spark__unsigned__u64__last by:
          18446744073709551615.
<S>  New H20:  fld_byte_count_lsb(fld_tweak_words(fld_h(ctx))) <= 
          18446744073709551615
<S>  New H3:  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>  New H21:  for_all(i_ : integer, modifier_words_index__first <= i_ and i_ 
          <= modifier_words_index__last -> 0 <= element(tweak_to_words(
          fld_tweak_words(fld_h(ctx))), [i_]) and element(tweak_to_words(
          fld_tweak_words(fld_h(ctx))), [i_]) <= 18446744073709551615)
<S>  New C2:  element(tweak_to_words(fld_tweak_words(fld_h(ctx))), [0]) <= 
          18446744073709551615
-S-  Applied substitution rule initialize_t_rules(98).
     This was achieved by replacing all occurrences of 
          modifier_words_index__first by:
          0.
<S>  New H21:  for_all(i_ : integer, 0 <= i_ and i_ <= 
          modifier_words_index__last -> 0 <= element(tweak_to_words(
          fld_tweak_words(fld_h(ctx))), [i_]) and element(tweak_to_words(
          fld_tweak_words(fld_h(ctx))), [i_]) <= 18446744073709551615)
<S>  New C3:  true
-S-  Applied substitution rule initialize_t_rules(99).
     This was achieved by replacing all occurrences of 
          modifier_words_index__last by:
          1.
<S>  New H21:  for_all(i_ : integer, 0 <= i_ and i_ <= 1 -> 0 <= element(
          tweak_to_words(fld_tweak_words(fld_h(ctx))), [i_]) and element(
          tweak_to_words(fld_tweak_words(fld_h(ctx))), [i_]) <= 
          18446744073709551615)
<S>  New C4:  true
***  Proved C1:  element(tweak_to_words(fld_tweak_words(fld_h(ctx))), [0]) >= 0
     using hypothesis H21.
***  Proved C2:  element(tweak_to_words(fld_tweak_words(fld_h(ctx))), [0]) <= 
          18446744073709551615
     using hypothesis H21.
***  Proved C3:  true
***  Proved C4:  true
***  PROVED VC.


@@@@@@@@@@  VC: procedure_initialize_ts_2.  @@@@@@@@@@
%%%  Simplified H2 on reading formula in, to give:
     %%%  H2:  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 H3 on reading formula in, to give:
     %%%  H3:  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 H21 on reading formula in, to give:
     %%%  H21:  for_all(i_ : integer, modifier_words_index__first <= i_ and i_ 
          <= modifier_words_index__last -> spark__unsigned__u64__first <= 
          element(tweak_to_words(fld_tweak_words(fld_h(ctx))), [i_]) and 
          element(tweak_to_words(fld_tweak_words(fld_h(ctx))), [i_]) <= 
          spark__unsigned__u64__last)
---  Hypothesis H26 has been replaced by "true".  (It is already present, as 
          H21).
***  Proved C3:  1 >= modifier_words_index__first
     using hypothesis H24.
-S-  Applied substitution rule initialize_t_rules(70).
     This was achieved by replacing all occurrences of 
          spark__unsigned__u64__first by:
          0.
<S>  New H3:  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 H19:  fld_byte_count_lsb(fld_tweak_words(fld_h(ctx))) >= 0
<S>  New H21:  for_all(i_ : integer, modifier_words_index__first <= i_ and i_ 
          <= modifier_words_index__last -> 0 <= element(tweak_to_words(
          fld_tweak_words(fld_h(ctx))), [i_]) and element(tweak_to_words(
          fld_tweak_words(fld_h(ctx))), [i_]) <= spark__unsigned__u64__last)
<S>  New H22:  element(tweak_to_words(fld_tweak_words(fld_h(ctx))), [0]) >= 0
<S>  New C1:  element(tweak_to_words(fld_tweak_words(fld_h(ctx))), [1]) >= 0
-S-  Applied substitution rule initialize_t_rules(71).
     This was achieved by replacing all occurrences of 
          spark__unsigned__u64__last by:
          18446744073709551615.
<S>  New H20:  fld_byte_count_lsb(fld_tweak_words(fld_h(ctx))) <= 
          18446744073709551615
<S>  New H23:  element(tweak_to_words(fld_tweak_words(fld_h(ctx))), [0]) <= 
          18446744073709551615
<S>  New H3:  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>  New H21:  for_all(i_ : integer, modifier_words_index__first <= i_ and i_ 
          <= modifier_words_index__last -> 0 <= element(tweak_to_words(
          fld_tweak_words(fld_h(ctx))), [i_]) and element(tweak_to_words(
          fld_tweak_words(fld_h(ctx))), [i_]) <= 18446744073709551615)
<S>  New C2:  element(tweak_to_words(fld_tweak_words(fld_h(ctx))), [1]) <= 
          18446744073709551615
-S-  Applied substitution rule initialize_t_rules(99).
     This was achieved by replacing all occurrences of 
          modifier_words_index__last by:
          1.
<S>  New H25:  true
<S>  New H21:  for_all(i_ : integer, modifier_words_index__first <= i_ and i_ 
          <= 1 -> 0 <= element(tweak_to_words(fld_tweak_words(fld_h(ctx))), [i_]
          ) and element(tweak_to_words(fld_tweak_words(fld_h(ctx))), [i_]) <= 
          18446744073709551615)
<S>  New C4:  true
***  Proved C1:  element(tweak_to_words(fld_tweak_words(fld_h(ctx))), [1]) >= 0
     using hypotheses H21 & H24.
***  Proved C2:  element(tweak_to_words(fld_tweak_words(fld_h(ctx))), [1]) <= 
          18446744073709551615
     using hypotheses H21 & H24.
***  Proved C4:  true
***  PROVED VC.


@@@@@@@@@@  VC: procedure_initialize_ts_3.  @@@@@@@@@@
%%%  Simplified H2 on reading formula in, to give:
     %%%  H2:  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 H3 on reading formula in, to give:
     %%%  H3:  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 H21 on reading formula in, to give:
     %%%  H21:  for_all(i_ : integer, modifier_words_index__first <= i_ and i_ 
          <= modifier_words_index__last -> spark__unsigned__u64__first <= 
          element(tweak_to_words(fld_tweak_words(fld_h(ctx))), [i_]) and 
          element(tweak_to_words(fld_tweak_words(fld_h(ctx))), [i_]) <= 
          spark__unsigned__u64__last)
---  Hypothesis H26 has been replaced by "true".  (It is already present, as 
          H21).
***  Proved C3:  element(tweak_to_words(fld_tweak_words(fld_h(ctx))), [1]) >= 
          spark__unsigned__u64__first
     using hypothesis H27.
***  Proved C4:  element(tweak_to_words(fld_tweak_words(fld_h(ctx))), [1]) <= 
          spark__unsigned__u64__last
     using hypothesis H28.
***  Proved C5:  element(tweak_to_words(fld_tweak_words(fld_h(ctx))), [0]) >= 
          spark__unsigned__u64__first
     using hypothesis H22.
***  Proved C6:  element(tweak_to_words(fld_tweak_words(fld_h(ctx))), [0]) <= 
          spark__unsigned__u64__last
     using hypothesis H23.
-S-  Applied substitution rule initialize_t_rules(70).
     This was achieved by replacing all occurrences of 
          spark__unsigned__u64__first by:
          0.
<S>  New H3:  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 H19:  fld_byte_count_lsb(fld_tweak_words(fld_h(ctx))) >= 0
<S>  New H21:  for_all(i_ : integer, modifier_words_index__first <= i_ and i_ 
          <= modifier_words_index__last -> 0 <= element(tweak_to_words(
          fld_tweak_words(fld_h(ctx))), [i_]) and element(tweak_to_words(
          fld_tweak_words(fld_h(ctx))), [i_]) <= spark__unsigned__u64__last)
<S>  New H22:  element(tweak_to_words(fld_tweak_words(fld_h(ctx))), [0]) >= 0
<S>  New H27:  element(tweak_to_words(fld_tweak_words(fld_h(ctx))), [1]) >= 0
<S>  New C1:  bit__xor(element(tweak_to_words(fld_tweak_words(fld_h(ctx))), [0])
          , element(tweak_to_words(fld_tweak_words(fld_h(ctx))), [1])) >= 0
-S-  Applied substitution rule initialize_t_rules(71).
     This was achieved by replacing all occurrences of 
          spark__unsigned__u64__last by:
          18446744073709551615.
<S>  New H20:  fld_byte_count_lsb(fld_tweak_words(fld_h(ctx))) <= 
          18446744073709551615
<S>  New H23:  element(tweak_to_words(fld_tweak_words(fld_h(ctx))), [0]) <= 
          18446744073709551615
<S>  New H28:  element(tweak_to_words(fld_tweak_words(fld_h(ctx))), [1]) <= 
          18446744073709551615
<S>  New H3:  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>  New H21:  for_all(i_ : integer, modifier_words_index__first <= i_ and i_ 
          <= modifier_words_index__last -> 0 <= element(tweak_to_words(
          fld_tweak_words(fld_h(ctx))), [i_]) and element(tweak_to_words(
          fld_tweak_words(fld_h(ctx))), [i_]) <= 18446744073709551615)
<S>  New C2:  bit__xor(element(tweak_to_words(fld_tweak_words(fld_h(ctx))), [0])
          , element(tweak_to_words(fld_tweak_words(fld_h(ctx))), [1])) <= 
          18446744073709551615
***  Proved C1:  bit__xor(element(tweak_to_words(fld_tweak_words(fld_h(ctx))), [
          0]), element(tweak_to_words(fld_tweak_words(fld_h(ctx))), [1])) >= 0
     using hypotheses H22 & H27.
***  Proved C2:  bit__xor(element(tweak_to_words(fld_tweak_words(fld_h(ctx))), [
          0]), element(tweak_to_words(fld_tweak_words(fld_h(ctx))), [1])) <= 
          18446744073709551615
     using hypotheses H22, H23, H27 & H28.
***  PROVED VC.


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

