Skip to content

Instantly share code, notes, and snippets.

@DDuarte
Created October 23, 2014 15:12
Show Gist options
  • Save DDuarte/26172ddb5faca29e1fde to your computer and use it in GitHub Desktop.
Save DDuarte/26172ddb5faca29e1fde to your computer and use it in GitHub Desktop.
enum ParkingCardType { VIPCard, NormalCard }
sig ParkingCard {
type: one ParkingCardType
}
sig ManagementSystem {
Park: set ParkingCard,
} {
#VIPPark <= 2
#NormalPark <= 5
}
fun VIPPark[m: ManagementSystem]: set ParkingCard { (m.Park <: type :> VIPCard) . ParkingCardType }
fun NormalPark[m: ManagementSystem]: set ParkingCard { (m.Park <: type :> NormalCard) . ParkingCardType }
run {} for 7 Int, exactly 1 ManagementSystem, exactly 3 ParkingCard
pred enter[c: ParkingCard, s, s': ManagementSystem] {
no s.Park & c
s'.Park = s.Park + c
}
pred leave[c: ParkingCard, s, s': ManagementSystem] {
one s.Park & c
s'.Park = s.Park- c
}
run leave for 7 Int, exactly 2 ManagementSystem, exactly 3 ParkingCard
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment