# operators or functions (will be distinguished later)
# comma-separated name list : semicolon-separated type list for the parameters -> return type . # no semantic yet  
FUNCTION toto : Boolean;Boolean -> Boolean .
#----------- I/O -----------
FUNCTION display : String -> Void .
FUNCTION write : String -> Void .
FUNCTION writeln : String -> Void .
FUNCTION readBoolean : Void -> Boolean .
FUNCTION readString : Void -> String .
FUNCTION readInt : Void -> Integer .
FUNCTION readChar : Void -> Char .
#----------- Basic cast -----------
FUNCTION asString : String -> String .
FUNCTION asString : Boolean -> String .
FUNCTION asString : Integer -> String .
FUNCTION asString : Char -> String .
FUNCTION asString : setOf LIKE -> String .
#----------- setOf -----------
FUNCTION union : setOf LIKE; setOf LIKE ->setOf LIKE .
FUNCTION count : setOf LIKE;LIKE ->Integer .
FUNCTION excludes : setOf LIKE;LIKE ->Boolean .
FUNCTION excludesAll : setOf LIKE;setOf LIKE ->Boolean .
FUNCTION excluding :  setOf LIKE;LIKE -> setOf LIKE .
FUNCTION add :  setOf LIKE;LIKE -> setOf LIKE .
FUNCTION includes  : setOf LIKE;LIKE ->Boolean .
FUNCTION includesAll  : setOf LIKE;setOf LIKE ->Boolean .
FUNCTION including :  setOf LIKE;LIKE -> setOf LIKE .
FUNCTION intersection : setOf LIKE;setOf LIKE ->setOf LIKE .
FUNCTION isEmpty : setOf LIKE ->Boolean .
FUNCTION notEmpty :  setOf LIKE ->Boolean .
FUNCTION size : setOf LIKE ->Integer .
FUNCTION singleton :  LIKE -> setOf LIKE .
FUNCTION KWin : LIKE; setOf LIKE -> Boolean .
FUNCTION notIn :  setOf LIKE ; LIKE -> Boolean .
#Additional set operations
FUNCTION oneOf : setOf LIKE -> LIKE .
#pick an element
FUNCTION differ  : setOf LIKE ; setOf LIKE ->setOf LIKE .
#set difference
#FUNCTION asArray : setOf LIKE -> array[1..??] of LIKE .
#set HOF
FUNCTION setIterate : setOf LIKE; LIKE; ANYTYPE; Void -> Void .
FUNCTION setFindElem : setOf LIKE; LIKE; Boolean -> LIKE .
FUNCTION setSelectElem : setOf LIKE; LIKE; Boolean -> setOf LIKE .
FUNCTION setExistElem : setOf LIKE; LIKE; Boolean -> Boolean .
FUNCTION setForAllElem : setOf LIKE; LIKE; Boolean -> Boolean .
#----------- array -----------
#FUNCTION initArray : array[1..??] of LIKE ; LIKE -> array[1..??] of LIKE .
#possible only in the grammar
#----------- iterator -----------
#iterator
#possible only in the grammar
#----------- Messages -----------
#stand message primitive
FUNCTION msg : ANYTYPE -> Void .
#----------- others -----------
#TODO
FUNCTION old:  LIKE -> LIKE .

