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

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



SPARK Simplifier Pro Edition


procedure Skein.Skein_512_Init






RRS  The following user defined rule files have been read:
&&&  skein.rlu
SEM  No semantic checks are performed on the rules.


@@@@@@@@@@  VC: procedure_skein_512_init_1.  @@@@@@@@@@
-S-  Applied substitution rule skein_512_in_rules(105).
     This was achieved by replacing all occurrences of hash_bit_length__first 
          by:
          0.
<S>  New C1:  hashbitlen >= 0
-S-  Applied substitution rule skein_512_in_rules(106).
     This was achieved by replacing all occurrences of hash_bit_length__last by:
          2147483640.
<S>  New C2:  hashbitlen <= 2147483640
-S-  Applied substitution rule skein_512_in_rules(110).
     This was achieved by replacing all occurrences of 
          initialized_hash_bit_length__first by:
          1.
<S>  New H2:  hashbitlen >= 1
-S-  Applied substitution rule skein_512_in_rules(111).
     This was achieved by replacing all occurrences of 
          initialized_hash_bit_length__last by:
          2147483640.
<S>  New H3:  hashbitlen <= 2147483640
***  Proved C1:  hashbitlen >= 0
     using hypothesis H2.
***  Proved C2:  hashbitlen <= 2147483640
     using hypothesis H3.
***  PROVED VC.


@@@@@@@@@@  VC: procedure_skein_512_init_2.  @@@@@@@@@@
-S-  Applied substitution rule skein_512_in_rules(2).
     This was achieved by replacing all occurrences of skein_block_type_cfg by:
          4.
<S>  New C1:  4 >= spark__unsigned__u6__first
<S>  New C2:  4 <= spark__unsigned__u6__last
-S-  Applied substitution rule skein_512_in_rules(64).
     This was achieved by replacing all occurrences of 
          spark__unsigned__u6__first by:
          0.
<S>  New C1:  true
-S-  Applied substitution rule skein_512_in_rules(65).
     This was achieved by replacing all occurrences of 
          spark__unsigned__u6__last by:
          63.
<S>  New C2:  true
***  Proved C1:  true
***  Proved C2:  true
***  PROVED VC.


@@@@@@@@@@  VC: procedure_skein_512_init_3.  @@@@@@@@@@
%%%  Simplified H8 on reading formula in, to give:
     %%%  H8:  fld_h(ctx__1) = upf_tweak_words(upf_byte_count(fld_h(upf_h(
          null_skein_512_context, upf_hash_bit_len(fld_h(null_skein_512_context)
          , hashbitlen))), 0), mk__tweak_value(byte_count_lsb := 0, 
          byte_count_msb := 0, reserved := 0, tree_level := 0, bit_pad := 
          false, field_type := skein_block_type_cfg, first_block := true, 
          final_block := true))
%%%  Simplified H9 on reading formula in, to give:
     %%%  H9:  fld_hash_bit_len(fld_h(ctx__1)) = hashbitlen
%%%  Simplified H28 on reading formula in, to give:
     %%%  H28:  fld_x(ctx__1) = fld_x(null_skein_512_context)
%%%  Simplified H29 on reading formula in, to give:
     %%%  H29:  fld_b(ctx__1) = fld_b(null_skein_512_context)
%%%  Simplified H30 on reading formula in, to give:
     %%%  H30:  ctx__1 = upf_h(null_skein_512_context, fld_h(ctx__1))
***  Proved C1:  fld_hash_bit_len(fld_h(ctx__1)) = hashbitlen
     using hypothesis H9.
***  PROVED VC.


@@@@@@@@@@  VC: procedure_skein_512_init_4.  @@@@@@@@@@
%%%  Simplified H8 on reading formula in, to give:
     %%%  H8:  fld_h(ctx__1) = upf_tweak_words(upf_byte_count(fld_h(upf_h(
          null_skein_512_context, upf_hash_bit_len(fld_h(null_skein_512_context)
          , hashbitlen))), 0), mk__tweak_value(byte_count_lsb := 0, 
          byte_count_msb := 0, reserved := 0, tree_level := 0, bit_pad := 
          false, field_type := skein_block_type_cfg, first_block := true, 
          final_block := true))
%%%  Simplified H9 on reading formula in, to give:
     %%%  H9:  fld_hash_bit_len(fld_h(ctx__1)) = hashbitlen
%%%  Simplified H28 on reading formula in, to give:
     %%%  H28:  fld_x(ctx__1) = fld_x(null_skein_512_context)
%%%  Simplified H29 on reading formula in, to give:
     %%%  H29:  fld_b(ctx__1) = fld_b(null_skein_512_context)
%%%  Simplified H30 on reading formula in, to give:
     %%%  H30:  ctx__1 = upf_h(null_skein_512_context, fld_h(ctx__1))
-S-  Applied substitution rule skein_512_in_rules(22).
     This was achieved by replacing all occurrences of skein_schema_ver by:
          5154883667.
<S>  New C1:  5154883667 >= interfaces__unsigned_64__first
<S>  New C2:  5154883667 <= interfaces__unsigned_64__last
-S-  Applied substitution rule skein_512_in_rules(58).
     This was achieved by replacing all occurrences of 
          interfaces__unsigned_64__first by:
          0.
<S>  New C1:  true
-S-  Applied substitution rule skein_512_in_rules(59).
     This was achieved by replacing all occurrences of 
          interfaces__unsigned_64__last by:
          18446744073709551615.
<S>  New C2:  true
***  Proved C1:  true
***  Proved C2:  true
***  PROVED VC.


@@@@@@@@@@  VC: procedure_skein_512_init_5.  @@@@@@@@@@
%%%  Simplified H8 on reading formula in, to give:
     %%%  H8:  fld_h(ctx__1) = upf_tweak_words(upf_byte_count(fld_h(upf_h(
          null_skein_512_context, upf_hash_bit_len(fld_h(null_skein_512_context)
          , hashbitlen))), 0), mk__tweak_value(byte_count_lsb := 0, 
          byte_count_msb := 0, reserved := 0, tree_level := 0, bit_pad := 
          false, field_type := skein_block_type_cfg, first_block := true, 
          final_block := true))
%%%  Simplified H9 on reading formula in, to give:
     %%%  H9:  fld_hash_bit_len(fld_h(ctx__1)) = hashbitlen
%%%  Simplified H28 on reading formula in, to give:
     %%%  H28:  fld_x(ctx__1) = fld_x(null_skein_512_context)
%%%  Simplified H29 on reading formula in, to give:
     %%%  H29:  fld_b(ctx__1) = fld_b(null_skein_512_context)
%%%  Simplified H30 on reading formula in, to give:
     %%%  H30:  ctx__1 = upf_h(null_skein_512_context, fld_h(ctx__1))
-S-  Applied substitution rule skein_512_in_rules(58).
     This was achieved by replacing all occurrences of 
          interfaces__unsigned_64__first by:
          0.
<S>  New H32:  skein_schema_ver >= 0
<S>  New H34:  spark__unsigned__to_littleendian(skein_schema_ver) >= 0
<S>  New C1:  hashbitlen >= 0
-S-  Applied substitution rule skein_512_in_rules(59).
     This was achieved by replacing all occurrences of 
          interfaces__unsigned_64__last by:
          18446744073709551615.
<S>  New H33:  skein_schema_ver <= 18446744073709551615
<S>  New H35:  spark__unsigned__to_littleendian(skein_schema_ver) <= 
          18446744073709551615
<S>  New C2:  hashbitlen <= 18446744073709551615
-S-  Applied substitution rule skein_512_in_rules(94).
     This was achieved by replacing all occurrences of 
          spark__unsigned__u64__first by:
          0.
<S>  New H26:  fld_byte_count_lsb(fld_tweak_words(fld_h(ctx__1))) >= 0
<S>  New C3:  hashbitlen >= 0
<S>  New C5:  spark__unsigned__to_littleendian(skein_schema_ver) >= 0
-S-  Applied substitution rule skein_512_in_rules(95).
     This was achieved by replacing all occurrences of 
          spark__unsigned__u64__last by:
          18446744073709551615.
<S>  New H27:  fld_byte_count_lsb(fld_tweak_words(fld_h(ctx__1))) <= 
          18446744073709551615
<S>  New C4:  hashbitlen <= 18446744073709551615
<S>  New C6:  spark__unsigned__to_littleendian(skein_schema_ver) <= 
          18446744073709551615
***  Proved C5:  spark__unsigned__to_littleendian(skein_schema_ver) >= 0
     using hypothesis H34.
***  Proved C6:  spark__unsigned__to_littleendian(skein_schema_ver) <= 
          18446744073709551615
     using hypothesis H35.
-S-  Applied substitution rule skein_512_in_rules(2).
     This was achieved by replacing all occurrences of skein_block_type_cfg by:
          4.
