import "/Users/emertens/Source/ascon/Ascon.cry"; let i8 = llvm_int 8; let i64 = llvm_int 64; let S_type = llvm_array 5 i64; let fresh_alloc n t = do { X <- llvm_fresh_var n t; X_ptr <- llvm_alloc t; llvm_points_to X_ptr (llvm_term X); return (X, X_ptr); }; let fresh_alloc_readonly n t = do { X <- llvm_fresh_var n t; X_ptr <- llvm_alloc_readonly t; llvm_points_to X_ptr (llvm_term X); return (X, X_ptr); }; thm_ROUND <- llvm_verify m "ROUND" [] false do { (S, S_ptr) <- fresh_alloc "S" S_type; C <- llvm_fresh_var "C" i8; llvm_execute_func [S_ptr, llvm_term C]; llvm_points_to S_ptr (llvm_term {{ round S (zext C) }}); } rme; let mk_P12 = llvm_verify m "P12" [thm_ROUND] false do { (S, S_ptr) <- fresh_alloc "S" S_type; llvm_execute_func [S_ptr]; llvm_points_to S_ptr (llvm_term {{ Ascon_p`{12} S }}); } (w4_unint_rme ["Ascon::round"]); let mk_P8 = llvm_verify m "P8" [thm_ROUND] false do { (S, S_ptr) <- fresh_alloc "S" S_type; llvm_execute_func [S_ptr]; llvm_points_to S_ptr (llvm_term {{ Ascon_p`{8} S }}); } (w4_unint_rme ["Ascon::round"]);