Annotation of OpenXM_contrib/PHC/Ada/Schubert/brackets.ads, Revision 1.1.1.1
1.1 maekawa 1: with Standard_Natural_Vectors;
2:
3: package Brackets is
4:
5: -- DESCRIPTION :
6: -- A bracket is a selection of rows and represents a maximal minor
7: -- which is use in the Pluecker embedding of the Grassmannian.
8:
9: -- DATA STRUCTURES :
10:
11: type Bracket is new Standard_Natural_Vectors.Vector;
12: -- typically of range 1..d
13: type Link_to_Bracket is access Bracket;
14:
15: -- CONSTRUCTORS : puts the bracket in "normal form" with all entries sorted.
16:
17: procedure Create ( v : in Standard_Natural_Vectors.Vector;
18: b : out Bracket; sign : out integer );
19:
20: -- DESCRIPTION :
21: -- Sorts the entries in the rows in ascending order.
22: -- Eventually the sign of the bracket coefficient changes,
23: -- when the number of transpositions is odd.
24:
25: procedure Create ( v : in Standard_Natural_Vectors.Vector;
26: perm : out Standard_Natural_Vectors.Vector;
27: b : out Bracket; sign : out integer );
28:
29: -- DESCRIPTION :
30: -- Returns also the permutation "perm" that is used in the sorting.
31:
32: function Modulo ( b : Bracket; n : natural ) return Bracket;
33:
34: -- DESCRIPTION :
35: -- Returns the modular form of the bracket: every entry mod n.
36:
37: procedure Modulo ( b : in Bracket; n : in natural;
38: perm : out Standard_Natural_Vectors.Vector;
39: mb : out Bracket );
40:
41: -- DESCRIPTION :
42: -- mb = Modulo(b,n) and perm is the permutation used to sort mb.
43:
44: -- SELECTORS : all require that the brackets are sorted.
45:
46: function Is_Zero ( b : Bracket ) return boolean;
47:
48: -- DESCRIPTION :
49: -- The bracket is zero when it has repeated entries.
50:
51: function Is_Equal ( b1,b2 : Bracket ) return boolean;
52:
53: -- DESCRIPTION :
54: -- Returns true if both brackets are the same.
55:
56: function "<" ( b1,b2 : Bracket ) return boolean;
57:
58: -- DESCRIPTION :
59: -- Returns true if b1 precedes b2 lexicographically.
60:
61: function ">" ( b1,b2 : Bracket ) return boolean;
62:
63: -- DESCRIPTION :
64: -- Returns true if b1 is larger than b2, lexicographically.
65:
66: function Is_Standard ( b1,b2 : Bracket ) return natural;
67:
68: -- DESCRIPTION :
69: -- Let s = Is_Standard(b1,b2). If s = 0, then the pair b1*b2 constitutes
70: -- a Standard bracket monomial, otherwise, s indicates the first entry
71: -- where b1(s) > b2(s).
72:
73: -- REQUIRED : b1 < b2, b1 precedes b2 lexicographically.
74:
75: -- DESTRUCTOR :
76:
77: procedure Clear ( lb : in out Link_to_Bracket );
78:
79: -- DESCRIPTION :
80: -- Destroys the allocate space.
81:
82: end Brackets;
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>