%	declare.s
%
%	Purpose:	declarations
%	Copyright:      R.A. van Engelen, Leiden University, 1997

%	External predicates of module decl.pl:

retrieve(_G2509, _G2510) is intrinsic(module = declare, result = {3}).
store(_G2509, _G2510) is intrinsic(module = declare, result = nil).
topsort(_G2509) is intrinsic(module = declare, result = {2}).
expand(_G2509, _G2510, _G2511) is intrinsic(module = declare, result = {4}).
expand(_G2509, _G2510) is external(module = declare, result = nil).
unexpand(_G2509) is external(module = declare, result = nil).
convert(_G2509, _G2510) is intrinsic(module = declare, result = {3}).
dice(_G2509) is intrinsic(module = dice, result = [{2}, {3}]).
domains_and_ranges(_G2509) is intrinsic(module = declare, result = {2}).
domains(_G2509) is intrinsic(module = declare, result = {2}).
domain_loops(_G2509) is intrinsic(module = declare, result = {2}).
get_declaration(_G2509) is intrinsic(module = declare, result = {2}).

no_trans isa switch.
no_const isa switch.

save(_G2509, _G2510) is intrinsic(module = declare, result = nil).

(subroutine(_G2509, _G2510, _G2511) is
intrinsic(module = declare, result = nil))
.
prefix space is external(module = declare, result = nil). % Syntax: space ListOfCoordinates time Time. % Example: space [x, y, z] time t. infix (::) is external(module = declare, result = nil). % Syntax: Name :: Type(Range) ~ Unit field (Coordinate(Grid), ...) := Value on Domain % Head :: Type(Range) ~ Unit field (Coordinate(Grid), ...) := Body % Example: u :: real(0..n) ~ "m/s" field (x(grid), y(grid)) on i=1..n by j=1..m. infix = is external(module = equation, result = nil). % Syntax: LHS = RHS % Example: [u, v] = grad p.