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 }