All Downloads are FREE. Search and download functionalities are using the official Maven repository.

src.overview.html Maven / Gradle / Ivy

Go to download

LaMa4J ("Lattice Manipulation for Java") is a set of Java classes that implement a number of lattices and lattice operations.

The newest version!


  
    LaMa4J
  

  

    

LaMa4J (“Lattice Manipulation for Java”) is a set of Java classes that implement a number of lattices and lattice operations. It is free software distributed under the GNU General Public License.

History and Motivation

MG4J uses minimal-interval semantics to express the semantics of a query. A single-index query is turned into an element of a {@linkplain it.unimi.dsi.lama4j.IntervalAntichains interval-antichain lattice}; the element expresses the regions of the documents that satisfy the query. Queries involving more than one index are turned into elements of a {@linkplain it.unimi.dsi.lama4j.Sum sum} of such lattices.

Manipulating the above lattices is not always trivial, so we decided to write a full Java package that could manipulate easily any kind of lattice. Marco Rosa wrote the first implementation, under Sebastiano Vigna's supervision, as part of his degree thesis.

Roadmap

First of all, have a look at the {@link it.unimi.dsi.lama4j.Lattice} and {@link it.unimi.dsi.lama4j.Element} interfaces to see which operations are supported. The main idea is that by playing with an interactive environment such as the BeanShell you can create lattices, create elements, and use Java variables and syntactic constructs as if you were using an ad hoc computational algebra package. The {@link it.unimi.dsi.lama4j.Lattices} static container provides methods that do nice things such as {@linkplain it.unimi.dsi.lama4j.Lattices#generateDot(Lattice,Map,PrintWriter,boolean) emitting a representation of the covering relation} in the Graphviz language, that can be automatically drawn into a Hasse diagram, as shown on the right for the free lattice on three generators (actually, the {@linkplain it.unimi.dsi.lama4j.Sum sum} of three 3-{@linkplain it.unimi.dsi.lama4j.Chain chains}).

There are two ways you can use LaMa4J: you can enrich the existing set of lattices (see, e.g., {@link it.unimi.dsi.lama4j.Chain}, {@link it.unimi.dsi.lama4j.Parts}, and so on), or you can build new lattices using operators such as {@link it.unimi.dsi.lama4j.Product}, {@link it.unimi.dsi.lama4j.Sum} (just for distributive lattices) and {@linkplain it.unimi.dsi.lama4j.Op dualisation}.





© 2015 - 2024 Weber Informatics LLC | Privacy Policy