

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

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

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


-- Defines a signature for class Academic
sig Academic {
  students : some Graduate
}

-- Defines a signature for class Graduate
sig Graduate {
  advisor : one Academic
}


-- Defines constraints on association between Graduate and Academic
fact AssociationFact {
  Graduate <: advisor in (Graduate) some -> some (Academic)
}

-- Defines bidirectionality rule between class Academic and class Graduate
fact BidirectionalityRule {
  all academic_1 : Academic, graduate_1 : Graduate |
    academic_1 in advisor[graduate_1] <=> graduate_1 in students[academic_1]
}

-- Defines numeric bound rule for class Academic
fact NumericBoundFact {
  no academic_1 : Academic |
    #academic_1.students != 2
}
