Skip to content

rosento/Hets

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Extending Hets with support for UML State Machines and Composite Structures

This is a fork of the Heterogeneous Toolset (Hets), extending it with support for simple UML State Machines and Composite Structures. The implementation forms part of my PhD thesis project. We intend to integrate it into upstream Hets, but this version is meant to reflect the software as it was used in the thesis.

For more information on upstream Hets, please consult the project home page or the github project.

The main work done on Hets in this thesis is contained in the following files:

.
├── UMLState
│   └── Logic_UMLState.hs   UMLState:  a language for State Machines without output events
├── UMLStateO
│   └── Logic_UMLStateO.hs  UMLStateO: a language for State Machines without output events
├── UMLComp
│   └── Logic_UMLComp.hs    UMLComp:   a language for Composite Structures
│                           and translation to CASL (works with UMLStateO)
├── Comorphisms
│   ├── UMLState2CASL.hs    translation from UMLState  to CASL   
│   └── UMLStateO2CASL.hs   translation from UMLStateO to CASL
├── build.sh                support for building with the same dependency versions I use
├── nix                     support for building with the same dependency versions I use
│   └── ...
└── test                    support for building with the same dependency versions I use
    └── UMLTests 
        └── atmmod.het      an example input file for UMLState and UMLComp

UMLState is included because it has been used for a verification example in the thesis. It is the direct predecessor, both in terms of theory and code, of UMLStateO. We would probably only merge UMLStateO into upstream and consider it to supersede UMLState -- however, this will be decided in discussion with the Hets team.

Building

I had to use some specific, older versions of dependencies to get this to build.

It is possible to build with the same dependency versions I used through the Nix package manager. For this to work, it is necessary to first install Nix. Then, build.sh can be used as a wrapper around the Makefile.

This has been tested on the platforms x86_64-darwin (MacOS) and x86_64-linux (specifically: NixOS). Linux distributions other than Linux should work as well. For other systems, or other CPU architectures, it would at least be necessary to add a download of the uDrawGraph dependency in ./nix/uDrawGraph.nix.

A caveat on reproducibility: The downloads of the Hets-lib sources report conflicting hashes for nominally identical versions. Therefore, the hash checks for Hets-lib have been deactivated. Hets itself should build even without Hets-lib.

./build.sh stack

will download both Haskell and system dependencies.

After running this once, as long as dependencies don't change, Hets can always be built and rebuilt using:

./build.sh

A shell with the dependencies available can be started using:

nix-shell nix/hets.nix

An interactive Haskell session configured for the Hets project is available through:

./build.sh ghci

About

The Heterogeneous Tool Set

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Haskell 77.1%
  • TeX 16.6%
  • HTML 1.2%
  • Standard ML 1.2%
  • Shell 1.1%
  • Emacs Lisp 0.8%
  • Other 2.0%