String (imandra-base.Imandra_prelude.String)

### Byte strings

These strings correspond to OCaml native strings, and do not have a particular unicode encoding.

Rather, they should be seen as sequences of bytes, and it is also this way that Imandra considers them.

`type t = string`
`val empty : t`
`val length : t -> int`
`val make : Caml.Int.t -> char -> t`
`val append : t -> t -> t`
`val get : t -> Caml.Int.t -> char`
`val concat : t -> t list -> t`
`val prefix : t -> t -> bool`
`val suffix : t -> t -> bool`
`val contains : t -> sub:t -> bool`
`val unsafe_sub : t -> int -> int -> t`
`val sub : t -> int -> int -> t option`
`val of_int : int -> t`
`val to_int : t -> int option`
`val is_int : t -> bool`
`val is_nat : t -> bool`
`val to_nat : t -> int option`