@@ -28,7 +28,7 @@ heapster_typecheck_fun env "round_16_80"
28
28
\ arg2:int64_ptr<>, arg3:int64_ptr<>, arg4:int64_ptr<>, arg5:int64_ptr<>, \
29
29
\ arg6:int64_ptr<>, arg7:int64_ptr<>, arg8:int64_ptr<>, arg9:int64_ptr<>, \
30
30
\ arg10:array(W,0,<16,*8,fieldsh(int64<>)), \
31
- \ arg11:int64_ptr<> , arg12:int64_ptr<> , arg13:int64_ptr<> -o \
31
+ \ arg11:ptr((W,0) |-> true) , arg12:ptr((W,0) |-> true) , arg13:int64_ptr<> -o \
32
32
\ arg2:int64_ptr<>, arg3:int64_ptr<>, arg4:int64_ptr<>, arg5:int64_ptr<>, \
33
33
\ arg6:int64_ptr<>, arg7:int64_ptr<>, arg8:int64_ptr<>, arg9:int64_ptr<>, \
34
34
\ arg10:array(W,0,<16,*8,fieldsh(int64<>)), \
@@ -38,8 +38,6 @@ heapster_typecheck_fun env "return_X"
38
38
"(). arg0:array(W,0,<16,*8,fieldsh(int64<>)) -o \
39
39
\ arg0:array(W,0,<16,*8,fieldsh(int64<>))";
40
40
41
- heapster_set_debug_level env 1;
42
-
43
41
heapster_set_translation_checks env false;
44
42
heapster_typecheck_fun env "processBlock"
45
43
"(num:bv 64). arg0:int64_ptr<>, arg1:int64_ptr<>, arg2:int64_ptr<>, \
@@ -51,9 +49,7 @@ heapster_typecheck_fun env "processBlock"
51
49
\ arg6:int64_ptr<>, arg7:int64_ptr<>, \
52
50
\ arg8:array(R,0,<16*num,*8,fieldsh(int64<>)), ret:true";
53
51
54
- heapster_export_coq env "sha512_mr_solver_gen.v";
55
-
56
- /*
52
+ // FIXME: This translation contains errors
57
53
heapster_set_translation_checks env false;
58
54
heapster_typecheck_fun env "processBlocks"
59
55
"(num:bv 64). arg0:array(W,0,<8,*8,fieldsh(int64<>)), \
@@ -63,6 +59,8 @@ heapster_typecheck_fun env "processBlocks"
63
59
\ arg1:array(R,0,<16*num,*8,fieldsh(int64<>)), \
64
60
\ arg2:true, ret:true";
65
61
62
+ heapster_export_coq env "sha512_mr_solver_gen.v";
63
+
66
64
// Mr. Solver
67
65
68
66
let eq_bool b1 b2 =
@@ -81,13 +79,14 @@ let run_test name test expected =
81
79
82
80
round_00_15 <- parse_core_mod "SHA512" "round_00_15";
83
81
round_16_80 <- parse_core_mod "SHA512" "round_16_80";
84
- // processBlock <- parse_core_mod "SHA512" "processBlock";
85
- // processBlocks <- parse_core_mod "SHA512" "processBlocks";
82
+ processBlock <- parse_core_mod "SHA512" "processBlock";
83
+ processBlocks <- parse_core_mod "SHA512" "processBlocks";
86
84
87
85
// Test that every function refines itself
88
- // run_test "processBlocks |= processBlocks" (mr_solver processBlocks processBlocks) true;
86
+ run_test "processBlocks |= processBlocks" (mr_solver processBlocks processBlocks) true;
87
+ // FIXME: Why does this hang?
89
88
// run_test "processBlock |= processBlock" (mr_solver processBlock processBlock) true;
90
- // run_test "round_16_80 |= round_16_80" (mr_solver round_16_80 round_16_80) true;
89
+ run_test "round_16_80 |= round_16_80" (mr_solver round_16_80 round_16_80) true;
91
90
// run_test "round_00_15 |= round_00_15" (mr_solver round_00_15 round_00_15) true;
92
91
93
92
import "sha512.cry";
@@ -105,5 +104,6 @@ monadify_term {{ Maj }};
105
104
monadify_term {{ round_00_15_spec }};
106
105
107
106
run_test "round_00_15 |= round_00_15_spec" (mr_solver round_00_15 {{ round_00_15_spec }}) true;
108
- run_test "round_16_80 |= round_16_80_spec" (mr_solver_debug 0 round_16_80 {{ round_16_80_spec }}) true;
109
- */
107
+
108
+ // FIXME: Need to add heterogenous equality on output types for this to work
109
+ // run_test "round_16_80 |= round_16_80_spec" (mr_solver_debug 0 round_16_80 {{ round_16_80_spec }}) true;
0 commit comments