models.book.appendixA.addressBook2.als Maven / Gradle / Ivy
module appendixA/addressBook2
sig Addr, Name { }
sig Book {
addr: Name -> (Name + Addr)
}
pred inv [b: Book] {
let addr = b.addr |
all n: Name {
n not in n.^addr
some addr.n => some n.^addr & Addr
}
}
pred add [b, b': Book, n: Name, t: Name+Addr] {
b'.addr = b.addr + n->t
}
pred del [b, b': Book, n: Name, t: Name+Addr] {
b'.addr = b.addr - n->t
}
fun lookup [b: Book, n: Name] : set Addr {
n.^(b.addr) & Addr
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy