Tuesday, September 1, 2015

Clafer, ClaferIG, and ClaferWiki 0.4.1 Released

by Michał Antkiewicz

Clafer compiler, Alloy-based instance generator, and wiki 0.4.1 are released on Hackage (claferclaferIGclaferwiki). The release also includes the Choco3-based instance generator and optimizer 0.4.0, which; however, does not yet support the new features of the language.

Binary builds are available from Clafer Tools - Binary Distributions.

ClaferIDE with this release is available for testing.

Major changes include:
  • Fixed problems with automatic dereferencing, see leftAssocDeref.cfr, navAndDeref.cfr, and navAndDeref.als.reg.
  • Fixed type system problems. 
  • Added Alloy and Choco escapes, see escapes.cfr. Code in Alloy escapes is included at the beginning of the Alloy output, whereas, Choco escapes are included at the end of Choco output. 
  • Changed ref to dref. 
  • Added handling and deprecation warnings for deprecated ref and &; instead dref and ** should be used, see deprecated.cfr
  • Fixed bugs with incorrect addition of .drefs in arithmetic, see arithmetic.cfr
  • Fixed missing links bugs in HTML output. 
  • Added continuous integration with TravisCI.
For details, see Clafer Release 0.4.1 Pull Request.

Previous release Clafer, ClaferIG, ClaferWiki, ChocoSolver, and ClaferChocoIG 0.4.0 Released.

Tuesday, August 25, 2015

Tutorial: Variability Domain Engineering in Three Layers. A Train Station Layout Case Study in Clafer

by Michał Antkiewicz

On Aug 24, 2015, as part of the Domain-Specific Modeling Theory and Practice 2015 Summer School, Andrzej Wąsowski presented a 4-hour hands-on tutorial on Variability Domain Engineering using Clafer.

The tutorial is in the form of the Clafer Wiki Variability Domain Engineering in Three Layers. A Train Station Layout Case Study in Clafer. The tutorial follows the architecture of OMG's Common Variability Language (CVL) standard and it contains five parts:

  • Part 0: Introduction to Domain Engineering
  • Part I: Feature Modeling in Clafer
  • Part II: A DSL for Describing Track Layouts
  • Part III: A Layered Variability Model
  • Part IV: Domain Exploration using Synthesis

Wednesday, July 29, 2015

Clafer, ClaferIG, ClaferWiki, ClaferChocoIG 0.4.0 Released

by Michał Antkiewicz

Clafer compiler, Alloy-based instance generator, and wiki 0.4.0 are released on Hackage (clafer, claferIG, claferwiki). The release also includes the Choco3-based instance generator and optimizer, which; however, does not yet support the new features of the language.

Binary builds are available from Clafer Tools - Binary Distributions.

The Clafer 0.4.0 PowerPoint Slide Show summarizes the improvements included in this release.

Major changes include:
  • Fixed the grammar and extended the type system to properly support super types, primitive value reference types, complex reference types, primitive type reference refinements. See the test case mergeExpAndSetExp.cfr and a subset of the test case supported by Alloy mergeExpAndSetExpAlloy.cfr.
  • Added support for redefinition in Alloy-based IG. See redefinition.cfr test case.
  • Removed Alloy4.1 support. The mode -m=alloy means Alloy4.2 by default.
  • Removed XML mode (-m=xml). The JSON output (-m=json) is more comprehensive and it contains information about quality attributes and objectives.
  • Removed a redundant --noalloyruncommand option.
  • Added primitive type double and implemented primitive type coersions. See primitiveTypesAndCoersions.cfr test case.
  • Updated Clafer Tools for Sublime Text 2/3.
For detailed changes see pull requests: Clafer, ClaferIG, ClaferWiki, chocosolver, ClaferChocoIG.

Previous release Clafer, ClaferIG, ClaferWiki, ChocoSolver, and ClaferChocoIG 0.3.10 Released.

Tuesday, July 28, 2015

Accessing Clafer Models Programmatically

by Michał Antkiewicz, updated for Clafer 0.4.0

Since we ourselves translate Clafer into many output formats and use many different programming languages in the various tools (Haskell, Java, JavaScript, Python), we developed ways of accessing the compiler's intermediate representation (IR), which represents fully-resolved information about Clafer models. This way, the compiler does all the hard work and the downstream tools can access the model conveniently.

Wednesday, June 3, 2015

Inheritance of Group Cardinality

by Michał Antkiewicz

On April 06, 2015, I presented how inheritance of group cardinality was handled before 0.3.9, how it was fixed as of release 0.3.9, and what an alternative solution could be. The slides are available below. If you have a strong opinion about either solution, please drop me a line.

