vocabulary WaiterTips;

/*

* Value Types
*/

AUDValue is written as Money; MealId is written as Auto Counter; WaiterNr is written as Signed Integer(32);

/*

* Entity Types
*/

Amount is identified by AUDValue where

Amount has one AUDValue,
AUDValue is of at most one Amount;

Meal is identified by its Id;

Waiter is identified by its Nr;

WaiterTip is where

Waiter for serving Meal reported a tip of one Amount;

Service is where

Waiter served Meal;

Service earned a tip of at most one Amount;

/*

* Constraints:
*/

Service (in which Waiter served Meal) earned a tip of Amount

if and only if
Waiter for serving Meal reported a tip of Amount;