State.Tree_statemodule T = Soteria_rust_lib.Typed.Tmodule DecayMap = Sptr.DecayMapmodule DecayMapMonad = Sptr.DecayMapMonadmodule Sptr = Sptr.ArithPtrmodule Encoder : sig ... endmodule StateKey : sig ... endmodule Bi (B : Soteria.Sym_states.Base.M(DecayMapMonad).S) : sig ... endmodule Tree_block : sig ... endmodule Meta : sig ... endmodule GlobMap : sig ... endmodule FunBiMap : sig ... endmodule Block : sig ... endmodule Freeable_block : sig ... endmodule Freeable_block_with_meta : sig ... endmodule Heap : sig ... endval pp_syn :
Ppx_deriving_runtime.Format.formatter ->
syn ->
Ppx_deriving_runtime.unitval show_syn : syn -> Ppx_deriving_runtime.stringtype t = {heap : Heap.t option;functions : FunBiMap.t;globals : Sptr.t Rust_val.full_ptr GlobMap.t;errors : Error.with_trace list;pointers : DecayMap.t;thread_destructor : unit ->
t option ->
((unit, Error.with_trace, syn list) Soteria.Symex.Compo_res.t * t option)
Rustsymex.t;const_generics : Sptr.t Rust_val.rust_val Charon.Types.ConstGenericVarId.Map.t;}val pp :
Ppx_deriving_runtime.Format.formatter ->
t ->
Ppx_deriving_runtime.unitval show : t -> Ppx_deriving_runtime.stringmodule SM : sig ... endval pp_pretty : ignore_freed:bool -> Stdlib.Format.formatter -> t -> unitval empty_state : tval empty : t optionval with_loc_err :
?trace:string ->
unit ->
(unit -> ('a, Error.t, 'f) SM.Result.t) ->
('a, Error.with_trace, 'f) SM.Result.tval with_heap :
('a, 'b, Heap.syn list) Heap.SM.Result.t ->
('a, 'b, syn list) SM.Result.tval apply_parser :
?ignore_borrow:bool ->
Sptr.t ->
(offset:T.sint Typed.t -> 'a Heap.Decoder.ParserMonad.t) ->
('a, Error.t, syn list) SM.Result.tval with_decay_map : 'a DecayMapMonad.t -> 'a SM.tval with_ptr :
Sptr.t ->
([ `NonZero | `Zero ] Typed.t ->
('a,
[> `AccessedFnPointer
| `NullDereference
| `UBDanglingPointer
| `UseAfterFree ] as 'b,
Block.syn list)
Block.SM.Result.t) ->
('a, 'b, syn list) SM.Result.tval uninit :
(Sptr.t * 'a) ->
Charon.Types.ty ->
(unit, Error.with_trace, syn list) SM.Result.tval tb_load_untyped :
Sptr.t ->
[ `NonZero | `Zero ] Typed.t ->
(unit,
[> `AccessedFnPointer
| `AliasingError
| `NullDereference
| `OutOfBounds
| `UBDanglingPointer
| `UseAfterFree ],
syn list)
SM.Result.tPerforms a load at the tree borrow level, by updating the borrow state, without attempting to validate the values or checking uninitialised memory accesses; all of these are ignored.
val tb_load :
(Sptr.t * 'a) ->
Charon.Types.ty ->
(unit, Error.with_trace, syn list) SM.Result.tPerforms a load at the tree borrow level, by updating the borrow state, without attempting to validate the values or checking uninitialised memory accesses; all of these are ignored.
val store :
(Sptr.t * Sptr.t Rust_val.meta) ->
Charon.Types.ty ->
Encoder.rust_val ->
(unit, Error.with_trace, syn list) SM.Result.tval size_and_align_of_val :
Charon.Types.ty ->
(Soteria_rust_lib.Typed.T.sint Typed.t, Sptr.t) Rust_val.meta_raw ->
(Soteria_rust_lib.Typed.T.sint Typed.t
* Soteria_rust_lib.Typed.T.nonzero Typed.t,
Error.with_trace,
syn list)
SM.Result.tval check_ptr_align :
Sptr.t Rust_val.full_ptr ->
Charon.Types.ty ->
(unit, Error.with_trace, syn list) SM.Result.tval load :
?ignore_borrow:bool ->
(Sptr.t * (Soteria_rust_lib.Typed.T.sint Typed.t, Sptr.t) Rust_val.meta_raw) ->
Charon.Types.ty_kind ->
(Sptr.t Rust_val.rust_val, Error.with_trace, syn list) SM.Result.tval load_discriminant :
(Sptr.t * Sptr.t Rust_val.meta) ->
Charon.Types.ty ->
(Charon.Types.variant_id, Error.with_trace, syn list) SM.Result.tval check_non_dangling :
(Sptr.t * (Soteria_rust_lib.Typed.T.sint Typed.t, Sptr.t) Rust_val.meta_raw) ->
Charon.Types.ty ->
(unit, Error.with_trace, syn list) SM.Result.tval fake_read :
(Sptr.t * (Soteria_rust_lib.Typed.T.sint Typed.t, Sptr.t) Rust_val.meta_raw) ->
Charon.Types.ty ->
(unit, Error.with_trace, syn list) SM.Result.tval copy_nonoverlapping :
src:(Sptr.t * 'a) ->
dst:(Sptr.t * 'b) ->
size:Tree_block.MemVal.S_bounded_int.t Sptr.DecayMapMonad.Value.t ->
(unit, Error.with_trace, syn list) SM.Result.tval alloc :
?kind:Common.Alloc_kind.t ->
?span:Charon.Meta.span_data ->
?zeroed:bool ->
Tree_block.sint ->
Soteria_rust_lib.Typed.T.nonzero Typed.t ->
(Sptr.t * ('a, 'b) Rust_val.meta_raw, 'c, syn list) SM.Result.tval alloc_untyped :
?kind:Common.Alloc_kind.t ->
?span:Charon.Meta.span_data ->
zeroed:bool ->
size:Tree_block.sint ->
align:Soteria_rust_lib.Typed.T.nonzero Typed.t ->
(Sptr.t * ('a, 'b) Rust_val.meta_raw, 'c, syn list) SM.Result.tval alloc_ty :
?kind:Common.Alloc_kind.t ->
?span:Charon.Meta.span_data ->
Charon.Types.ty ->
(Sptr.t * ('a, 'b) Rust_val.meta_raw, Error.with_trace, syn list) SM.Result.tval alloc_tys :
?kind:Common.Alloc_kind.t ->
?span:Charon.Meta.span_data ->
Charon.Types.ty list ->
((Sptr.t * ('a, 'b) Rust_val.meta_raw) list, Error.with_trace, syn list)
SM.Result.tval free : (Sptr.t * 'a) -> (unit, Error.with_trace, syn list) SM.Result.tval zeros :
(Sptr.t * 'a) ->
[ `NonZero | `Zero ] Typed.t ->
(unit, Error.with_trace, syn list) SM.Result.tval with_globals :
unit ->
(Sptr.t Rust_val.full_ptr GlobMap.t ->
'a * Sptr.t Rust_val.full_ptr GlobMap.t) ->
('a, 'b, 'c) Soteria.Symex.Compo_res.t SM.tval store_str_global :
string ->
Sptr.t Rust_val.full_ptr ->
(unit, 'a, 'b) Soteria.Symex.Compo_res.t SM.tval store_global :
Charon.Types.global_decl_id ->
Sptr.t Rust_val.full_ptr ->
(unit, 'a, 'b) Soteria.Symex.Compo_res.t SM.tval load_str_global :
string ->
(Sptr.t Rust_val.full_ptr option, 'a, 'b) Soteria.Symex.Compo_res.t SM.tval load_global :
Charon.Types.global_decl_id ->
(Sptr.t Rust_val.full_ptr option, 'a, 'b) Soteria.Symex.Compo_res.t SM.tval borrow :
?protect:bool ->
(Sptr.t * 'a) ->
Charon.Types.ty ->
(Sptr.t * 'a, Error.with_trace, syn list) SM.Result.tval unprotect :
(Sptr.t * 'a) ->
Charon.Types.ty ->
(unit, Error.with_trace, syn list) SM.Result.tval with_exposed :
[< Soteria__Bv_values__Typed.T.sint ] Typed.t ->
(Sptr.t * ('a, 'b) Rust_val.meta_raw, Error.with_trace, syn list) SM.Result.tval leak_check : unit -> (unit, Error.with_trace, syn list) SM.Result.tval with_errors :
unit ->
(Error.with_trace list -> 'a * Error.with_trace list) ->
('a, Error.with_trace, syn list) SM.Result.tval add_error :
Error.with_trace ->
(unit, Error.with_trace, syn list) SM.Result.tval pop_error :
unit ->
('a, Error.with_trace, syn list) Soteria.Symex.Compo_res.t SM.tval with_functions : (FunBiMap.t -> 'a * FunBiMap.t) -> 'a SM.tval declare_fn :
FunBiMap.M_rev.key ->
(Sptr.t * ('a, 'b) Rust_val.meta_raw, 'c, syn list) Soteria.Symex.Compo_res.t
SM.tval lookup_fn :
(Sptr.t * 'a) ->
(Common.Fun_kind.t, Error.with_trace, 'b) SM.Result.tval lookup_const_generic :
Charon.Types.ConstGenericVarId.Map.key ->
Charon.Types.ty ->
(Sptr.t Rust_val.rust_val, Error.with_trace, 'a) SM.Result.tval register_thread_exit :
(unit -> (unit, Error.with_trace, syn list) Soteria.Symex.Compo_res.t SM.t) ->
(unit, 'a, 'b) Soteria.Symex.Compo_res.t SM.tval run_thread_exits :
unit ->
t option ->
((unit, Error.with_trace, syn list) Soteria.Symex.Compo_res.t * t option)
Rustsymex.tval ins_outs :
syn ->
DecayMapMonad.Value.Expr.t list * DecayMapMonad.Value.Expr.t list