

------------------------------------------------------------------------------------------------------------------

-- This Alloy file is generated using Umple from AlloyGenHierarchy.ump

------------------------------------------------------------------------------------------------------------------


-- Defines a signature for class Employee
sig Employee {
  manager : lone Manager
}

-- Defines a signature for class Secretary
sig Secretary extends Employee { }

-- Defines a signature for class Technician
sig Technician extends Employee { }

-- Defines a signature for class Manager
sig Manager extends Employee {
  supervises : set Employee
}


-- Defines constraints on association between Employee and Manager
fact AssociationFact {
  Employee <: manager in (Employee) set -> set (Manager)
}

-- Defines bidirectionality rule between class Manager and class Employee
fact BidirectionalityRule {
  all manager_1 : Manager, employee_1 : Employee |
    manager_1 in manager[employee_1] <=> employee_1 in supervises[manager_1]
}

-- Defines generalization hierarchy rule between class Employee and Manager
fact GenHierarchyFact {
  no manager_1 : Manager |
    manager_1.supervises = manager_1
}
