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

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



SPARK Simplifier Pro Edition


procedure Skein.Skein_512_Process_Block.Update_Context






@@@@@@@@@@  VC: procedure_update_context_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___1 : integer, spark__crypto__i8__first <= i___1 and 
          i___1 <= spark__crypto__i8__last -> spark__unsigned__u64__first <= 
          element(w, [i___1]) and element(w, [i___1]) <= 
          spark__unsigned__u64__last)
%%%  Simplified H22 on reading formula in, to give:
     %%%  H22:  for_all(i___1 : integer, spark__crypto__i8__first <= i___1 and 
          i___1 <= spark__crypto__i8__last -> spark__unsigned__u64__first <= 
          element(x, [i___1]) and element(x, [i___1]) <= 
          spark__unsigned__u64__last)
-S-  Applied substitution rule update_conte_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___1 : integer, spark__crypto__i8__first <= i___1 and 
          i___1 <= spark__crypto__i8__last -> 0 <= element(w, [i___1]) and 
          element(w, [i___1]) <= spark__unsigned__u64__last)
<S>  New H22:  for_all(i___1 : integer, spark__crypto__i8__first <= i___1 and 
          i___1 <= spark__crypto__i8__last -> 0 <= element(x, [i___1]) and 
          element(x, [i___1]) <= spark__unsigned__u64__last)
<S>  New C1:  bit__xor(element(x, [7]), element(w, [7])) >= 0
<S>  New C7:  bit__xor(element(x, [6]), element(w, [6])) >= 0
<S>  New C13:  bit__xor(element(x, [5]), element(w, [5])) >= 0
<S>  New C19:  bit__xor(element(x, [4]), element(w, [4])) >= 0
<S>  New C25:  bit__xor(element(x, [3]), element(w, [3])) >= 0
<S>  New C31:  bit__xor(element(x, [2]), element(w, [2])) >= 0
<S>  New C37:  bit__xor(element(x, [1]), element(w, [1])) >= 0
<S>  New C43:  bit__xor(element(x, [0]), element(w, [0])) >= 0
-S-  Applied substitution rule update_conte_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___1 : integer, spark__crypto__i8__first <= i___1 and 
          i___1 <= spark__crypto__i8__last -> 0 <= element(w, [i___1]) and 
          element(w, [i___1]) <= 18446744073709551615)
<S>  New H22:  for_all(i___1 : integer, spark__crypto__i8__first <= i___1 and 
          i___1 <= spark__crypto__i8__last -> 0 <= element(x, [i___1]) and 
          element(x, [i___1]) <= 18446744073709551615)
<S>  New C2:  bit__xor(element(x, [7]), element(w, [7])) <= 18446744073709551615
<S>  New C8:  bit__xor(element(x, [6]), element(w, [6])) <= 18446744073709551615
<S>  New C14:  bit__xor(element(x, [5]), element(w, [5])) <= 
          18446744073709551615
<S>  New C20:  bit__xor(element(x, [4]), element(w, [4])) <= 
          18446744073709551615
<S>  New C26:  bit__xor(element(x, [3]), element(w, [3])) <= 
          18446744073709551615
<S>  New C32:  bit__xor(element(x, [2]), element(w, [2])) <= 
          18446744073709551615
<S>  New C38:  bit__xor(element(x, [1]), element(w, [1])) <= 
          18446744073709551615
<S>  New C44:  bit__xor(element(x, [0]), element(w, [0])) <= 
          18446744073709551615
-S-  Applied substitution rule update_conte_rules(76).
     This was achieved by replacing all occurrences of spark__crypto__i8__first 
          by:
          0.
<S>  New H21:  for_all(i___1 : integer, 0 <= i___1 and i___1 <= 
          spark__crypto__i8__last -> 0 <= element(w, [i___1]) and element(w, [
          i___1]) <= 18446744073709551615)
<S>  New H22:  for_all(i___1 : integer, 0 <= i___1 and i___1 <= 
          spark__crypto__i8__last -> 0 <= element(x, [i___1]) and element(x, [
          i___1]) <= 18446744073709551615)
<S>  New C3:  true
<S>  New C5:  true
<S>  New C9:  true
<S>  New C11:  true
<S>  New C15:  true
<S>  New C17:  true
<S>  New C21:  true
<S>  New C23:  true
<S>  New C27:  true
<S>  New C29:  true
<S>  New C33:  true
<S>  New C35:  true
<S>  New C39:  true
<S>  New C41:  true
<S>  New C45:  true
<S>  New C47:  true
-S-  Applied substitution rule update_conte_rules(77).
     This was achieved by replacing all occurrences of spark__crypto__i8__last 
          by:
          7.
<S>  New H21:  for_all(i___1 : integer, 0 <= i___1 and i___1 <= 7 -> 0 <= 
          element(w, [i___1]) and element(w, [i___1]) <= 18446744073709551615)
<S>  New H22:  for_all(i___1 : integer, 0 <= i___1 and i___1 <= 7 -> 0 <= 
          element(x, [i___1]) and element(x, [i___1]) <= 18446744073709551615)