<S>  New H6:  4 >= spark__unsigned__u6__first
<S>  New H7:  4 <= spark__unsigned__u6__last
<S>  New H8:  fld_h(ctx__1) = upf_tweak_words(upf_byte_count(fld_h(upf_h(
          null_skein_512_context, upf_hash_bit_len(fld_h(null_skein_512_context)
          , hashbitlen))), 0), mk__tweak_value(byte_count_lsb := 0, 
          byte_count_msb := 0, reserved := 0, tree_level := 0, bit_pad := 
          false, field_type := 4, first_block := true, final_block := true))
-S-  Applied substitution rule skein_512_in_rules(22).
     This was achieved by replacing all occurrences of skein_schema_ver by:
          5154883667.
<S>  New H32:  true
<S>  New H33:  true
<S>  New H34:  spark__unsigned__to_littleendian(5154883667) >= 0
<S>  New H35:  spark__unsigned__to_littleendian(5154883667) <= 
          18446744073709551615
-S-  Applied substitution rule skein_512_in_rules(31).
     This was achieved by replacing all occurrences of natural__first by:
          0.
<S>  New H11:  fld_byte_count(fld_h(ctx__1)) >= 0
-S-  Applied substitution rule skein_512_in_rules(32).
     This was achieved by replacing all occurrences of natural__last by:
          2147483647.
<S>  New H12:  fld_byte_count(fld_h(ctx__1)) <= 2147483647
-S-  Applied substitution rule skein_512_in_rules(64).
     This was achieved by replacing all occurrences of 
          spark__unsigned__u6__first by:
          0.
<S>  New H17:  fld_field_type(fld_tweak_words(fld_h(ctx__1))) >= 0
<S>  New H6:  true
-S-  Applied substitution rule skein_512_in_rules(65).
     This was achieved by replacing all occurrences of 
          spark__unsigned__u6__last by:
          63.
<S>  New H18:  fld_field_type(fld_tweak_words(fld_h(ctx__1))) <= 63
<S>  New H7:  true
-S-  Applied substitution rule skein_512_in_rules(70).
     This was achieved by replacing all occurrences of 
          spark__unsigned__u7__first by:
          0.
<S>  New H20:  fld_tree_level(fld_tweak_words(fld_h(ctx__1))) >= 0
-S-  Applied substitution rule skein_512_in_rules(71).
     This was achieved by replacing all occurrences of 
          spark__unsigned__u7__last by:
          127.
<S>  New H21:  fld_tree_level(fld_tweak_words(fld_h(ctx__1))) <= 127
-S-  Applied substitution rule skein_512_in_rules(82).
     This was achieved by replacing all occurrences of 
          spark__unsigned__u16__first by:
          0.
<S>  New H22:  fld_reserved(fld_tweak_words(fld_h(ctx__1))) >= 0
-S-  Applied substitution rule skein_512_in_rules(83).
     This was achieved by replacing all occurrences of 
          spark__unsigned__u16__last by:
          65535.
<S>  New H23:  fld_reserved(fld_tweak_words(fld_h(ctx__1))) <= 65535
-S-  Applied substitution rule skein_512_in_rules(88).
     This was achieved by replacing all occurrences of 
          spark__unsigned__u32__first by:
          0.
<S>  New H24:  fld_byte_count_msb(fld_tweak_words(fld_h(ctx__1))) >= 0
-S-  Applied substitution rule skein_512_in_rules(89).
     This was achieved by replacing all occurrences of 
          spark__unsigned__u32__last by:
          4294967295.
<S>  New H25:  fld_byte_count_msb(fld_tweak_words(fld_h(ctx__1))) <= 4294967295
-S-  Applied substitution rule skein_512_in_rules(105).
     This was achieved by replacing all occurrences of hash_bit_length__first 
          by:
          0.
<S>  New H4:  hashbitlen >= 0
<S>  New H13:  fld_hash_bit_len(fld_h(ctx__1)) >= 0
-S-  Applied substitution rule skein_512_in_rules(106).
     This was achieved by replacing all occurrences of hash_bit_length__last by:
          2147483640.
<S>  New H5:  hashbitlen <= 2147483640
<S>  New H14:  fld_hash_bit_len(fld_h(ctx__1)) <= 2147483640
-S-  Applied substitution rule skein_512_in_rules(110).
     This was achieved by replacing all occurrences of 
          initialized_hash_bit_length__first by:
          1.
<S>  New H2:  hashbitlen >= 1
-S-  Applied substitution rule skein_512_in_rules(111).
     This was achieved by replacing all occurrences of 
          initialized_hash_bit_length__last by:
          2147483640.
<S>  New H3:  hashbitlen <= 2147483640
***  Proved C1:  hashbitlen >= 0
     using hypothesis H4.
***  Proved C2:  hashbitlen <= 18446744073709551615
     using hypothesis H5.
***  Proved C3:  hashbitlen >= 0
     using hypothesis H4.
***  Proved C4:  hashbitlen <= 18446744073709551615
     using hypothesis H5.
***  PROVED VC.


@@@@@@@@@@  VC: procedure_skein_512_init_6.  @@@@@@@@@@
%%%  Simplified H8 on reading formula in, to give:
     %%%  H8:  fld_h(ctx__1) = upf_tweak_words(upf_byte_count(fld_h(upf_h(
          null_skein_512_context, upf_hash_bit_len(fld_h(null_skein_512_context)
          , hashbitlen))), 0), mk__tweak_value(byte_count_lsb := 0, 
          byte_count_msb := 0, reserved := 0, tree_level := 0, bit_pad := 
          false, field_type := skein_block_type_cfg, first_block := true, 
          final_block := true))
%%%  Simplified H9 on reading formula in, to give:
     %%%  H9:  fld_hash_bit_len(fld_h(ctx__1)) = hashbitlen
%%%  Simplified H28 on reading formula in, to give:
     %%%  H28:  fld_x(ctx__1) = fld_x(null_skein_512_context)
%%%  Simplified H29 on reading formula in, to give:
     %%%  H29:  fld_b(ctx__1) = fld_b(null_skein_512_context)
%%%  Simplified H30 on reading formula in, to give:
     %%%  H30:  ctx__1 = upf_h(null_skein_512_context, fld_h(ctx__1))
-S-  Applied substitution rule skein_512_in_rules(23).
     This was achieved by replacing all occurrences of 
          skein_cfg_tree_info_sequential by:
          0.
<S>  New C1:  0 >= interfaces__unsigned_64__first
<S>  New C2:  0 <= interfaces__unsigned_64__last
-S-  Applied substitution rule skein_512_in_rules(58).
     This was achieved by replacing all occurrences of 
          interfaces__unsigned_64__first by:
          0.
<S>  New H32:  skein_schema_ver >= 0
<S>  New H34:  spark__unsigned__to_littleendian(skein_schema_ver) >= 0
<S>  New H36:  hashbitlen >= 0
<S>  New H42:  spark__unsigned__to_littleendian(hashbitlen) >= 0
<S>  New C1:  true
-S-  Applied substitution rule skein_512_in_rules(59).
     This was achieved by replacing all occurrences of 
          interfaces__unsigned_64__last by:
          18446744073709551615.
<S>  New H33:  skein_schema_ver <= 18446744073709551615
<S>  New H35:  spark__unsigned__to_littleendian(skein_schema_ver) <= 
          18446744073709551615
<S>  New H37:  hashbitlen <= 18446744073709551615
<S>  New H43:  spark__unsigned__to_littleendian(hashbitlen) <= 
          18446744073709551615
<S>  New C2:  true
-S-  Applied substitution rule skein_512_in_rules(94).
     This was achieved by replacing all occurrences of 
          spark__unsigned__u64__first by:
          0.
<S>  New H26:  fld_byte_count_lsb(fld_tweak_words(fld_h(ctx__1))) >= 0
<S>  New H38:  hashbitlen >= 0
<S>  New H40:  spark__unsigned__to_littleendian(skein_schema_ver) >= 0
<S>  New C3:  spark__unsigned__to_littleendian(hashbitlen) >= 0
-S-  Applied substitution rule skein_512_in_rules(95).
     This was achieved by replacing all occurrences of 
          spark__unsigned__u64__last by:
          18446744073709551615.
<S>  New H27:  fld_byte_count_lsb(fld_tweak_words(fld_h(ctx__1))) <= 
          18446744073709551615
<S>  New H39:  hashbitlen <= 18446744073709551615
<S>  New H41:  spark__unsigned__to_littleendian(skein_schema_ver) <= 
          18446744073709551615
<S>  New C4:  spark__unsigned__to_littleendian(hashbitlen) <= 
          18446744073709551615
***  Proved C1:  true
***  Proved C2:  true
***  Proved C3:  spark__unsigned__to_littleendian(hashbitlen) >= 0
     using hypothesis H42.
***  Proved C4:  spark__unsigned__to_littleendian(hashbitlen) <= 
          18446744073709551615
     using hypothesis H43.
