Epsilon Comparison Language

ECL is a hybrid, rule-based language for comparing homogeneous or heterogeneous models. ECL can be used to establish the correspondences on which models can be merged using the merging language of Epsilon, or for transformation testing.


  • Compare homegeneous models
  • Compare heterogeneous models
  • Complete specification of the comparison logic
  • Export comparison results to EML for merging
  • Export comparison results to a custom model/format
  • Declarative rules with imperative bodies
  • Automated rule execution
  • Lazy and greedy rules
  • Multiple rule inheritance
  • Guarded rules
  • 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 9 of the Epsilon book provides a complete reference of the syntax and semantics of ECL.