kdrag.printers.rust
Functions
|
|
|
|
|
Mangle a name to be a valid Rust identifier >>> mangle_name("my-fun") 'my_KDHYPH_fun' >>> mangle_name("my.fun") 'my_KDDOT_fun' |
|
|
|
|
|
Classes
|
- class kdrag.printers.rust.VerusModule(name: str, datatypes: list[z3.z3.DatatypeSortRef] = <factory>, spec_funs: dict[str, tuple[list[z3.z3.ExprRef], z3.z3.ExprRef]] = <factory>, proof_funs: dict[str, tuple[list[z3.z3.ExprRef], z3.z3.BoolRef]] = <factory>)
Bases:
object- Parameters:
name (str)
datatypes (list[DatatypeSortRef])
spec_funs (dict[str, tuple[list[ExprRef], ExprRef]])
proof_funs (dict[str, tuple[list[ExprRef], BoolRef]])
- add_defn(f: FuncDeclRef)
- Parameters:
f (FuncDeclRef)
- check(filename, verus_binary='verus')
Write module to file and check with Verus >>> m = VerusModule(“testmod”) >>> x = smt.Int(“x”) >>> m.spec_funs[“myabs”] = ([x], smt.If(x >= 0, x, -x)) >>> myabs = smt.Function(“myabs”, smt.IntSort(), smt.IntSort()) >>> m.proof_funs[“myabs_nonneg”] = ([x], myabs(x) >= 0)
- datatypes: list[DatatypeSortRef]
- name: str
- proof_funs: dict[str, tuple[list[ExprRef], BoolRef]]
- spec_funs: dict[str, tuple[list[ExprRef], ExprRef]]
- to_str()
- write(filename)
Write module to file
- kdrag.printers.rust.compile_rust(fun_name, fun_code, dir='/tmp/kdrag_rust')
- kdrag.printers.rust.datatype_sort(s: DatatypeSortRef) str
>>> datatype_sort(kd.TupleSort(smt.IntSort(), smt.BoolSort())) 'struct Tuple_Int_Bool { _0 : int, _1 : bool }' >>> datatype_sort(kd.ListSort(smt.IntSort())) 'enum List_Int { Nil { }, Cons { head : int, tail : List_Int } }'
- Parameters:
s (DatatypeSortRef)
- Return type:
str
- kdrag.printers.rust.init_proj(proj_path='/tmp/kdrag_rust')
- kdrag.printers.rust.mangle_name(name: str) str
Mangle a name to be a valid Rust identifier >>> mangle_name(“my-fun”) ‘my_KDHYPH_fun’ >>> mangle_name(“my.fun”) ‘my_KDDOT_fun’
- Parameters:
name (str)
- Return type:
str
- kdrag.printers.rust.of_expr(e: ExprRef) str
>>> of_expr(smt.IntVal(5)) '5' >>> of_expr(smt.BitVecVal(255, 8)) '0xff' >>> of_expr(smt.Or(smt.BoolVal(True), smt.BoolVal(False))) '(true || false)' >>> of_expr(smt.And(smt.BoolVal(True), smt.BoolVal(False))) '(true && false)' >>> of_expr(smt.Not(smt.BoolVal(True))) '(!true)' >>> of_expr(smt.Int("x")) 'x' >>> of_expr(smt.If(smt.Int("x") > 0, smt.Int("x"), -smt.Int("x"))) '(if (x > 0) { x } else { (-x) })'
- Parameters:
e (ExprRef)
- Return type:
str
- kdrag.printers.rust.of_sort(s: SortRef) str
>>> of_sort(smt.SeqSort(smt.BitVecSort(8))) 'Seq<u8>' >>> of_sort(smt.IntSort()) 'int' >>> of_sort(smt.BoolSort()) 'bool' >>> of_sort(smt.ArraySort(smt.IntSort(), smt.BoolSort())) 'Set<int>'
- Parameters:
s (SortRef)
- Return type:
str
- kdrag.printers.rust.rust_module_template(modname: str, fun_name: str, fun_code: str)
- Parameters:
modname (str)
fun_name (str)
fun_code (str)