***  PROVED VC.


@@@@@@@@@@  VC: procedure_skein_512_init_7.  @@@@@@@@@@
%%%  Simplified H8 on reading formula in, to give:
     %%%  H8:  fld_h(ctx__1) = upf_tweak_words(upf_byte_count(fld_h(upf_h(
          null_skein_512_context, upf_hash_bit_len(fld_h(null_skein_512_context)
          , hashbitlen))), 0), mk__tweak_value(byte_count_lsb := 0, 
          byte_count_msb := 0, reserved := 0, tree_level := 0, bit_pad := 
          false, field_type := skein_block_type_cfg, first_block := true, 
          final_block := true))
%%%  Simplified H9 on reading formula in, to give:
     %%%  H9:  fld_hash_bit_len(fld_h(ctx__1)) = hashbitlen
%%%  Simplified H28 on reading formula in, to give:
     %%%  H28:  fld_x(ctx__1) = fld_x(null_skein_512_context)
%%%  Simplified H29 on reading formula in, to give:
     %%%  H29:  fld_b(ctx__1) = fld_b(null_skein_512_context)
%%%  Simplified H30 on reading formula in, to give:
     %%%  H30:  ctx__1 = upf_h(null_skein_512_context, fld_h(ctx__1))
-S-  Applied substitution rule skein_512_in_rules(94).
     This was achieved by replacing all occurrences of 
          spark__unsigned__u64__first by:
          0.
<S>  New H26:  fld_byte_count_lsb(fld_tweak_words(fld_h(ctx__1))) >= 0
<S>  New H38:  hashbitlen >= 0
<S>  New H40:  spark__unsigned__to_littleendian(skein_schema_ver) >= 0
<S>  New H46:  spark__unsigned__to_littleendian(hashbitlen) >= 0
<S>  New C1:  true
<S>  New C3:  spark__unsigned__to_littleendian(skein_cfg_tree_info_sequential) 
          >= 0
-S-  Applied substitution rule skein_512_in_rules(95).
     This was achieved by replacing all occurrences of 
          spark__unsigned__u64__last by:
          18446744073709551615.
<S>  New H27:  fld_byte_count_lsb(fld_tweak_words(fld_h(ctx__1))) <= 
          18446744073709551615
<S>  New H39:  hashbitlen <= 18446744073709551615
<S>  New H41:  spark__unsigned__to_littleendian(skein_schema_ver) <= 
          18446744073709551615
<S>  New H47:  spark__unsigned__to_littleendian(hashbitlen) <= 
          18446744073709551615
<S>  New C2:  true
<S>  New C4:  spark__unsigned__to_littleendian(skein_cfg_tree_info_sequential) 
          <= 18446744073709551615
***  Proved C1:  true
***  Proved C2:  true
-S-  Applied substitution rule skein_512_in_rules(2).
     This was achieved by replacing all occurrences of skein_block_type_cfg by:
          4.
<S>  New H6:  4 >= spark__unsigned__u6__first
<S>  New H7:  4 <= spark__unsigned__u6__last
<S>  New H8:  fld_h(ctx__1) = upf_tweak_words(upf_byte_count(fld_h(upf_h(
          null_skein_512_context, upf_hash_bit_len(fld_h(null_skein_512_context)
          , hashbitlen))), 0), mk__tweak_value(byte_count_lsb := 0, 
          byte_count_msb := 0, reserved := 0, tree_level := 0, bit_pad := 
          false, field_type := 4, first_block := true, final_block := true))
-S-  Applied substitution rule skein_512_in_rules(22).
     This was achieved by replacing all occurrences of skein_schema_ver by:
          5154883667.
<S>  New H32:  5154883667 >= interfaces__unsigned_64__first
<S>  New H33:  5154883667 <= interfaces__unsigned_64__last
<S>  New H34:  spark__unsigned__to_littleendian(5154883667) >= 
          interfaces__unsigned_64__first
<S>  New H35:  spark__unsigned__to_littleendian(5154883667) <= 
          interfaces__unsigned_64__last
<S>  New H40:  spark__unsigned__to_littleendian(5154883667) >= 0
<S>  New H41:  spark__unsigned__to_littleendian(5154883667) <= 
          18446744073709551615
-S-  Applied substitution rule skein_512_in_rules(23).
     This was achieved by replacing all occurrences of 
          skein_cfg_tree_info_sequential by:
          0.
<S>  New H44:  0 >= interfaces__unsigned_64__first
<S>  New H45:  0 <= interfaces__unsigned_64__last
<S>  New H48:  spark__unsigned__to_littleendian(0) >= 
          interfaces__unsigned_64__first
<S>  New H49:  spark__unsigned__to_littleendian(0) <= 
          interfaces__unsigned_64__last
<S>  New C3:  spark__unsigned__to_littleendian(0) >= 0
<S>  New C4:  spark__unsigned__to_littleendian(0) <= 18446744073709551615
-S-  Applied substitution rule skein_512_in_rules(31).
     This was achieved by replacing all occurrences of natural__first by:
          0.
<S>  New H11:  fld_byte_count(fld_h(ctx__1)) >= 0
-S-  Applied substitution rule skein_512_in_rules(32).
     This was achieved by replacing all occurrences of natural__last by:
          2147483647.
<S>  New H12:  fld_byte_count(fld_h(ctx__1)) <= 2147483647
-S-  Applied substitution rule skein_512_in_rules(58).
     This was achieved by replacing all occurrences of 
          interfaces__unsigned_64__first by:
          0.
<S>  New H36:  hashbitlen >= 0
<S>  New H42:  spark__unsigned__to_littleendian(hashbitlen) >= 0
<S>  New H32:  true
<S>  New H34:  spark__unsigned__to_littleendian(5154883667) >= 0
<S>  New H44:  true
<S>  New H48:  spark__unsigned__to_littleendian(0) >= 0
-S-  Applied substitution rule skein_512_in_rules(59).
     This was achieved by replacing all occurrences of 
          interfaces__unsigned_64__last by:
          18446744073709551615.
<S>  New H37:  hashbitlen <= 18446744073709551615
<S>  New H43:  spark__unsigned__to_littleendian(hashbitlen) <= 
          18446744073709551615
<S>  New H33:  true
<S>  New H35:  spark__unsigned__to_littleendian(5154883667) <= 
          18446744073709551615
<S>  New H45:  true
<S>  New H49:  spark__unsigned__to_littleendian(0) <= 18446744073709551615
-S-  Applied substitution rule skein_512_in_rules(64).
     This was achieved by replacing all occurrences of 
          spark__unsigned__u6__first by:
          0.
<S>  New H17:  fld_field_type(fld_tweak_words(fld_h(ctx__1))) >= 0
<S>  New H6:  true
-S-  Applied substitution rule skein_512_in_rules(65).
     This was achieved by replacing all occurrences of 
          spark__unsigned__u6__last by:
          63.
<S>  New H18:  fld_field_type(fld_tweak_words(fld_h(ctx__1))) <= 63
<S>  New H7:  true
-S-  Applied substitution rule skein_512_in_rules(70).
     This was achieved by replacing all occurrences of 
          spark__unsigned__u7__first by:
          0.
<S>  New H20:  fld_tree_level(fld_tweak_words(fld_h(ctx__1))) >= 0
-S-  Applied substitution rule skein_512_in_rules(71).
     This was achieved by replacing all occurrences of 
          spark__unsigned__u7__last by:
          127.
<S>  New H21:  fld_tree_level(fld_tweak_words(fld_h(ctx__1))) <= 127
-S-  Applied substitution rule skein_512_in_rules(82).
     This was achieved by replacing all occurrences of 
          spark__unsigned__u16__first by:
          0.
<S>  New H22:  fld_reserved(fld_tweak_words(fld_h(ctx__1))) >= 0
-S-  Applied substitution rule skein_512_in_rules(83).
     This was achieved by replacing all occurrences of 
          spark__unsigned__u16__last by:
          65535.
<S>  New H23:  fld_reserved(fld_tweak_words(fld_h(ctx__1))) <= 65535
-S-  Applied substitution rule skein_512_in_rules(88).
     This was achieved by replacing all occurrences of 
          spark__unsigned__u32__first by:
          0.
<S>  New H24:  fld_byte_count_msb(fld_tweak_words(fld_h(ctx__1))) >= 0
-S-  Applied substitution rule skein_512_in_rules(89).
     This was achieved by replacing all occurrences of 
          spark__unsigned__u32__last by:
          4294967295.
<S>  New H25:  fld_byte_count_msb(fld_tweak_words(fld_h(ctx__1))) <= 4294967295
-S-  Applied substitution rule skein_512_in_rules(105).
     This was achieved by replacing all occurrences of hash_bit_length__first 
          by:
          0.
