Imandrax_ocaml_prelude.Prelude_extractedmodule Program_prelude_ : sig ... endtype int = Imandrax_util.Z.tBuiltin 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
val (=) : 'a -> 'a -> boolEquality. Must be applied to non-function types.
val (<>) : 'a -> 'a -> boolconst 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
Result type, representing either a successul result Ok x or an error Error x.
module Ordinal : sig ... endWe need to define ordinals before any recursive function is defined, because ordinals are used for termination proofs.
module Peano_nat : sig ... endmodule Result : sig ... endPipeline 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)
module List : sig ... endInfix alias to List.append
module Int : sig ... endmodule Bool : sig ... endmodule Array : sig ... endmodule Option : sig ... endmodule Real : sig ... endmodule Map : sig ... endmodule Multiset : sig ... endmodule Set : sig ... endmodule String : sig ... endAlias to String.append
module Float : sig ... endmodule LChar : sig ... endStrings purely in Imandra.
module LString : sig ... end