Subversion

AlloyUML

?curdirlinks? - Rev 52

?prevdifflink? - Blame


module address

sig Time {}

abstract sig Target{}
sig Addr extends Target {}
abstract sig Name extends Target {}
sig  Alias  extends Name {}
sig Group extends Name {}

sig Book {
        names: Name set -> Time,
        addr: Name -> some Target -> Time }

fact { all t:Time | all b:Book | b.addr.t.Target in b.names.t }

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

fact { all t:Time | all b:Book | all a: Alias | #(a.(b.addr.t))=<1  }

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

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

-- run {}


Theme by Vikram Singh | Powered by WebSVN v2.3.3