<S>  New H4:  hashbitlen >= 0
<S>  New H13:  fld_hash_bit_len(fld_h(ctx__1)) >= 0
-S-  Applied substitution rule skein_512_in_rules(106).
     This was achieved by replacing all occurrences of hash_bit_length__last by:
          2147483640.
<S>  New H5:  hashbitlen <= 2147483640
<S>  New H14:  fld_hash_bit_len(fld_h(ctx__1)) <= 2147483640
-S-  Applied substitution rule skein_512_in_rules(110).
     This was achieved by replacing all occurrences of 
          initialized_hash_bit_length__first by:
          1.
<S>  New H2:  hashbitlen >= 1
-S-  Applied substitution rule skein_512_in_rules(111).
     This was achieved by replacing all occurrences of 
          initialized_hash_bit_length__last by:
          2147483640.
<S>  New H3:  hashbitlen <= 2147483640
***  Proved C3:  spark__unsigned__to_littleendian(0) >= 0
     using hypothesis H48.
***  Proved C4:  spark__unsigned__to_littleendian(0) <= 18446744073709551615
     using hypothesis H49.
***  PROVED VC.


@@@@@@@@@@  VC: procedure_skein_512_init_8.  @@@@@@@@@@
%%%  Simplified H8 on reading formula in, to give:
     %%%  H8:  fld_h(ctx__1) = upf_tweak_words(upf_byte_count(fld_h(upf_h(
          null_skein_512_context, upf_hash_bit_len(fld_h(null_skein_512_context)
          , hashbitlen))), 0), mk__tweak_value(byte_count_lsb := 0, 
          byte_count_msb := 0, reserved := 0, tree_level := 0, bit_pad := 
          false, field_type := skein_block_type_cfg, first_block := true, 
          final_block := true))
%%%  Simplified H9 on reading formula in, to give:
     %%%  H9:  fld_hash_bit_len(fld_h(ctx__1)) = hashbitlen
%%%  Simplified H28 on reading formula in, to give:
     %%%  H28:  fld_x(ctx__1) = fld_x(null_skein_512_context)
%%%  Simplified H29 on reading formula in, to give:
     %%%  H29:  fld_b(ctx__1) = fld_b(null_skein_512_context)
%%%  Simplified H30 on reading formula in, to give:
     %%%  H30:  ctx__1 = upf_h(null_skein_512_context, fld_h(ctx__1))
***  Proved C1:  0 >= spark__unsigned__u64__first
     using hypothesis H50.
***  Proved C2:  0 <= spark__unsigned__u64__last
     using hypothesis H51.
***  PROVED VC.


@@@@@@@@@@  VC: procedure_skein_512_init_9.  @@@@@@@@@@
%%%  Simplified H8 on reading formula in, to give:
     %%%  H8:  fld_h(ctx__1) = upf_tweak_words(upf_byte_count(fld_h(upf_h(
          null_skein_512_context, upf_hash_bit_len(fld_h(null_skein_512_context)
          , hashbitlen))), 0), mk__tweak_value(byte_count_lsb := 0, 
          byte_count_msb := 0, reserved := 0, tree_level := 0, bit_pad := 
          false, field_type := skein_block_type_cfg, first_block := true, 
          final_block := true))
%%%  Simplified H9 on reading formula in, to give:
     %%%  H9:  fld_hash_bit_len(fld_h(ctx__1)) = hashbitlen
%%%  Simplified H28 on reading formula in, to give:
     %%%  H28:  fld_x(ctx__1) = fld_x(null_skein_512_context)
%%%  Simplified H29 on reading formula in, to give:
     %%%  H29:  fld_b(ctx__1) = fld_b(null_skein_512_context)
%%%  Simplified H30 on reading formula in, to give:
     %%%  H30:  ctx__1 = upf_h(null_skein_512_context, fld_h(ctx__1))
---  Hypothesis H54 has been replaced by "true".  (It is already present, as 
          H50).
---  Hypothesis H55 has been replaced by "true".  (It is already present, as 
          H51).
%%%  Simplified C1 on reading formula in, to give:
     %%%  C1:  fld_hash_bit_len(fld_h(ctx__1)) = hashbitlen
***  Proved C1:  fld_hash_bit_len(fld_h(ctx__1)) = hashbitlen
     using hypothesis H9.
***  PROVED VC.


@@@@@@@@@@  VC: procedure_skein_512_init_10.  @@@@@@@@@@
%%%  Simplified H8 on reading formula in, to give:
     %%%  H8:  fld_h(ctx__1) = upf_tweak_words(upf_byte_count(fld_h(upf_h(
          null_skein_512_context, upf_hash_bit_len(fld_h(null_skein_512_context)
          , hashbitlen))), 0), mk__tweak_value(byte_count_lsb := 0, 
          byte_count_msb := 0, reserved := 0, tree_level := 0, bit_pad := 
          false, field_type := skein_block_type_cfg, first_block := true, 
          final_block := true))
%%%  Simplified H9 on reading formula in, to give:
     %%%  H9:  fld_hash_bit_len(fld_h(ctx__1)) = hashbitlen
%%%  Simplified H28 on reading formula in, to give:
     %%%  H28:  fld_x(ctx__1) = fld_x(null_skein_512_context)
%%%  Simplified H29 on reading formula in, to give:
     %%%  H29:  fld_b(ctx__1) = fld_b(null_skein_512_context)
%%%  Simplified H30 on reading formula in, to give:
     %%%  H30:  ctx__1 = upf_h(null_skein_512_context, fld_h(ctx__1))
---  Hypothesis H54 has been replaced by "true".  (It is already present, as 
          H50).
---  Hypothesis H55 has been replaced by "true".  (It is already present, as 
          H51).
%%%  Simplified H56 on reading formula in, to give:
     %%%  H56:  fld_hash_bit_len(fld_h(ctx__1)) = hashbitlen
%%%  Simplified C7 on reading formula in, to give:
     %%%  C7:  fld_hash_bit_len(fld_h(ctx__1)) >= 
          initialized_hash_bit_length__first
%%%  Simplified C8 on reading formula in, to give:
     %%%  C8:  fld_hash_bit_len(fld_h(ctx__1)) <= 
          initialized_hash_bit_length__last
%%%  Simplified C9 on reading formula in, to give:
     %%%  C9:  fld_byte_count(fld_h(ctx__1)) >= 
          skein_512_block_bytes_count__first
%%%  Simplified C10 on reading formula in, to give:
     %%%  C10:  fld_byte_count(fld_h(ctx__1)) <= 
          skein_512_block_bytes_count__last
%%%  Simplified C12 on reading formula in, to give:
     %%%  C12:  63 <= skein_512_state_bytes_index__last
%%%  Simplified C13 on reading formula in, to give:
     %%%  C13:  63 <= skein_512_state_bytes_index__last
%%%  Simplified C15 on reading formula in, to give:
     %%%  C15:  63 <= natural__last
***  Proved C5:  0 >= natural__first
     using hypotheses H10 & H11.
***  Proved C6:  0 <= natural__last
     using hypotheses H10 & H12.
***  Proved C7:  fld_hash_bit_len(fld_h(ctx__1)) >= 
          initialized_hash_bit_length__first
     using hypotheses H2 & H9.
***  Proved C8:  fld_hash_bit_len(fld_h(ctx__1)) <= 
          initialized_hash_bit_length__last
     using hypotheses H3 & H9.
-S-  Applied substitution rule skein_512_in_rules(24).
     This was achieved by replacing all occurrences of skein_cfg_str_len by:
          32.
<S>  New C1:  32 >= natural__first
<S>  New C2:  32 <= natural__last
-S-  Applied substitution rule skein_512_in_rules(31).
     This was achieved by replacing all occurrences of natural__first by:
          0.
<S>  New H11:  fld_byte_count(fld_h(ctx__1)) >= 0
<S>  New C1:  true
-S-  Applied substitution rule skein_512_in_rules(32).
     This was achieved by replacing all occurrences of natural__last by:
          2147483647.
<S>  New H12:  fld_byte_count(fld_h(ctx__1)) <= 2147483647
<S>  New C14:  skein_512_state_bytes_index__last <= 2147483647
<S>  New C15:  true
<S>  New C2:  true
-S-  Applied substitution rule skein_512_in_rules(135).
     This was achieved by replacing all occurrences of 
          positive_block_512_count_t__first by:
          1.
<S>  New C3:  true
-S-  Applied substitution rule skein_512_in_rules(136).
     This was achieved by replacing all occurrences of 
          positive_block_512_count_t__last by:
          33554431.
<S>  New C4:  true
-S-  Applied substitution rule skein_512_in_rules(120).
     This was achieved by replacing all occurrences of 
          skein_512_block_bytes_count__first by:
          0.
<S>  New C9:  fld_byte_count(fld_h(ctx__1)) >= 0
-S-  Applied substitution rule skein_512_in_rules(121).
     This was achieved by replacing all occurrences of 
          skein_512_block_bytes_count__last by:
          64.