<S>  New C4:  true
<S>  New C6:  true
<S>  New C10:  true
<S>  New C12:  true
<S>  New C16:  true
<S>  New C18:  true
<S>  New C22:  true
<S>  New C24:  true
<S>  New C28:  true
<S>  New C30:  true
<S>  New C34:  true
<S>  New C36:  true
<S>  New C40:  true
<S>  New C42:  true
<S>  New C46:  true
<S>  New C48:  true
***  Proved C3:  true
***  Proved C5:  true
***  Proved C9:  true
***  Proved C11:  true
***  Proved C15:  true
***  Proved C17:  true
***  Proved C21:  true
***  Proved C23:  true
***  Proved C27:  true
***  Proved C29:  true
***  Proved C33:  true
***  Proved C35:  true
***  Proved C39:  true
***  Proved C41:  true
***  Proved C45:  true
***  Proved C47:  true
***  Proved C4:  true
***  Proved C6:  true
***  Proved C10:  true
***  Proved C12:  true
***  Proved C16:  true
***  Proved C18:  true
***  Proved C22:  true
***  Proved C24:  true
***  Proved C28:  true
***  Proved C30:  true
***  Proved C34:  true
***  Proved C36:  true
***  Proved C40:  true
***  Proved C42:  true
***  Proved C46:  true
***  Proved C48:  true
-S-  Applied substitution rule update_conte_rules(7).
     This was achieved by replacing all occurrences of natural__first by:
          0.
<S>  New H4:  fld_byte_count(fld_h(ctx)) >= 0
-S-  Applied substitution rule update_conte_rules(8).
     This was achieved by replacing all occurrences of natural__last by:
          2147483647.
<S>  New H5:  fld_byte_count(fld_h(ctx)) <= 2147483647
-S-  Applied substitution rule update_conte_rules(40).
     This was achieved by replacing all occurrences of 
          spark__unsigned__u6__first by:
          0.
<S>  New H10:  fld_field_type(fld_tweak_words(fld_h(ctx))) >= 0
-S-  Applied substitution rule update_conte_rules(41).
     This was achieved by replacing all occurrences of 
          spark__unsigned__u6__last by:
          63.
<S>  New H11:  fld_field_type(fld_tweak_words(fld_h(ctx))) <= 63
-S-  Applied substitution rule update_conte_rules(46).
     This was achieved by replacing all occurrences of 
          spark__unsigned__u7__first by:
          0.
<S>  New H13:  fld_tree_level(fld_tweak_words(fld_h(ctx))) >= 0
-S-  Applied substitution rule update_conte_rules(47).
     This was achieved by replacing all occurrences of 
          spark__unsigned__u7__last by:
          127.
<S>  New H14:  fld_tree_level(fld_tweak_words(fld_h(ctx))) <= 127
-S-  Applied substitution rule update_conte_rules(52).
     This was achieved by replacing all occurrences of 
          spark__unsigned__byte__first by:
          0.
<S>  New H2:  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-  Applied substitution rule update_conte_rules(53).
     This was achieved by replacing all occurrences of 
          spark__unsigned__byte__last by:
          255.
<S>  New H2:  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-  Applied substitution rule update_conte_rules(58).
     This was achieved by replacing all occurrences of 
          spark__unsigned__u16__first by:
          0.
<S>  New H15:  fld_reserved(fld_tweak_words(fld_h(ctx))) >= 0
-S-  Applied substitution rule update_conte_rules(59).
     This was achieved by replacing all occurrences of 
          spark__unsigned__u16__last by:
          65535.
<S>  New H16:  fld_reserved(fld_tweak_words(fld_h(ctx))) <= 65535
-S-  Applied substitution rule update_conte_rules(64).
     This was achieved by replacing all occurrences of 
          spark__unsigned__u32__first by:
          0.
<S>  New H17:  fld_byte_count_msb(fld_tweak_words(fld_h(ctx))) >= 0
-S-  Applied substitution rule update_conte_rules(65).
     This was achieved by replacing all occurrences of 
          spark__unsigned__u32__last by:
          4294967295.
<S>  New H18:  fld_byte_count_msb(fld_tweak_words(fld_h(ctx))) <= 4294967295
-S-  Applied substitution rule update_conte_rules(86).
     This was achieved by replacing all occurrences of hash_bit_length__first 
          by:
          0.
<S>  New H6:  fld_hash_bit_len(fld_h(ctx)) >= 0
-S-  Applied substitution rule update_conte_rules(87).
     This was achieved by replacing all occurrences of hash_bit_length__last by:
          2147483640.
<S>  New H7:  fld_hash_bit_len(fld_h(ctx)) <= 2147483640
-S-  Applied substitution rule update_conte_rules(91).
     This was achieved by replacing all occurrences of 
          skein_512_state_words_index__first by:
          0.
<S>  New H3:  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 update_conte_rules(92).
     This was achieved by replacing all occurrences of 
          skein_512_state_words_index__last by:
          7.
