vocabulary Supervision;

/*

* Value Types
*/

CompanyName is written as String; EmployeeNr is written as Signed Integer(32);

/*

* Entity Types
*/

Company is identified by its Name;

Employee is identified by Company and EmployeeNr where

Employee works for one Company,
Company employs Employee,
Employee has one EmployeeNr,
EmployeeNr is of Employee;

Manager is a kind of Employee; Manager supervises Employee,

Employee reports to at most one Manager;

CEO is a kind of Manager; CEO runs Company,

Company is run by one CEO;

CEO Shareholding is where

CEO holds shares in Company;

/*

* Constraints:
*/

either Employee reports to Manager or Employee is a Manager(2) that is a CEO that runs Company but not both; Employee is a Manager that is a CEO that runs Company

only if Employee works for Company;