<S>  New C10:  fld_byte_count(fld_h(ctx__1)) <= 64
-S-  Applied substitution rule skein_512_in_rules(131).
     This was achieved by replacing all occurrences of 
          skein_512_state_bytes_index__last by:
          63.
<S>  New C12:  true
<S>  New C13:  true
<S>  New C14:  true
***  Proved C1:  true
***  Proved C15:  true
***  Proved C2:  true
***  Proved C3:  true
***  Proved C4:  true
***  Proved C9:  fld_byte_count(fld_h(ctx__1)) >= 0
     using hypothesis H11.
***  Proved C10:  fld_byte_count(fld_h(ctx__1)) <= 64
     using hypothesis H10.
***  Proved C12:  true
***  Proved C13:  true
***  Proved C14:  true
-S-  Applied substitution rule skein_512_in_rules(2).
     This was achieved by replacing all occurrences of skein_block_type_cfg by:
          4.
<S>  New H6:  4 >= spark__unsigned__u6__first
<S>  New H7:  4 <= spark__unsigned__u6__last
<S>  New H8:  fld_h(ctx__1) = upf_tweak_words(upf_byte_count(fld_h(upf_h(
          null_skein_512_context, upf_hash_bit_len(fld_h(null_skein_512_context)
          , hashbitlen))), 0), mk__tweak_value(byte_count_lsb := 0, 
          byte_count_msb := 0, reserved := 0, tree_level := 0, bit_pad := 
          false, field_type := 4, first_block := true, final_block := true))
-S-  Applied substitution rule skein_512_in_rules(22).
     This was achieved by replacing all occurrences of skein_schema_ver by:
          5154883667.
<S>  New H32:  5154883667 >= interfaces__unsigned_64__first
<S>  New H33:  5154883667 <= interfaces__unsigned_64__last
<S>  New H34:  spark__unsigned__to_littleendian(5154883667) >= 
          interfaces__unsigned_64__first
<S>  New H35:  spark__unsigned__to_littleendian(5154883667) <= 
          interfaces__unsigned_64__last
<S>  New H40:  spark__unsigned__to_littleendian(5154883667) >= 
          spark__unsigned__u64__first
<S>  New H41:  spark__unsigned__to_littleendian(5154883667) <= 
          spark__unsigned__u64__last
-S-  Applied substitution rule skein_512_in_rules(23).
     This was achieved by replacing all occurrences of 
          skein_cfg_tree_info_sequential by:
          0.
<S>  New H44:  0 >= interfaces__unsigned_64__first
<S>  New H45:  0 <= interfaces__unsigned_64__last
<S>  New H48:  spark__unsigned__to_littleendian(0) >= 
          interfaces__unsigned_64__first
<S>  New H49:  spark__unsigned__to_littleendian(0) <= 
          interfaces__unsigned_64__last
<S>  New H52:  spark__unsigned__to_littleendian(0) >= 
          spark__unsigned__u64__first
<S>  New H53:  spark__unsigned__to_littleendian(0) <= spark__unsigned__u64__last
-S-  Applied substitution rule skein_512_in_rules(58).
     This was achieved by replacing all occurrences of 
          interfaces__unsigned_64__first by:
          0.
<S>  New H36:  hashbitlen >= 0
<S>  New H42:  spark__unsigned__to_littleendian(hashbitlen) >= 0
<S>  New H32:  true
<S>  New H34:  spark__unsigned__to_littleendian(5154883667) >= 0
<S>  New H44:  true
<S>  New H48:  spark__unsigned__to_littleendian(0) >= 0
-S-  Applied substitution rule skein_512_in_rules(59).
     This was achieved by replacing all occurrences of 
          interfaces__unsigned_64__last by:
          18446744073709551615.
<S>  New H37:  hashbitlen <= 18446744073709551615
<S>  New H43:  spark__unsigned__to_littleendian(hashbitlen) <= 
          18446744073709551615
<S>  New H33:  true
<S>  New H35:  spark__unsigned__to_littleendian(5154883667) <= 
          18446744073709551615
<S>  New H45:  true
<S>  New H49:  spark__unsigned__to_littleendian(0) <= 18446744073709551615
-S-  Applied substitution rule skein_512_in_rules(64).
     This was achieved by replacing all occurrences of 
          spark__unsigned__u6__first by:
          0.
<S>  New H17:  fld_field_type(fld_tweak_words(fld_h(ctx__1))) >= 0
<S>  New H6:  true
-S-  Applied substitution rule skein_512_in_rules(65).
     This was achieved by replacing all occurrences of 
          spark__unsigned__u6__last by:
          63.
<S>  New H18:  fld_field_type(fld_tweak_words(fld_h(ctx__1))) <= 63
<S>  New H7:  true
-S-  Applied substitution rule skein_512_in_rules(70).
     This was achieved by replacing all occurrences of 
          spark__unsigned__u7__first by:
          0.
<S>  New H20:  fld_tree_level(fld_tweak_words(fld_h(ctx__1))) >= 0
-S-  Applied substitution rule skein_512_in_rules(71).
     This was achieved by replacing all occurrences of 
          spark__unsigned__u7__last by:
          127.
<S>  New H21:  fld_tree_level(fld_tweak_words(fld_h(ctx__1))) <= 127
-S-  Applied substitution rule skein_512_in_rules(82).
     This was achieved by replacing all occurrences of 
          spark__unsigned__u16__first by:
          0.
<S>  New H22:  fld_reserved(fld_tweak_words(fld_h(ctx__1))) >= 0
-S-  Applied substitution rule skein_512_in_rules(83).
     This was achieved by replacing all occurrences of 
          spark__unsigned__u16__last by:
          65535.
<S>  New H23:  fld_reserved(fld_tweak_words(fld_h(ctx__1))) <= 65535
-S-  Applied substitution rule skein_512_in_rules(88).
     This was achieved by replacing all occurrences of 
          spark__unsigned__u32__first by:
          0.
<S>  New H24:  fld_byte_count_msb(fld_tweak_words(fld_h(ctx__1))) >= 0
-S-  Applied substitution rule skein_512_in_rules(89).
     This was achieved by replacing all occurrences of 
          spark__unsigned__u32__last by:
          4294967295.
<S>  New H25:  fld_byte_count_msb(fld_tweak_words(fld_h(ctx__1))) <= 4294967295
-S-  Applied substitution rule skein_512_in_rules(94).
     This was achieved by replacing all occurrences of 
          spark__unsigned__u64__first by:
          0.
<S>  New H26:  fld_byte_count_lsb(fld_tweak_words(fld_h(ctx__1))) >= 0
<S>  New H38:  hashbitlen >= 0
<S>  New H46:  spark__unsigned__to_littleendian(hashbitlen) >= 0
<S>  New H50:  true
<S>  New H40:  spark__unsigned__to_littleendian(5154883667) >= 0
<S>  New H52:  spark__unsigned__to_littleendian(0) >= 0
-S-  Applied substitution rule skein_512_in_rules(95).
     This was achieved by replacing all occurrences of 
          spark__unsigned__u64__last by:
          18446744073709551615.
<S>  New H27:  fld_byte_count_lsb(fld_tweak_words(fld_h(ctx__1))) <= 
          18446744073709551615
<S>  New H39:  hashbitlen <= 18446744073709551615
<S>  New H47:  spark__unsigned__to_littleendian(hashbitlen) <= 
          18446744073709551615
<S>  New H51:  true
<S>  New H41:  spark__unsigned__to_littleendian(5154883667) <= 
          18446744073709551615
<S>  New H53:  spark__unsigned__to_littleendian(0) <= 18446744073709551615
-S-  Applied substitution rule skein_512_in_rules(105).
     This was achieved by replacing all occurrences of hash_bit_length__first 
          by:
          0.
<S>  New H4:  hashbitlen >= 0
<S>  New H13:  fld_hash_bit_len(fld_h(ctx__1)) >= 0
-S-  Applied substitution rule skein_512_in_rules(106).
     This was achieved by replacing all occurrences of hash_bit_length__last by:
          2147483640.
<S>  New H5:  hashbitlen <= 2147483640
<S>  New H14:  fld_hash_bit_len(fld_h(ctx__1)) <= 2147483640
-S-  Applied substitution rule skein_512_in_rules(110).
     This was achieved by replacing all occurrences of 
          initialized_hash_bit_length__first by:
          1.
<S>  New H2:  hashbitlen >= 1
-S-  Applied substitution rule skein_512_in_rules(111).
     This was achieved by replacing all occurrences of 
          initialized_hash_bit_length__last by:
          2147483640.
<S>  New H3:  hashbitlen <= 2147483640
-S-  Applied substitution rule skein_512_in_rules(130).
     This was achieved by replacing all occurrences of 
          skein_512_state_bytes_index__first by:
          0.
