(***********************************************************************)
(*                                                                     *)
(*                             Heptagon                                *)
(*                                                                     *)
(* Gwenael Delaval, LIG/INRIA, UJF                                     *)
(* Leonard Gerard, Parkas, ENS                                         *)
(* Adrien Guatto, Parkas, ENS                                          *)
(* Cedric Pasteur, Parkas, ENS                                         *)
(* Marc Pouzet, Parkas, ENS                                            *)
(*                                                                     *)
(* Copyright 2012 ENS, INRIA, UJF                                      *)
(*                                                                     *)
(* This file is part of the Heptagon compiler.                         *)
(*                                                                     *)
(* Heptagon is free software: you can redistribute it and/or modify it *)
(* under the terms of the GNU General Public License as published by   *)
(* the Free Software Foundation, either version 3 of the License, or   *)
(* (at your option) any later version.                                 *)
(*                                                                     *)
(* Heptagon is distributed in the hope that it will be useful,         *)
(* but WITHOUT ANY WARRANTY; without even the implied warranty of      *)
(* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the       *)
(* GNU General Public License for more details.                        *)
(*                                                                     *)
(* You should have received a copy of the GNU General Public License   *)
(* along with Heptagon.  If not, see <http://www.gnu.org/licenses/>    *)
(*                                                                     *)
(***********************************************************************)

(* The core module *)
(* To compile : heptc -nopervasives pervasives.epi *)
type bool = true | false
type int
type float
type real = float
type string
external val fun (&)(bool;bool) returns (bool)
external val fun ( * )(int;int) returns (int)
external val fun ( *. )(float;float) returns (float)
external val fun (%)(int;int) returns (int)
external val fun (+)(int;int) returns (int)
external val fun (+.)(float;float) returns (float)
external val fun (-)(int;int) returns (int)
external val fun (-.)(float;float) returns (float)
external val fun (/)(int;int) returns (int)
external val fun (/.)(float;float) returns (float)
external val fun ( = )(int;int) returns (bool)
external val fun ( <= )(int;int) returns (bool)
external val fun ( <=. )(float;float) returns (bool)
external val fun ( < )(int;int) returns (bool)
external val fun ( <. )(float;float) returns (bool)
external val fun ( >= )(int;int) returns (bool)
external val fun ( >=. )(float;float) returns (bool)
external val fun ( > )(int;int) returns (bool)
external val fun ( >. )(float;float) returns (bool)
external val fun (not)(bool) returns (bool)
external val fun (or)(bool;bool) returns (bool)
external val fun (xor)(bool;bool) returns (bool)
external val fun (~-)(int) returns (int)
external val fun (~~)(int) returns (int)
external val fun (>>>)(int;int) returns (int)
external val fun (<<<)(int;int) returns (int)
external val fun (&&&)(int;int) returns (int)
external val fun (|||)(int;int) returns (int)
external val fun (~-.)(float) returns (float)
external val fun do_stuff(int) returns (int)
external val fun between(int;int) returns (int)
external val fun (=>)(bool;bool) returns (bool)

external val fun exit(bool) returns ()
external val fun assert(bool) returns ()
