Imandra_prelude
module Caml : sig ... end
module Imandra_caml = Caml
module Unix : sig ... end
module Sys : sig ... end
Builtin integer type, using arbitrary precision integers.
This type is an alias to Z
.t (using Zarith).
NOTE: here Imandra diverges from normal OCaml, where integers width is bounded by native machine integers. "Normal" OCaml integers have type Caml.Int.t
and can be entered using the 'i' suffix: 0i
const x y
returns x
. In other words, const x
is the constant function that always returns x
.
Euclidian division on integers, see http://smtlib.cs.uiowa.edu/theories-Ints.shtml
module Ordinal : sig ... end
We need to define ordinals before any recursive function is defined, because ordinals are used for termination proofs.
module Peano_nat : sig ... end
Result type, representing either a successul result Ok x
or an error Error x
.
module Result : sig ... end
Pipeline operator.
x |> f
is the same as f x
, but it composes nicely: x |> f |> g |> h
can be more readable than h(g(f x))
.
Right-associative application operator.
f @@ x
is the same as f x
, but it binds to the right: f @@ g @@ h @@ x
is the same as f (g (h x))
but with fewer parentheses.
Mathematical composition operator.
f %> g
is fun x -> g (f x)
val (==) : 'a -> 'b -> Caml.use_normal_equality
val (!=) : 'a -> 'b -> Caml.use_normal_equality
module List : sig ... end
Infix alias to List.append
module Int : sig ... end
module Bool : sig ... end
module Array : sig ... end
module Option : sig ... end
module Real : sig ... end
module Map : sig ... end
module Multiset : sig ... end
module Set : sig ... end
module String : sig ... end
Alias to String.append
module Float : sig ... end
module LChar : sig ... end
Strings purely in Imandra.
module LString : sig ... end
module Pervasives : sig ... end
module Stdlib : sig ... end