<S>  New C11:  true
***  Proved C11:  true
***  PROVED VC.


@@@@@@@@@@  VC: procedure_skein_512_init_11.  @@@@@@@@@@
%%%  Simplified H8 on reading formula in, to give:
     %%%  H8:  fld_h(ctx__1) = upf_tweak_words(upf_byte_count(fld_h(upf_h(
          null_skein_512_context, upf_hash_bit_len(fld_h(null_skein_512_context)
          , hashbitlen))), 0), mk__tweak_value(byte_count_lsb := 0, 
          byte_count_msb := 0, reserved := 0, tree_level := 0, bit_pad := 
          false, field_type := skein_block_type_cfg, first_block := true, 
          final_block := true))
%%%  Simplified H9 on reading formula in, to give:
     %%%  H9:  fld_hash_bit_len(fld_h(ctx__1)) = hashbitlen
%%%  Simplified H28 on reading formula in, to give:
     %%%  H28:  fld_x(ctx__1) = fld_x(null_skein_512_context)
%%%  Simplified H29 on reading formula in, to give:
     %%%  H29:  fld_b(ctx__1) = fld_b(null_skein_512_context)
%%%  Simplified H30 on reading formula in, to give:
     %%%  H30:  ctx__1 = upf_h(null_skein_512_context, fld_h(ctx__1))
---  Hypothesis H54 has been replaced by "true".  (It is already present, as 
          H50).
---  Hypothesis H55 has been replaced by "true".  (It is already present, as 
          H51).
%%%  Simplified H56 on reading formula in, to give:
     %%%  H56:  fld_hash_bit_len(fld_h(ctx__1)) = hashbitlen
%%%  Simplified H63 on reading formula in, to give:
     %%%  H63:  fld_hash_bit_len(fld_h(ctx__1)) >= 
          initialized_hash_bit_length__first
%%%  Simplified H64 on reading formula in, to give:
     %%%  H64:  fld_hash_bit_len(fld_h(ctx__1)) <= 
          initialized_hash_bit_length__last
%%%  Simplified H65 on reading formula in, to give:
     %%%  H65:  fld_byte_count(fld_h(ctx__1)) >= 
          skein_512_block_bytes_count__first
%%%  Simplified H66 on reading formula in, to give:
     %%%  H66:  fld_byte_count(fld_h(ctx__1)) <= 
          skein_512_block_bytes_count__last
%%%  Simplified H68 on reading formula in, to give:
     %%%  H68:  63 <= skein_512_state_bytes_index__last
%%%  Simplified H69 on reading formula in, to give:
     %%%  H69:  63 <= skein_512_state_bytes_index__last
%%%  Simplified H71 on reading formula in, to give:
     %%%  H71:  63 <= natural__last
%%%  Simplified H74 on reading formula in, to give:
     %%%  H74:  fld_hash_bit_len(fld_h(ctx__2)) = fld_hash_bit_len(fld_h(ctx__1)
          )
%%%  Simplified H77 on reading formula in, to give:
     %%%  H77:  fld_byte_count(fld_h(ctx__2)) = fld_byte_count(fld_h(ctx__1))
%%%  Simplified H78 on reading formula in, to give:
     %%%  H78:  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__2), [i___2]) and 
          element(fld_b(ctx__2), [i___2]) <= spark__unsigned__byte__last)
%%%  Simplified H79 on reading formula in, to give:
     %%%  H79:  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__2), [i___1]) and 
          element(fld_x(ctx__2), [i___1]) <= spark__unsigned__u64__last)
***  Proved C1:  fld_hash_bit_len(fld_h(ctx__2)) = hashbitlen
     using hypotheses H9 & H74.
***  PROVED VC.


@@@@@@@@@@  VC: procedure_skein_512_init_12.  @@@@@@@@@@
%%%  Simplified H8 on reading formula in, to give:
     %%%  H8:  fld_h(ctx__1) = upf_tweak_words(upf_byte_count(fld_h(upf_h(
          null_skein_512_context, upf_hash_bit_len(fld_h(null_skein_512_context)
          , hashbitlen))), 0), mk__tweak_value(byte_count_lsb := 0, 
          byte_count_msb := 0, reserved := 0, tree_level := 0, bit_pad := 
          false, field_type := skein_block_type_cfg, first_block := true, 
          final_block := true))
%%%  Simplified H9 on reading formula in, to give:
     %%%  H9:  fld_hash_bit_len(fld_h(ctx__1)) = hashbitlen
%%%  Simplified H28 on reading formula in, to give:
     %%%  H28:  fld_x(ctx__1) = fld_x(null_skein_512_context)
%%%  Simplified H29 on reading formula in, to give:
     %%%  H29:  fld_b(ctx__1) = fld_b(null_skein_512_context)
%%%  Simplified H30 on reading formula in, to give:
     %%%  H30:  ctx__1 = upf_h(null_skein_512_context, fld_h(ctx__1))
---  Hypothesis H54 has been replaced by "true".  (It is already present, as 
          H50).
---  Hypothesis H55 has been replaced by "true".  (It is already present, as 
          H51).
%%%  Simplified H56 on reading formula in, to give:
     %%%  H56:  fld_hash_bit_len(fld_h(ctx__1)) = hashbitlen
%%%  Simplified H63 on reading formula in, to give:
     %%%  H63:  fld_hash_bit_len(fld_h(ctx__1)) >= 
          initialized_hash_bit_length__first
%%%  Simplified H64 on reading formula in, to give:
     %%%  H64:  fld_hash_bit_len(fld_h(ctx__1)) <= 
          initialized_hash_bit_length__last
%%%  Simplified H65 on reading formula in, to give:
     %%%  H65:  fld_byte_count(fld_h(ctx__1)) >= 
          skein_512_block_bytes_count__first
%%%  Simplified H66 on reading formula in, to give:
     %%%  H66:  fld_byte_count(fld_h(ctx__1)) <= 
          skein_512_block_bytes_count__last
%%%  Simplified H68 on reading formula in, to give:
     %%%  H68:  63 <= skein_512_state_bytes_index__last
%%%  Simplified H69 on reading formula in, to give:
     %%%  H69:  63 <= skein_512_state_bytes_index__last
%%%  Simplified H71 on reading formula in, to give:
     %%%  H71:  63 <= natural__last
%%%  Simplified H74 on reading formula in, to give:
     %%%  H74:  fld_hash_bit_len(fld_h(ctx__2)) = fld_hash_bit_len(fld_h(ctx__1)
          )
%%%  Simplified H77 on reading formula in, to give:
     %%%  H77:  fld_byte_count(fld_h(ctx__2)) = fld_byte_count(fld_h(ctx__1))
%%%  Simplified H78 on reading formula in, to give:
     %%%  H78:  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__2), [i___2]) and 
          element(fld_b(ctx__2), [i___2]) <= spark__unsigned__byte__last)
%%%  Simplified H79 on reading formula in, to give:
     %%%  H79:  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__2), [i___1]) and 
          element(fld_x(ctx__2), [i___1]) <= spark__unsigned__u64__last)
-S-  Applied substitution rule skein_512_in_rules(3).
     This was achieved by replacing all occurrences of skein_block_type_msg by:
          48.
<S>  New C1:  48 >= spark__unsigned__u6__first
<S>  New C2:  48 <= spark__unsigned__u6__last
-S-  Applied substitution rule skein_512_in_rules(64).
     This was achieved by replacing all occurrences of 
          spark__unsigned__u6__first by:
          0.
<S>  New H6:  skein_block_type_cfg >= 0
<S>  New H17:  fld_field_type(fld_tweak_words(fld_h(ctx__1))) >= 0
<S>  New H86:  fld_field_type(fld_tweak_words(fld_h(ctx__2))) >= 0
<S>  New C1:  true
-S-  Applied substitution rule skein_512_in_rules(65).
     This was achieved by replacing all occurrences of 
          spark__unsigned__u6__last by:
          63.
<S>  New H7:  skein_block_type_cfg <= 63
<S>  New H18:  fld_field_type(fld_tweak_words(fld_h(ctx__1))) <= 63
<S>  New H87:  fld_field_type(fld_tweak_words(fld_h(ctx__2))) <= 63
<S>  New C2:  true
***  Proved C1:  true
***  Proved C2:  true
***  PROVED VC.


@@@@@@@@@@  VC: procedure_skein_512_init_13.  @@@@@@@@@@
%%%  Simplified H8 on reading formula in, to give:
     %%%  H8:  fld_h(ctx__1) = upf_tweak_words(upf_byte_count(fld_h(upf_h(
          null_skein_512_context, upf_hash_bit_len(fld_h(null_skein_512_context)
          , hashbitlen))), 0), mk__tweak_value(byte_count_lsb := 0, 
          byte_count_msb := 0, reserved := 0, tree_level := 0, bit_pad := 
          false, field_type := skein_block_type_cfg, first_block := true, 
          final_block := true))
