Epsilon Validation Language

EVL is a validation language built on top of EOL. In their simplest form, EVL constraints are quite similar to OCL constraints. However, EVL also supports dependencies between constraints (e.g. if constraint A fails, don't evaluate constraint B), customizable error messages to be displayed to the user and specification of fixes (in EOL) which users can invoke to repair inconsistencies. Also, as EVL builds on EOL, it can evaluate inter-model constraints (unlike OCL).


  • Distinguish between errors and warnings during validation (constraints and critiques)
  • Specify quick fixes for failed constraints
  • Guarded constraints
  • Specify constraint dependencies
  • Break down complex constraints to sequences of simpler statements
  • Automated constraint evaluation
  • Out-of-the-box integration with the EMF validation framework and GMF
  • Support for parallel execution
  • Support for simultaneously accessing/modifying many models of (potentially) different metamodels
  • All the usual programming constructs (while and for loops, statement sequencing, variables etc.)
  • Support for those convenient first-order logic OCL operations (select, reject, collect etc.)
  • Ability to create and call methods of Java objects
  • Support for dynamically attaching operations to existing meta-classes and types at runtime
  • Support for cached operations
  • Support for extended properties
  • Support for user interaction
  • Ability to create reusable libraries of operations and import them from different Epsilon (not only EOL) modules

Examples and Screencasts


Chapter 5 of the Epsilon book provides a complete reference of the syntax and semantics of EVL.