Is there a difference between an assertion and an unparameterized predicate in Alloy? You can use the "check" command on both unparameterized predicates and assertions to find a counterexample to a given constraint. Are these two constructs essentially the same? If so, why does the language have two constructs that serve the same purpose?