7. N. Shimizu (chikoski@gmail.com / @chikoski) 2011/09/09
sig Tea {}#
sig IndiaTea, ChinaTea extends Tea{}#
sig Assam, Darjeeling extends IndiaTea{}#
sig Keemun, Lapsang extends ChinaTea{}
20. N. Shimizu (chikoski@gmail.com / @chikoski) 2011/09/09
sig Tea { origin: Country }#
sig Country {}#
#
• origin + Country #
origin 2#
Country 1#
21. N. Shimizu (chikoski@gmail.com / @chikoski) 2011/09/09
sig Object {}#
sig Directory extends Object {contents: set Object }#
sig File extends Object {}#
sig Alias extends File { to: Object}#
#
• Directory & Alias#
Directory Alias #
Directory & Alias #
22. N. Shimizu (chikoski@gmail.com / @chikoski) 2011/09/09
2
sig Object {}#
sig Directory extends Object {contents: set Object }#
sig File extends Object {}#
sig Alias extends File { to: Object}#
#
• Alias.contents#
Alias #
contents Directory -> Object Alias Directory #
24. N. Shimizu (chikoski@gmail.com / @chikoski) 2011/09/09
sig Object {}#
sig Directory extends Object{contents : set
File + Directory}#
sig File extends Object{}#
sig Alias { to :File + Directory }
25. N. Shimizu (chikoski@gmail.com / @chikoski) 2011/09/09
• (Directory + Alias).contents#
Alias contents #
Alias #
• Directory – Alias#
Alias Directory #
Alias #
31. N. Shimizu (chikoski@gmail.com / @chikoski) 2011/09/09
sig Object, Block {}#
sig Directory extends Object {#
contents: set Object}#
sig File extends Object { contends: set Block}#
#
all f: File | some f.contents#
• contents Directory f.contents
#
• contents File
32. N. Shimizu (chikoski@gmail.com / @chikoski) 2011/09/09
sig Object, Block {}#
sig Directory extends Object {#
contents: set Object}#
sig File extends Object { contends: set Block}#
#
all o Object | some o.contents#
• contents Directory File
#
• #
33. N. Shimizu (chikoski@gmail.com / @chikoski) 2011/09/09
sig Singer { band: Band}#
sig RadioStation { band: Freq}#
sig Band, Freq {}#
no disj s, s’ : RadioStation | some s.band &
s’.band#
• band RadioStation band#
• #
34. N. Shimizu (chikoski@gmail.com / @chikoski) 2011/09/09
sig Singer { band: Band}#
sig RadioStation { band: Freq}#
sig Band, Freq {}#
all b: Band | some b.~band#
• band Singer band#
• #
35. N. Shimizu (chikoski@gmail.com / @chikoski) 2011/09/09
band
• all b: Band | some b.~band#
• all b: Band | some band.b#
• all b: Band | some s: Singer | s -> b in band
36. N. Shimizu (chikoski@gmail.com / @chikoski) 2011/09/09
sig Object, Block {}#
sig Directory extends Object { #
contents: set Object}#
sig File extends Objecct {#
contents : set Block}#
no o: Object | o in o.contents#
• contents Directory #
• File o.contents Block
Block Object
o in o.contents
37. N. Shimizu (chikoski@gmail.com / @chikoski) 2011/09/09
sig Node { next: Node, value: Value one ->
Time}#
sig Time { next: Time}#
sig Value {}#
fact { all n: Node | Node in n.^next}#
• next Node #
• n #
38. N. Shimizu (chikoski@gmail.com / @chikoski) 2011/09/09
sig Node { next: Node, value: Value one ->
Time}#
sig Time { next: Time}#
sig Value {}#
fact { no ^next | iden}#
• #
• Time Node
#
39. N. Shimizu (chikoski@gmail.com / @chikoski) 2011/09/09
sig Node { next: Node, value: Value one ->
Time}#
sig Time { next: Time}#
sig Value {}#
fact { no ^(Time <: next) | iden}#
• <: next Time #
• next Time #
42. N. Shimizu (chikoski@gmail.com / @chikoski) 2011/09/09
sig Object {}#
sig Directory in Object {#
#contains: some Object#
}
43. N. Shimizu (chikoski@gmail.com / @chikoski) 2011/09/09
sig Object, Block {}#
sig Directory in Object {#
#contains: some Object#
}#
sig File extends Object{#
#contains: some Block#
}#