001 /*
002 * $Id: RegularRingElem.java 1708 2008-02-24 17:28:36Z kredel $
003 */
004
005 package edu.jas.structure;
006
007
008 /**
009 * Regular ring element interface.
010 * Defines idempotent operations and idempotent tests.
011 * @param <C> regular ring element type
012 * @author Heinz Kredel
013 */
014
015 public interface RegularRingElem<C extends RegularRingElem<C>>
016 extends GcdRingElem<C> {
017
018
019 /* Get component.
020 * Not possible to define in interface.
021 * @param i index of component.
022 * @return val(i).
023 public C get(int i);
024 */
025
026
027 /** Is regular ring element full.
028 * @return If every component is non zero,
029 * then true is returned, else false.
030 */
031 public boolean isFull();
032
033
034 /** Is idempotent.
035 * @return If this is a idempotent element then true is returned, else false.
036 */
037 public boolean isIdempotent();
038
039
040 /** Idempotent.
041 * @return S with this*S = this.
042 */
043 public C idempotent();
044
045
046 /** Regular ring element idempotent complement.
047 * @return 1-this.idempotent().
048 */
049 public C idemComplement();
050
051
052 /** Regular ring element idempotent and.
053 * @param S Product.
054 * @return this.idempotent() and S.idempotent().
055 */
056 public C idempotentAnd(C S);
057
058
059 /** Regular ring element idempotent or.
060 * @param S Product.
061 * @return this.idempotent() or S.idempotent().
062 */
063 public C idempotentOr(C S);
064
065
066 /** Regular ring element fill with idempotent.
067 * @param S Product.
068 * @return fill this with S.idempotent().
069 */
070 public C fillIdempotent(C S);
071
072
073 /** Regular ring element fill with one.
074 * @return fill this with one.
075 */
076 public C fillOne();
077
078 }