All Packages
-
Package Summary Package Description io.github.contractautomata.catlib.automaton The automaton package contains the class implementing an automaton.
EachAutomaton
has a set of transitions, a set of states, an initial state and a set of final states.
To be composable, an Automaton implements the interfaceRanked
.io.github.contractautomata.catlib.automaton.label The label package groups classes related to labels of automata.
Label
is the super class having a content that is a tuple of a generic type.io.github.contractautomata.catlib.automaton.label.action The action package groups the classes implementing actions of labels.
Action
is the super class from which the other actions are inheriting.
In Contract Automata, an action can be either anOfferAction
, aRequestAction
or anIdleAction
(i.e., nil action).
Actions are matchable and a request action matches an offer action (and vice-versa) if both have the same label.
Actions can have anAddress
, in this case implementing the interfaceAddressedAction
.io.github.contractautomata.catlib.automaton.state The state package groups the classes implementing states of automata.
AbstractState
is the (abstract) super class, where a state can be initial or final and has a label.
ABasicState
implements anAbstractState
of a single participant, it has rank 1 and the label of the
state cannot have further inner components.
AState
implements anAbstractState
with a rank: it is a list of basic states.
Class diagram of this package:
io.github.contractautomata.catlib.automaton.transition The transition package groups the transitions of an automaton.
Transition
is the super class, it has a source and target states and a label.
ModalTransition
extendsTransition
to include modalities.
Modalities of Contract Automata are permicodeed and necessary.
A necessary transition has a label that must be match in a composition whilst a permicodeed transition can be withdrawn.
Necessary transitions can be further distinguished between urgent and lazy, where urgent is the classic
notion of uncontrollability, whereas lazy is a novel notion introduced in contract automata.
Lazy transitions can be either controllable or uncontrollable, according to a given predicate evaluated
on the whole automaton to which this transition belongs to.
Class diagram of this package:
io.github.contractautomata.catlib.converters The converters package contains the classes for I/O operations (import/export).io.github.contractautomata.catlib.family The family package groups together the functionalities that extend
contract automata to product lines.
Featured Modal Contract Automata (FMCA) is the name of this extension.io.github.contractautomata.catlib.family.converters The family.converters package groups the I/O operations of import/export
of a product line.io.github.contractautomata.catlib.operations This package groups the various operations that can be performed on automata.io.github.contractautomata.catlib.operations.interfaces This package groups auxiliary interfaces not primitively available in the JDK.
Class diagram of this package:
io.github.contractautomata.catlib.requirements This package groups the invariant requirements that can be enforced in a contract automaton.