[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     ! 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>