126 lines
3.5 KiB
Plaintext
Executable File
126 lines
3.5 KiB
Plaintext
Executable File
//test curent rules
|
|
//max rule id:30
|
|
|
|
#include "int_array_def.h"
|
|
|
|
#include "verification_list.h"
|
|
#include "verification_stdlib.h"
|
|
|
|
id : 1
|
|
priority : core(1)
|
|
left : store_uint_array(?p, ?n, ?l) at 0
|
|
right : data_at(?p + (?i * sizeof(U32)), U32, ?v) at 1
|
|
check : infer(0 <= i);
|
|
infer(i < n);
|
|
action : right_erase(1);
|
|
left_erase(0);
|
|
left_add(store_uint_array_missing_i_rec(p, i, 0, n, l));
|
|
right_add(v == l[i]);
|
|
|
|
id : 2
|
|
priority : post(1)
|
|
left : store_uint_array_missing_i_rec(?p, ?i, 0, ?n, ?l) at 0
|
|
data_at(p + i * sizeof(U32), U32, l[i]) at 1
|
|
check : infer(0 <= i);
|
|
infer(i < n);
|
|
action : left_erase(1);
|
|
left_erase(0);
|
|
left_add(store_uint_array(p, n, l));
|
|
|
|
id : 3
|
|
priority : post(3)
|
|
left : store_uint_array_missing_i_rec(?p, ?i, 0, ?n, ?l) at 0
|
|
data_at(p + i * sizeof(U32), U32, ?v) at 1
|
|
check : infer(0 <= i);
|
|
infer(i < n);
|
|
action : left_erase(1);
|
|
left_erase(0);
|
|
left_add(store_uint_array(p, n, replace_Znth{Z}(i, v, l)));
|
|
|
|
id : 4
|
|
priority : core(1)
|
|
left : store_uint_array(?p, ?n, ?l1) at 0
|
|
right : store_uint_array(p, n, ?l2) at 1
|
|
action : right_erase(1);
|
|
left_erase(0);
|
|
right_add(l1 == l2);
|
|
|
|
id : 5
|
|
priority : core(1)
|
|
left : store_uint_array_missing_i_rec(?p, ?i, ?v, ?n, ?l) at 0
|
|
right : store_uint_array_missing_i_rec(p, i, v, n, l) at 1
|
|
action : left_erase(0);
|
|
right_erase(1);
|
|
|
|
|
|
id : 6
|
|
priority : core(1)
|
|
left : store_uint_array_rec(?p, ?x, ?y, ?l1) at 0
|
|
right : store_uint_array_rec(?p, ?x, ?y, ?l2) at 1
|
|
action : right_erase(1);
|
|
left_erase(0);
|
|
right_add(l1 == l2);
|
|
|
|
|
|
id : 7
|
|
priority : core(1)
|
|
left : store_uint_array_rec(?p, ?x, ?y, ?l) at 0
|
|
right : data_at(?p + (?i * sizeof(U32)), U32, ?v) at 1
|
|
check : infer(x <= i);
|
|
infer(i < y);
|
|
action : right_erase(1);
|
|
left_erase(0);
|
|
left_add(store_uint_array_missing_i_rec(p, i, x, y, l));
|
|
right_add(v == l[i - x]);
|
|
|
|
id : 8
|
|
priority : core(1)
|
|
left : store_uint_array_rec(?p, ?x, ?y, ?l1) at 0
|
|
store_uint_array_rec(?p, ?y, ?z, ?l2) at 1
|
|
right : store_uint_array_rec(?p, ?x, ?z, ?l3) at 2
|
|
check : infer(y <= z);
|
|
infer(x <= y);
|
|
action : right_erase(2);
|
|
left_erase(0);
|
|
left_erase(1);
|
|
right_add(l3 == app{Z}(l1, l2));
|
|
|
|
id : 9
|
|
priority : core(1)
|
|
left : store_uint_array_rec(?p, ?x, ?z, ?l3) at 2
|
|
right : store_uint_array_rec(?p, ?x, ?y, ?l1) at 0
|
|
store_uint_array_rec(?p, ?y, ?z, ?l2) at 1
|
|
check : infer(y <= z);
|
|
infer(x <= y);
|
|
action : left_erase(2);
|
|
right_erase(0);
|
|
right_erase(1);
|
|
right_add(l3 == app{Z}(l1, l2));
|
|
right_add(Zlength{Z}(l1) == y - x);
|
|
|
|
id : 10
|
|
priority : core(1)
|
|
right : store_uint_array_rec(?p, ?x, ?x, ?l) at 0
|
|
action : right_erase(0);
|
|
right_add(l == nil{Z});
|
|
|
|
|
|
id : 11
|
|
priority : post(1)
|
|
left : store_uint_array_missing_i_rec(?p, ?i, ?x, ?y, ?l) at 0
|
|
data_at(p + ?i * sizeof(U32), U32, l[?i - ?x]) at 1
|
|
check : infer(x <= i);
|
|
infer(i < y);
|
|
action : left_erase(1);
|
|
left_erase(0);
|
|
left_add(store_uint_array_rec(p, x, y, l));
|
|
|
|
id : 12
|
|
priority : post(4)
|
|
left : store_uint_array_missing_i_rec(?p, ?i, ?x, ?y, ?l) at 0
|
|
data_at(p + ?i * sizeof(U32), U32, ?v) at 1
|
|
check : infer(x <= i);
|
|
infer(i < y);
|
|
action : left_erase(1);
|
|
left_erase(0);
|
|
left_add(store_uint_array_rec(p, x, y, replace_Znth{Z}(i - x, v, l))); |