ALGEBRAIC LAYER

by

Adil KABBAJ

 

 

Algebraic layer provides various classes (types of structures and operations): elementary data types (elementary objects of Java like Integer, Double, String, Boolean and Amine elementary objects like AmineInteger, AmineDouble, etc.) and composed structures (List, Set, Term, Concept, Relation and CG).

Also, Amine structures are generic structures ; they can contain variables. Operations on these structures take into account variables binding (the association between a variable and its value) and binding context (the programming context that determines how variable binding should be interpreted and resolved, i.e. how to get the value of a variable). In Amine, binding context is a "basic concept": variable binding and binding context are explicitly presented and specified in Amine. This decision constitutes a relevant feature and a key step toward more genericity: it is relevant since generic structures (like Amine structures) are essential in any programming environment. Also, binding context in Amine constitutes a key step toward more genericity since BindingContext is defined in Amine as a Java interface, i.e. as a specification or a contract between Amine and any Java class that pretends to implement a binding context. In this way, Amine is not committed to a specific binding context; any Java class that implements BindingContext interface is considered by Amine as a binding context. For instance, the two Amine's programming languages PROLOG+CG and SYNERGY will implement the BindingContext interface. Amine users can define their own programming context that implement BindingContext interface, and so, be able to interpret correctly Amine (generic) structures. An example of this possibility is provided in ContextBinding.

Amine algebraic level also provides a great variety of matching-based Operations, such as match, equality, unification, subsumption, maximalJoin, and generalization. All these operations are defined over all Amine structures.

Note also that Amine is not restricted to its structures only: any Java class that implements AmineObject and Matching interfaces becomes a "full" Amine structure. AmineObject, Matching and other Amine interfaces are interfaces or gates that allow a Java class to enter/become an Amine structure. See structures for more detail on these interfaces. Other possibilities, mentioned below, are provided to enhance the connexion between Amine and Java. In addition to APIs for the creation and manipulation of Amine structures (including CG), Amine platform provides a graphic interface, CGNotations GUI, which is an MDI, multi-lingua and multi-notation (LF, CGIF and Graphic) CG editors and another graphic interface, CGOperations GUI, for the application of CG operations on specific CGs.

Please, consult now the following documents:

Structures

Elementary objects and Collections

Complex Structures: Term, Concept, Relation, and CG

MDI, Multi-lingua and Multi-Notation Editors for CG (GUI)

CG Matching-Based Operations

Tests and Samples

CG Operations GUI