package aalg.algebra;

/**
 * Group is monoid with all elements invertible.
 * @author Ing. Petr Ležák
 *
 * @param <T> type of elements
 */
public interface IGroup<T extends IElement> extends IMonoid<T> {
	/**
	 * Returns inverse element. Contract of this method is stronger
	 * than monoids one: method returns non-null inverse element for each element
	 * of group. 
	 * @param x operand
	 * @return y; x * y = e
	 */
	public T getInverse (final T x);
}
