// game instance example GameInstance = Ident FileName language for defining object properties: per field if List: length: NumberConstraint(Integer) randomly choose length element: List(ElementConstraint) (randonly choose element satisfying ElementConstraint) if abstract: (randomly choose alternative) if concrete: one choice only if Integer: NumberConstraint(Integer) if Float: NumberConstraint(Float) if Ident: regexp if String: regexp NumberConstraint(T) : Single(T) | Range(T) | Enumeration(T) | Ref. Single(T) = T. Range = "range" T T. Enumeration(T) = "enum" List(T). Ref = QualIdent. QualIdent = Ident List(DField). DField = "." Field. ElementConstraint : Distinct | In | Subset. In = "in" Ref. Subset = "subset" Ref. Distinct = "distinct". apply to CSP: predicate: List(Integer) CSP: List(Variable) List(Constraint). Constraint = Weight Integer List(Variable). property: rn in predicate.rns property: vars subset start.cs refer to earlier fields in predicate or current cd.