An appended fact is written by placing constraints in curly braces immediately after a sig statement. They can make a model clearer by logically grouping related constraints together.
sig name { // fields of the signature }{ // appended fact constraints }
Any field mentioned in the appended fact has an implied "all this:name |" at its beginning, and an implied "this." in front of it. Thus:
sig Person { closeFriends: set Person, friends: set Person } { closeFriends in friends }
is really saying
sig Person { closeFriends: set Person, friends: set Person } fact { all x:Person | x.closeFriends in x.friends }
Consequently, appended fact can be more concise (and thus clearer) than the equivalent non-appended fact. However, there is also a danger in forgetting that every field mentioned in an appended fact is prepended with "this.".