<S>  New H3:  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 update_conte_rules(96).
     This was achieved by replacing all occurrences of 
          skein_512_block_bytes_index__first by:
          0.
<S>  New H2:  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 update_conte_rules(97).
     This was achieved by replacing all occurrences of 
          skein_512_block_bytes_index__last by:
          63.
<S>  New H2:  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 H1 (true-hypothesis).
---  Eliminated hypothesis H8 (true-hypothesis).
---  Eliminated hypothesis H9 (true-hypothesis).
---  Eliminated hypothesis H12 (true-hypothesis).
***  Proved C1:  bit__xor(element(x, [7]), element(w, [7])) >= 0
     using hypotheses H21 & H22.
***  Proved C7:  bit__xor(element(x, [6]), element(w, [6])) >= 0
     using hypotheses H21 & H22.
***  Proved C13:  bit__xor(element(x, [5]), element(w, [5])) >= 0
     using hypotheses H21 & H22.
***  Proved C19:  bit__xor(element(x, [4]), element(w, [4])) >= 0
     using hypotheses H21 & H22.
***  Proved C25:  bit__xor(element(x, [3]), element(w, [3])) >= 0
     using hypotheses H21 & H22.
***  Proved C31:  bit__xor(element(x, [2]), element(w, [2])) >= 0
     using hypotheses H21 & H22.
***  Proved C37:  bit__xor(element(x, [1]), element(w, [1])) >= 0
     using hypotheses H21 & H22.
***  Proved C43:  bit__xor(element(x, [0]), element(w, [0])) >= 0
     using hypotheses H21 & H22.
***  Proved C2:  bit__xor(element(x, [7]), element(w, [7])) <= 
          18446744073709551615
     using hypotheses H21 & H22.
***  Proved C8:  bit__xor(element(x, [6]), element(w, [6])) <= 
          18446744073709551615
     using hypotheses H21 & H22.
***  Proved C14:  bit__xor(element(x, [5]), element(w, [5])) <= 
          18446744073709551615
     using hypotheses H21 & H22.
***  Proved C20:  bit__xor(element(x, [4]), element(w, [4])) <= 
          18446744073709551615
     using hypotheses H21 & H22.
***  Proved C26:  bit__xor(element(x, [3]), element(w, [3])) <= 
          18446744073709551615
     using hypotheses H21 & H22.
***  Proved C32:  bit__xor(element(x, [2]), element(w, [2])) <= 
          18446744073709551615
     using hypotheses H21 & H22.
***  Proved C38:  bit__xor(element(x, [1]), element(w, [1])) <= 
          18446744073709551615
     using hypotheses H21 & H22.
***  Proved C44:  bit__xor(element(x, [0]), element(w, [0])) <= 
          18446744073709551615
     using hypotheses H21 & H22.
***  PROVED VC.


@@@@@@@@@@  VC: procedure_update_context_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___1 : integer, spark__crypto__i8__first <= i___1 and 
          i___1 <= spark__crypto__i8__last -> spark__unsigned__u64__first <= 
          element(w, [i___1]) and element(w, [i___1]) <= 
          spark__unsigned__u64__last)
%%%  Simplified H22 on reading formula in, to give:
     %%%  H22:  for_all(i___1 : integer, spark__crypto__i8__first <= i___1 and 
          i___1 <= spark__crypto__i8__last -> spark__unsigned__u64__first <= 
          element(x, [i___1]) and element(x, [i___1]) <= 
          spark__unsigned__u64__last)
---  Hypothesis H27 has been replaced by "true".  (It is already present, as 
          H25).
---  Hypothesis H28 has been replaced by "true".  (It is already present, as 
          H26).
---  Hypothesis H33 has been replaced by "true".  (It is already present, as 
          H31).
---  Hypothesis H34 has been replaced by "true".  (It is already present, as 
          H32).
---  Hypothesis H39 has been replaced by "true".  (It is already present, as 
          H37).
---  Hypothesis H40 has been replaced by "true".  (It is already present, as 
          H38).
---  Hypothesis H45 has been replaced by "true".  (It is already present, as 
          H43).
---  Hypothesis H46 has been replaced by "true".  (It is already present, as 
          H44).
---  Hypothesis H51 has been replaced by "true".  (It is already present, as 
          H49).
---  Hypothesis H52 has been replaced by "true".  (It is already present, as 
          H50).
---  Hypothesis H57 has been replaced by "true".  (It is already present, as 
          H55).
---  Hypothesis H58 has been replaced by "true".  (It is already present, as 
          H56).
---  Hypothesis H63 has been replaced by "true".  (It is already present, as 
          H61).
---  Hypothesis H64 has been replaced by "true".  (It is already present, as 
          H62).
---  Hypothesis H69 has been replaced by "true".  (It is already present, as 
          H67).
---  Hypothesis H70 has been replaced by "true".  (It is already present, as 
          H68).
%%%  Simplified C1 on reading formula in, to give:
     %%%  C1:  true
%%%  Simplified C2 on reading formula in, to give:
     %%%  C2:  true
***  Proved C1:  true
***  Proved C2:  true
***  PROVED VC.

