%%% BACK Macros
%%%   Macros may be used to make your definition file more
%%%   readable. They are defined as you expect. 
%%%   This file provides the macros mentioned in the syntax of BACK V as of
%%%   June '92.

backmacro(exactly(N,R) *=
		atleast(N,R) and atmost(N,R)).

backmacro(some(Role, ValueRestriction) *=
		atleast(1, Role and range(ValueRestriction))).

backmacro(some(Role) *=
		atleast(1, Role)).

backmacro(the(Role, ValueRestriction) *=
		all(Role, ValueRestriction) 
		and atleast(1, Role)
		and atmost(1, Role)).

backmacro(no(Role, ValueRestriction) *=
		atmost(0, Role and range(ValueRestriction))).

backmacro(no(Role) *=
		atmost(0, Role)).

backmacro(atleast(N, Role, ValueRestriction) *=
		atleast(N, Role and range(ValueRestriction))).

backmacro(atmost(N, Role, ValueRestriction) *=
		atmost(N, Role and range(ValueRestriction))).

backmacro(exactly(N,R,C) *=
		atleast(N,R and range(C))
		and atmost(N,R and range(C))).

backmacro(rvm_some(Role1,Role2) *=
		atleast(1,Role1 and Role2)).

backmacro(rvm_no(Role1,Role2) *=
		atmost(0,Role1 and Role2)).