PowerPoint Slide Show
2015.04.06-Antkiewicz-Inheritance-of-group-cardinality.ppsx

Wednesday, May 13, 2015

Clafer, ClaferIG, ClaferWiki, ChocoSolver, and ClaferChocoIG 0.3.10 Released

by Michał Antkiewicz, updated on May 13, 2015

The Clafer compiler, Alloy-based instance generator, and wiki 0.3.10 are released on Hackage (clafer, claferIG, claferwiki). The Choco-based instance generator and multi-objective optimizer 0.3.10.1 is also released. Binary builds are available from Clafer Tools - Binary Distributions.

We also updated Clafer mode for Emacs.

For details of changes see
EDIT (May 1, 2015):
We are planning to release the web tools soon. This will be the first web tools release since 0.3.6.1!

EDIT2 (May 13, 2015):

The binaries now contain a HotFix release 0.3.10.1 of the Choco-based backend.

        Monday, March 30, 2015

        Clafer, ClaferIG, ClaferWiki, ChocoSolver, and ClaferChocoIG 0.3.9 Released

        by Michał Antkiewicz

        The Clafer compiler, Alloy-based instance generator, and wiki 0.3.9 are released on Hackage (clafer, claferIG, claferwiki). The Choco-based instance generator and multi-objective optimizer 0.3.9 is also released. Binary builds are available from Clafer Tools - Binary Distributions.

        We also updated the plugin for Sublime Text 2/3.

        For details of changes see

        UPDATE: On Mar 30, 2015, we have updated the release of the chocosolver and ClaferChocoIG projects and uploaded new binaries. The chocosolver now implements the modulo division (reminder) function. Both now produce output consistent with ClaferIG --useuids --addtypes. The option --prettify is equivalent to having --useuids and not having --addtypes in ClaferIG.

          Saturday, March 7, 2015

          Clafer Tools in Sublime Text 2/3

          by Michał Antkiewicz

          Clafer Tools get new and improved integration with Sublime Text 2/3 (release 0.3.9), providing the following features:
          • Syntax highlighting of keywords, operators, comments, and integer and string literals
            • including the behavioral Clafer extension
          • Compilation <CTRL>+b
          • Instance generation (with simple scope inference) using
            • Alloy-based instance generator <CTRL>+i, g, a
            • Choco-based instance generator <CTRL>+i, g, c
            • Z3 SMT-based instance generator <CTRL>+i, g, s
          • Clafer binaries are now in a separate folder Packages/Clafer-Bin, so that they are not removed with every update of the Clafer Tools Sublime package.
          The package Clafer Tools 0.3.9 is now an official Sublime Text package available from the central package repository.  To install, follow the instructions in the README.

          Tuesday, January 27, 2015

          Clafer, ClaferIG, ClaferWiki, ChocoSolver, and ClaferChocoIG 0.3.8 Released

          by Michał Antkiewicz

          The Clafer compiler, Alloy-based instance generator, and wiki 0.3.8 are released on Hackage (clafer, claferIG, claferwiki). The Choco-based instance generator and multi-objective optimizer 0.3.8 is also released. Binary builds are available from Clafer Tools - Binary Distributions.

          Major changes include:
          • Allowed having both super and reference parts of a clafer declaration. See pull request.
          • Changed the intersection operator from & to ** to be consistent with ++ and --.
          • Prepared for module system and behavioral Clafer extension.
          • Fixed bugs in HTML and Graph generators.
          • Replaced soft constraint (...) with assertion assert [...]. Soft constraints were never supported in any backend.
          • Phased out Alloy4.1. Alloy 4.2 is now used by default as a compiler mode, for output validation, and instance generation in ClaferIG.
          • The claferwiki.sh script can now run the wiki from sandbox when given the parameter --sandbox.
          For detailed changes see pull requests: Clafer, ClaferIG, ClaferWiki

          Tuesday, January 20, 2015

          Explaining Clafer Semantics by Example

          by Michał Antkiewicz

          Learning a new language from abstract formal descriptions is hard when lacking strong mathematical background. In the attached presentation, I explain the semantics of Clafer in a simple and intuitive, and yet precise way. I focus on individual language constructs, show small model snippets, and explicitly write down instances of these models as sets and relations. I also explicitly evaluate expressions to show the mechanics of the language. The main goal is to illustrate the application of the abstract semantic rules to concrete cases. This way of presenting the semantics of a modeling language is complementary to the formal presentations.

          PowerPoint Slide Show
          2015.01.19-Antkiewicz-Clafer-Semantics-By-Example.ppsx