%%%  Simplified H9 on reading formula in, to give:
     %%%  H9:  fld_hash_bit_len(fld_h(ctx__1)) = hashbitlen
%%%  Simplified H28 on reading formula in, to give:
     %%%  H28:  fld_x(ctx__1) = fld_x(null_skein_512_context)
%%%  Simplified H29 on reading formula in, to give:
     %%%  H29:  fld_b(ctx__1) = fld_b(null_skein_512_context)
%%%  Simplified H30 on reading formula in, to give:
     %%%  H30:  ctx__1 = upf_h(null_skein_512_context, fld_h(ctx__1))
---  Hypothesis H54 has been replaced by "true".  (It is already present, as 
          H50).
---  Hypothesis H55 has been replaced by "true".  (It is already present, as 
          H51).
%%%  Simplified H56 on reading formula in, to give:
     %%%  H56:  fld_hash_bit_len(fld_h(ctx__1)) = hashbitlen
%%%  Simplified H63 on reading formula in, to give:
     %%%  H63:  fld_hash_bit_len(fld_h(ctx__1)) >= 
          initialized_hash_bit_length__first
%%%  Simplified H64 on reading formula in, to give:
     %%%  H64:  fld_hash_bit_len(fld_h(ctx__1)) <= 
          initialized_hash_bit_length__last
%%%  Simplified H65 on reading formula in, to give:
     %%%  H65:  fld_byte_count(fld_h(ctx__1)) >= 
          skein_512_block_bytes_count__first
%%%  Simplified H66 on reading formula in, to give:
     %%%  H66:  fld_byte_count(fld_h(ctx__1)) <= 
          skein_512_block_bytes_count__last
%%%  Simplified H68 on reading formula in, to give:
     %%%  H68:  63 <= skein_512_state_bytes_index__last
%%%  Simplified H69 on reading formula in, to give:
     %%%  H69:  63 <= skein_512_state_bytes_index__last
%%%  Simplified H71 on reading formula in, to give:
     %%%  H71:  63 <= natural__last
%%%  Simplified H74 on reading formula in, to give:
     %%%  H74:  fld_hash_bit_len(fld_h(ctx__2)) = fld_hash_bit_len(fld_h(ctx__1)
          )
%%%  Simplified H77 on reading formula in, to give:
     %%%  H77:  fld_byte_count(fld_h(ctx__2)) = fld_byte_count(fld_h(ctx__1))
%%%  Simplified H78 on reading formula in, to give:
     %%%  H78:  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__2), [i___2]) and 
          element(fld_b(ctx__2), [i___2]) <= spark__unsigned__byte__last)
%%%  Simplified H79 on reading formula in, to give:
     %%%  H79:  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__2), [i___1]) and 
          element(fld_x(ctx__2), [i___1]) <= spark__unsigned__u64__last)
%%%  Simplified H100 on reading formula in, to give:
     %%%  H100:  fld_h(ctx__3) = upf_tweak_words(upf_byte_count(fld_h(ctx__2), 
          0), mk__tweak_value(byte_count_lsb := 0, byte_count_msb := 0, 
          reserved := 0, tree_level := 0, bit_pad := false, field_type := 
          skein_block_type_msg, first_block := true, final_block := false))
***  Proved C1:  fld_hash_bit_len(fld_h(ctx__3)) >= 
          initialized_hash_bit_length__first
     using hypotheses H72 & H101.
***  Proved C2:  fld_hash_bit_len(fld_h(ctx__3)) <= 
          initialized_hash_bit_length__last
     using hypotheses H73 & H101.
***  Proved C3:  fld_hash_bit_len(fld_h(ctx__3)) = hashbitlen
     using hypotheses H97 & H101.
***  Proved C4:  fld_byte_count(fld_h(ctx__3)) = 0
     using hypothesis H102.
***  Proved C5:  fld_byte_count(fld_h(ctx__3)) >= 
          skein_512_block_bytes_count__first
     using hypotheses H10, H65 & H102.
***  Proved C6:  fld_byte_count(fld_h(ctx__3)) <= 
          skein_512_block_bytes_count__last
     using hypotheses H10, H66 & H102.
***  PROVED VC.


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


@@@@@@@@@@  VC: procedure_skein_512_init_15.  @@@@@@@@@@
%%%  Simplified H5 on reading formula in, to give:
     %%%  H5:  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 H6 on reading formula in, to give:
     %%%  H6:  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)
-S-  Applied substitution rule skein_512_in_rules(110).
     This was achieved by replacing all occurrences of 
          initialized_hash_bit_length__first by:
          1.
<S>  New H3:  hashbitlen >= 1
<S>  New H24:  fld_hash_bit_len(fld_h(ctx)) >= 1
<S>  New C1:  hash_bit_len_of(ctx) >= 1
-S-  Applied substitution rule skein_512_in_rules(111).
     This was achieved by replacing all occurrences of 
          initialized_hash_bit_length__last by:
          2147483640.
<S>  New H4:  hashbitlen <= 2147483640
<S>  New H25:  fld_hash_bit_len(fld_h(ctx)) <= 2147483640
<S>  New C2:  hash_bit_len_of(ctx) <= 2147483640
-S-  Applied substitution rule skein_512_in_rules(120).
     This was achieved by replacing all occurrences of 
          skein_512_block_bytes_count__first by:
          0.
<S>  New H28:  fld_byte_count(fld_h(ctx)) >= 0
<S>  New C5:  byte_count_of(ctx) >= 0
-S-  Applied substitution rule skein_512_in_rules(121).
     This was achieved by replacing all occurrences of 
          skein_512_block_bytes_count__last by:
          64.
<S>  New H29:  fld_byte_count(fld_h(ctx)) <= 64
<S>  New C6:  byte_count_of(ctx) <= 64
-S-  Applied substitution rule skein_512_in_rules(31).
     This was achieved by replacing all occurrences of natural__first by:
          0.
<S>  New H7:  fld_byte_count(fld_h(ctx)) >= 0
-S-  Applied substitution rule skein_512_in_rules(32).
     This was achieved by replacing all occurrences of natural__last by:
          2147483647.
<S>  New H8:  fld_byte_count(fld_h(ctx)) <= 2147483647
-S-  Applied substitution rule skein_512_in_rules(64).
     This was achieved by replacing all occurrences of 
          spark__unsigned__u6__first by:
          0.
<S>  New H13:  fld_field_type(fld_tweak_words(fld_h(ctx))) >= 0
-S-  Applied substitution rule skein_512_in_rules(65).
     This was achieved by replacing all occurrences of 
          spark__unsigned__u6__last by:
          63.
<S>  New H14:  fld_field_type(fld_tweak_words(fld_h(ctx))) <= 63
-S-  Applied substitution rule skein_512_in_rules(70).
     This was achieved by replacing all occurrences of 
          spark__unsigned__u7__first by:
          0.
<S>  New H16:  fld_tree_level(fld_tweak_words(fld_h(ctx))) >= 0
-S-  Applied substitution rule skein_512_in_rules(71).
     This was achieved by replacing all occurrences of 
          spark__unsigned__u7__last by:
          127.
<S>  New H17:  fld_tree_level(fld_tweak_words(fld_h(ctx))) <= 127
-S-  Applied substitution rule skein_512_in_rules(76).
     This was achieved by replacing all occurrences of 
          spark__unsigned__byte__first by:
          0.
<S>  New H5:  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 skein_512_in_rules(77).
     This was achieved by replacing all occurrences of 
          spark__unsigned__byte__last by:
          255.
<S>  New H5:  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 skein_512_in_rules(82).
     This was achieved by replacing all occurrences of 
          spark__unsigned__u16__first by:
          0.
<S>  New H18:  fld_reserved(fld_tweak_words(fld_h(ctx))) >= 0
-S-  Applied substitution rule skein_512_in_rules(83).
     This was achieved by replacing all occurrences of 
          spark__unsigned__u16__last by:
          65535.
<S>  New H19:  fld_reserved(fld_tweak_words(fld_h(ctx))) <= 65535
-S-  Applied substitution rule skein_512_in_rules(88).
     This was achieved by replacing all occurrences of 
          spark__unsigned__u32__first by:
          0.
<S>  New H20:  fld_byte_count_msb(fld_tweak_words(fld_h(ctx))) >= 0
-S-  Applied substitution rule skein_512_in_rules(89).
     This was achieved by replacing all occurrences of 
          spark__unsigned__u32__last by:
          4294967295.
<S>  New H21:  fld_byte_count_msb(fld_tweak_words(fld_h(ctx))) <= 4294967295
-S-  Applied substitution rule skein_512_in_rules(94).
     This was achieved by replacing all occurrences of 
          spark__unsigned__u64__first by:
          0.
