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

models.book.chapter5.addressBook.als Maven / Gradle / Ivy

module chapter5/addressBook --- the model in fig 5.1

abstract sig Target {}

sig Addr extends Target {}
sig Name extends Target {}
sig Book {addr: Name -> Target}

fact Acyclic {all b: Book | no n: Name | n in n.^(b.addr)}

pred add [b, b': Book, n: Name, t: Target] {
	b'.addr = b.addr + n -> t
	}

// This command should produce an instance similar to Fig 5.2
run add for 3 but 2 Book

fun lookup [b: Book, n: Name]: set Addr {n.^(b.addr) & Addr}

assert addLocal {
	all b,b': Book, n,n': Name, t: Target |
		add [b,b',n,t] and n != n' => lookup [b,n'] = lookup [b',n']
	}

// This command should produce a counterexample similar to Fig 5.3
check addLocal for 3 but 2 Book




© 2015 - 2025 Weber Informatics LLC | Privacy Policy