All Downloads are FREE. Search and download functionalities are using the official Maven repository.

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