<S>  New H6:  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 H22:  fld_byte_count_lsb(fld_tweak_words(fld_h(ctx))) >= 0
-S-  Applied substitution rule skein_512_in_rules(95).
     This was achieved by replacing all occurrences of 
          spark__unsigned__u64__last by:
          18446744073709551615.
<S>  New H23:  fld_byte_count_lsb(fld_tweak_words(fld_h(ctx))) <= 
          18446744073709551615
<S>  New H6:  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 skein_512_in_rules(105).
     This was achieved by replacing all occurrences of hash_bit_length__first 
          by:
          0.
<S>  New H9:  fld_hash_bit_len(fld_h(ctx)) >= 0
-S-  Applied substitution rule skein_512_in_rules(106).
     This was achieved by replacing all occurrences of hash_bit_length__last by:
          2147483640.
<S>  New H10:  fld_hash_bit_len(fld_h(ctx)) <= 2147483640
-S-  Applied substitution rule skein_512_in_rules(115).
     This was achieved by replacing all occurrences of 
          skein_512_state_words_index__first by:
          0.
<S>  New H6:  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 skein_512_in_rules(116).
     This was achieved by replacing all occurrences of 
          skein_512_state_words_index__last by:
          7.
<S>  New H6:  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 skein_512_in_rules(125).
     This was achieved by replacing all occurrences of 
          skein_512_block_bytes_index__first by:
          0.
<S>  New H5:  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 skein_512_in_rules(126).
     This was achieved by replacing all occurrences of 
          skein_512_block_bytes_index__last by:
          63.
<S>  New H5:  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 H2 (true-hypothesis).
---  Eliminated hypothesis H11 (true-hypothesis).
---  Eliminated hypothesis H12 (true-hypothesis).
---  Eliminated hypothesis H15 (true-hypothesis).
---  Eliminated hypothesis H28 (duplicate of H7).
---  Eliminated hypothesis H25 (duplicate of H10).
---  Eliminated hypothesis H7 (redundant, given H27).
---  Eliminated hypothesis H8 (redundant, given H27).
---  Eliminated hypothesis H9 (redundant, given H24).
---  Eliminated hypothesis H29 (redundant, given H27).
-S-  Eliminated hypothesis H26.
     This was achieved by replacing all occurrences of hashbitlen by:
          fld_hash_bit_len(fld_h(ctx)).
<S>  New H3:  fld_hash_bit_len(fld_h(ctx)) >= 1
<S>  New H4:  fld_hash_bit_len(fld_h(ctx)) <= 2147483640
<S>  New C3:  hash_bit_len_of(ctx) = fld_hash_bit_len(fld_h(ctx))
     +++  New H30:  integer__size >= 0
     +++  New H31:  natural__size >= 0
     +++  New H32:  spark__unsigned__u6__size >= 0
     +++  New H33:  spark__unsigned__u7__size >= 0
     +++  New H34:  spark__unsigned__byte__size >= 0
     +++  New H35:  spark__unsigned__u16__size >= 0
     +++  New H36:  spark__unsigned__u32__size >= 0
     +++  New H37:  spark__unsigned__u64__size >= 0
     +++  New H38:  spark__crypto__word_count_t__size >= 0
     +++  New H39:  hash_bit_length__size >= 0
     +++  New H40:  initialized_hash_bit_length__size >= 0
     +++  New H41:  skein_512_state_words_index__size >= 0
     +++  New H42:  skein_512_block_bytes_count__size >= 0
     +++  New H43:  skein_512_block_bytes_index__size >= 0
     +++  New H44:  skein_512_state_bytes_index__size >= 0
     +++  New H45:  positive_block_512_count_t__size >= 0
     +++  New H46:  skein_512_context__size >= 0
     +++  New H47:  context_header__size >= 0
     +++  New H48:  0 <= fld_byte_count(fld_h(null_skein_512_context))
     +++  New H49:  fld_byte_count(fld_h(null_skein_512_context)) <= 2147483647
     +++  New H50:  0 <= fld_field_type(fld_tweak_words(fld_h(
          null_skein_512_context)))
     +++  New H51:  fld_field_type(fld_tweak_words(fld_h(null_skein_512_context)
          )) <= 63
     +++  New H52:  0 <= fld_tree_level(fld_tweak_words(fld_h(
          null_skein_512_context)))
     +++  New H53:  fld_tree_level(fld_tweak_words(fld_h(null_skein_512_context)
          )) <= 127
     +++  New H54:  0 <= fld_reserved(fld_tweak_words(fld_h(
          null_skein_512_context)))
     +++  New H55:  fld_reserved(fld_tweak_words(fld_h(null_skein_512_context)))
           <= 65535
     +++  New H56:  0 <= fld_byte_count_msb(fld_tweak_words(fld_h(
          null_skein_512_context)))
     +++  New H57:  fld_byte_count_msb(fld_tweak_words(fld_h(
          null_skein_512_context))) <= 4294967295
     +++  New H58:  0 <= fld_byte_count_lsb(fld_tweak_words(fld_h(
          null_skein_512_context)))
     +++  New H59:  fld_byte_count_lsb(fld_tweak_words(fld_h(
          null_skein_512_context))) <= 18446744073709551615
     +++  New H60:  0 <= fld_hash_bit_len(fld_h(null_skein_512_context))
     +++  New H61:  fld_hash_bit_len(fld_h(null_skein_512_context)) <= 
          2147483640
***  Proved C4:  byte_count_of(ctx) = 0
     This was achieved by applying the rewrite rule skein_rules(1)
     [from rulefile skein.rlu] to rewrite this conclusion to:
<S>  C4:  fld_byte_count(fld_h(ctx)) = 0
     This rule could be applied because its side-conditions hold, as follows:
     <<<  From H27, proved: fld_byte_count(fld_h(ctx)) = 0
     <<<  Immediate condition checktype(ctx, skein_512_context) evaluated 
          successfully
***  Proved C1:  hash_bit_len_of(ctx) >= 1
     This was achieved by applying the rewrite rule skein_rules(2)
     [from rulefile skein.rlu] to rewrite this conclusion to:
<S>  C1:  fld_hash_bit_len(fld_h(ctx)) >= 1
     This rule could be applied because its side-conditions hold, as follows:
     <<<  From H3, proved: fld_hash_bit_len(fld_h(ctx)) >= 1
     <<<  Immediate condition checktype(ctx, skein_512_context) evaluated 
          successfully
***  Proved C2:  hash_bit_len_of(ctx) <= 2147483640
     This was achieved by applying the rewrite rule skein_rules(2)
     [from rulefile skein.rlu] to rewrite this conclusion to:
<S>  C2:  fld_hash_bit_len(fld_h(ctx)) <= 2147483640
     This rule could be applied because its side-conditions hold, as follows:
     <<<  From H4, proved: fld_hash_bit_len(fld_h(ctx)) <= 2147483640
     <<<  Immediate condition checktype(ctx, skein_512_context) evaluated 
          successfully
***  Proved C5:  byte_count_of(ctx) >= 0
     This was achieved by applying the rewrite rule skein_rules(1)
     [from rulefile skein.rlu] to rewrite this conclusion to:
<S>  C5:  fld_byte_count(fld_h(ctx)) >= 0
     This rule could be applied because its side-conditions hold, as follows:
     <<<  From H7, proved: fld_byte_count(fld_h(ctx)) >= 0
     <<<  Immediate condition checktype(ctx, skein_512_context) evaluated 
          successfully
***  Proved C6:  byte_count_of(ctx) <= 64
     This was achieved by applying the rewrite rule skein_rules(1)
     [from rulefile skein.rlu] to rewrite this conclusion to:
<S>  C6:  fld_byte_count(fld_h(ctx)) <= 64
     This rule could be applied because its side-conditions hold, as follows:
     <<<  From H29, proved: fld_byte_count(fld_h(ctx)) <= 64
     <<<  Immediate condition checktype(ctx, skein_512_context) evaluated 
          successfully
***  Proved C3:  hash_bit_len_of(ctx) = fld_hash_bit_len(fld_h(ctx))
     This was achieved by applying the rewrite rule skein_rules(2)
     [from rulefile skein.rlu] to rewrite this conclusion to:
<S>  C3:  fld_hash_bit_len(fld_h(ctx)) = fld_hash_bit_len(fld_h(ctx))
     This rule could be applied because its side-conditions hold, as follows:
     <<<  By simple reasoning, proved: fld_hash_bit_len(fld_h(ctx)) = 
          fld_hash_bit_len(fld_h(ctx))
     <<<  Immediate condition checktype(ctx, skein_512_context) evaluated 
          successfully
***  PROVED VC.

VCN  15: Summary of user rule application.
FIL  skein.rlu
RUL     skein_rules(1)
CON        4, 5, 6
RUL     skein_rules(2)
CON        1, 2, 3


OVR  Overall summary of VCs using user rules.
FIL  skein.rlu
RUL     skein_rules(1)
VCS        15
RUL     skein_rules(2)
VCS        15

