The CTC is the language-independent Core of a system for analysing, composing and executing Conditional Transformations.
Conditional Transformations (CTs) are a logic-based language and formalism for expressing arbitrary software transformations guarded
by arbitrarily complex prior analyses.
CTs provide a theoretical and practical basis for model transformations and model driven engineering. Compared to other model transformation approaches CTs provide a unique combination of features. CTs are:
purely declarative: Unlike logic programs that manipulate their own database, CTs have a well-defined, model-theoretic semantics. When working with CTs, deduction (analysis) and model update do not interfere. Hence CTs are easy to compose, analyse and optimize automatically.
multi-directional: A CT with N arguments is like 2^N functions, since each argument can be used as input or output, without having to rewrite the CT definition.
composable: Different composition operators, of which some are unique to CTs, allow creation of complex programs from simple, reusable units.
reusable: Composition is possible even if not anticipated by the designers of the CTs used as input. No hooks need to be built into CTs to enable their reuse in unanticipated contexts.
This unique feature set offers programmers some added benefits in terms of productivity:
efficiency: Due to their declarative nature, CTs are amenable to automated optimizations that let the CTC ensure efficient execution while letting programers focus on expressing their intentions instead of wasting time and obfuscating the program with manual optimizations.
fast turn-around: CTs give you a quick start in model transformation. Instead of learning complex imperative APIs
you can be productive as soon as you know the abstract structure (abstract syntax tree) of the language that you want to transform.