[BACK]Return to bracket_monomials.ads CVS log [TXT][DIR] Up to [local] / OpenXM_contrib / PHC / Ada / Schubert

Annotation of OpenXM_contrib/PHC/Ada/Schubert/bracket_monomials.ads, Revision 1.1.1.1

1.1       maekawa     1: with Brackets,Generic_Lists;             use Brackets;
                      2:
                      3: package Bracket_Monomials is
                      4:
                      5: -- DESCRIPTION :
                      6: --   This package provides a data abstraction to deal with
                      7: --   bracket monomials as well as operations to manipulate them.
                      8:
                      9:   type Bracket_Monomial is private;
                     10:
                     11: -- CONSTRUCTORS : a bracket monomial is the product of brackets.
                     12:
                     13:   function Create ( b : Bracket ) return Bracket_Monomial;
                     14:
                     15:   -- DESCRIPTION :
                     16:   --   Creates a bracket monomial, consisting out of one single bracket.
                     17:
                     18:   procedure Multiply ( bm : in out Bracket_Monomial; b : in Bracket );
                     19:
                     20:   -- DESCRIPTION :
                     21:   --   The bracket monomial is extended with another bracket.
                     22:
                     23:   procedure Copy ( bm1 : in Bracket_Monomial; bm2 : in out Bracket_Monomial );
                     24:
                     25:   -- DESCRIPTION :
                     26:   --   Copies the first bracket monomial to the second one.
                     27:   --   Note that bm2 := bm1 leads to sharing data and side effects.
                     28:
                     29: -- OPERATIONS :
                     30:
                     31:   function "*" ( b1,b2 : Bracket ) return Bracket_Monomial;
                     32:
                     33:   -- DESCRIPTION :
                     34:   --   The resulting bracket monomial is the product of b1 and b2.
                     35:
                     36:   function "*" ( bm : Bracket_Monomial; b : Bracket ) return Bracket_Monomial;
                     37:   function "*" ( b : Bracket; bm : Bracket_Monomial ) return Bracket_Monomial;
                     38:
                     39:   -- DESCRIPTION :
                     40:   --   Multiplies a bracket monomial with a bracket.
                     41:
                     42:   function "*" ( bm1,bm2 : Bracket_Monomial ) return Bracket_Monomial;
                     43:   procedure Multiply ( bm1 : in out Bracket_Monomial;
                     44:                        bm2 : in Bracket_Monomial );
                     45:
                     46:   -- DESCRIPTION :
                     47:   --   Multiplication of two bracket monomials.
                     48:
                     49:   function Is_Equal ( bm1,bm2 : Bracket_Monomial ) return boolean;
                     50:
                     51:   -- DESCRIPTION :
                     52:   --   Returns true when both monomials contains the same brackets.
                     53:
                     54:   function "<" ( bm1,bm2 : Bracket_Monomial ) return boolean;
                     55:
                     56:   -- DESCRIPTION :
                     57:   --   Let bm1 = b11*b12*..*b1k and bm2 = b21*b22*..*b2l.
                     58:   --   Then bm1 < bm2 if b1i < b2i, for some i.
                     59:
                     60:   function ">" ( bm1,bm2 : Bracket_Monomial ) return boolean;
                     61:
                     62:   -- DESCRIPTION :
                     63:   --   Let bm1 = b11*b12*..*b1k and bm2 = b21*b22*..*b2l.
                     64:   --   Then bm1 > bm2 if b1i > b2i, for some i.
                     65:
                     66:   function Divisible ( bm : Bracket_Monomial; b : Bracket ) return boolean;
                     67:
                     68:   -- DESCRIPTION :
                     69:   --   Returns true if bm is divisible by b, i.e.: if b occurs in bm.
                     70:
                     71: -- ITERATORS OVER THE BRACKETS :
                     72:
                     73:   function Number_of_Brackets ( bm : Bracket_Monomial ) return natural;
                     74:
                     75:   -- DESCRIPTION :
                     76:   --   Returns the number of brackets in the monomial bm,
                     77:   --   or equivalently the degree of the bracket monomial.
                     78:
                     79:   generic
                     80:     with procedure Process ( b : in Bracket; continue : out boolean );
                     81:   procedure Enumerate_Brackets ( bm : in Bracket_Monomial );
                     82:
                     83:   -- DESCRIPTION :
                     84:   --   Enumerate the brackets in the bracket monomial.
                     85:   --   The brackets appear lexicographically in ascending order
                     86:   --   as argument of the procedure Process.
                     87:   --   Enumeration stops when continue is set to false.
                     88:
                     89: -- DESTRUCTOR :
                     90:
                     91:   procedure Clear ( bm : in out Bracket_Monomial );
                     92:
                     93:   -- DESCRIPTION :
                     94:   --   Deallocates the occupied memory space.
                     95:
                     96: private
                     97:
                     98:   package Lists_of_Brackets is new Generic_Lists(Link_to_Bracket);
                     99:   type Bracket_Monomial is new Lists_of_Brackets.List;
                    100:
                    101: end Bracket_Monomials;

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>