StateM.Layoutmodule BV = Soteria_rust_lib.Typed.BVmodule Tag_layout : sig ... endLayout of enum tags in memory. Note tags are distinct from discriminants: a discriminant is user specified and is what Rvalue.Discriminant returns, whereas a tag is specific to variant layouts, and may be of smaller size than the discriminant, or not be encoded at all if it is the untagged variant of a niche-optimised enum.
module Fields_shape : sig ... endWe use a custom type for the member offsets for layouts; this allows us to use a more efficient representation for arrays T; N, that doesn't require N offsets.
type t = {size : Soteria_rust_lib.Typed.T.sint Typed.t;align : Soteria_rust_lib.Typed.T.nonzero Typed.t;uninhabited : bool;fields : Fields_shape.t;}val pp :
Ppx_deriving_runtime.Format.formatter ->
t ->
Ppx_deriving_runtime.unitval show : t -> Ppx_deriving_runtime.stringval iter_vars :
t ->
((Soteria.Bv_values.Svalue.Var.t * 'a Typed.ty) -> unit) ->
unitmodule Session : sig ... endval dst_kind : Charon.Types.ty -> meta_kindval mk :
size:Soteria_rust_lib.Typed.T.sint Typed.t ->
align:Soteria_rust_lib.Typed.T.nonzero Typed.t ->
?uninhabited:bool ->
?fields:Fields_shape.t ->
unit ->
tval mk_concrete :
size:int ->
align:int ->
?uninhabited:bool ->
?fields:Fields_shape.t ->
unit ->
tval not_impl_layout : string -> Charon.Types.ty -> 'a Rustsymex.tval translate_layout :
Charon.Types.ty ->
Charon.Types.layout ->
Soteria_rust_lib__Rustsymex.MonadState.t ->
((t, [> `InvalidLayout of Charon.Types.ty ], 'f) Soteria.Symex.Compo_res.t
* Soteria_rust_lib__Rustsymex.MonadState.t)
Soteria__Symex.Make(Soteria.Bv_values.Bv_solver.Z3_solver).tval compute_size :
Charon.Types.ty ->
int option ->
Soteria_rust_lib.Typed.T.sint Typed.tval compute_align :
Charon.Types.ty ->
int option ->
Soteria_rust_lib.Typed.T.nonzero Typed.tval compute_arbitrary_layout :
?fst_size:Soteria_rust_lib.Typed.T.sint Typed.t ->
?fst_align:Soteria_rust_lib.Typed.T.nonzero Soteria.Bv_values.Typed.t ->
?variant:Charon.Types.VariantId.id ->
Charon.Types.ty ->
Charon.Types.ty list ->
Soteria_rust_lib__Rustsymex.MonadState.t ->
((t, [> `InvalidLayout of Charon.Types.ty ], 'f) Soteria.Symex.Compo_res.t
* Soteria_rust_lib__Rustsymex.MonadState.t)
Soteria__Symex.Make(Soteria.Bv_values.Bv_solver.Z3_solver).tval compute_enum_layout :
Charon.Types.ty ->
Charon.Types.variant list ->
Soteria_rust_lib__Rustsymex.MonadState.t ->
((t, [> `InvalidLayout of Charon.Types.ty ], 'f) Soteria.Symex.Compo_res.t
* Soteria_rust_lib__Rustsymex.MonadState.t)
Soteria__Symex.Make(Soteria.Bv_values.Bv_solver.Z3_solver).tval compute_union_layout :
Charon.Types.ty ->
Charon.Types.ty list ->
Soteria_rust_lib__Rustsymex.MonadState.t ->
((t, [> `InvalidLayout of Charon.Types.ty ], 'f) Soteria.Symex.Compo_res.t
* Soteria_rust_lib__Rustsymex.MonadState.t)
Soteria__Symex.Make(Soteria.Bv_values.Bv_solver.Z3_solver).tval resolve_trait_ty :
Charon.Types.trait_ref ->
Charon.Types.trait_item_name ->
Soteria_rust_lib__Rustsymex.MonadState.t ->
((Charon.Types.ty, [> `InvalidLayout of Charon.Types.ty ], 'f)
Soteria.Symex.Compo_res.t
* Soteria_rust_lib__Rustsymex.MonadState.t)
Soteria__Symex.Make(Soteria.Bv_values.Bv_solver.Z3_solver).tval normalise :
Charon.Types.ty ->
Soteria_rust_lib__Rustsymex.MonadState.t ->
((Charon.Types.ty, [> `InvalidLayout of Charon.Types.ty ], 'a)
Soteria.Symex.Compo_res.t
* Soteria_rust_lib__Rustsymex.MonadState.t)
Soteria__Symex.Make(Soteria.Bv_values.Bv_solver.Z3_solver).tval min_value_z : Charon.Types.literal_type -> Soteria.Soteria_std.Z.tval max_value_z : Charon.Types.literal_type -> Soteria.Soteria_std.Z.tval size_of :
Charon.Types.ty ->
([> Soteria_rust_lib.Typed.T.sint ] Typed.t, 'env) tval align_of :
Charon.Types.ty ->
([> Soteria_rust_lib.Typed.T.nonzero ] Typed.t, 'env) tval is_abi_compatible :
Charon.Types.ty ->
Charon.Types.ty ->
([> Soteria_rust_lib.Typed.T.sbool ] Typed.t, 'env) t