2

本で次の定義を見ました。

pred show(b: Book){
  some b.addr
}

どこ

abstract sig Name, Addr {}
sig Book { addr: Name lone -> lone Addr }

Alloyアナライザーで遊んだ後、これは

pred show(){
  some b:Book | some b.addr
}

Book を引数として指定し、量指定子を使用する 2 番目のアプローチを使用しないことの利点は何ですか?

4

1 に答える 1

1

述語に引数を使用するか使用しないかは「アプローチ」ではなく、セマンティクスが異なります。述語に含めるsome bと、それ以外では使用できませんall b...

例えば:

sig Addr {}

sig Book {
    addr: Addr
}

pred show {
    some b:Book | some b.addr
}

pred show'[b:Book] {
    some b.addr
}

check { show }

// These are not possible without an argument to show'
check { all b:Book | show'[b] }
check { some b:Book | show'[b] }
check { no b:Book | show'[b] }
于 2012-11-16T17:02:40.083 に答える