Annotation of OpenXM_contrib/PHC/Ada/Root_Counts/Product/sets_of_unknowns.ads, Revision 1.1
1.1 ! maekawa 1: package Sets_of_Unknowns is
! 2:
! 3: -- DESCRIPTION :
! 4: -- This package provides a data abstraction for dealing with
! 5: -- sets with a limited number of unknowns.
! 6:
! 7: type Set is private;
! 8:
! 9: -- CREATORS :
! 10:
! 11: function Create ( n : natural ) return Set;
! 12:
! 13: -- DESCRIPTION :
! 14: -- Creates a set which can contain n unknowns.
! 15: -- After this operation Dimension(s) = n.
! 16:
! 17: function Create ( s : Set ) return Set;
! 18:
! 19: -- DESCRIPTION :
! 20: -- Returns a new set with the same contents as the given one.
! 21: -- Note that s1 := s2 does only create a new name of the same set,
! 22: -- but does not create a new set.
! 23:
! 24: -- CONSTRUCTORS :
! 25:
! 26: procedure Add ( s : in out Set; i : in natural );
! 27:
! 28: -- DESCRIPTION :
! 29: -- Adds the ith unknown to the set.
! 30: -- The set must be created and 1 <= i <= Dimension(s).
! 31:
! 32: procedure Union ( s1 : in out Set; s2 : in Set );
! 33: function Union ( s1,s2 : Set ) return Set;
! 34:
! 35: -- DESCRIPTION :
! 36: -- Constructs the union of two sets of equal dimension.
! 37: -- Either the result will be contained in s1, or a new set
! 38: -- will be constructed.
! 39:
! 40: procedure Remove ( s : in out Set; i : in natural );
! 41:
! 42: -- DESCRIPTION :
! 43: -- Removes the ith unknown from the set.
! 44: -- The set must be created and 1 <= i <= Dimension(s);
! 45:
! 46: procedure Difference ( s1 : in out Set; s2 : in Set );
! 47: function Difference ( s1,s2 : Set ) return Set;
! 48:
! 49: -- DESCRIPTION :
! 50: -- Constructs the difference s1\s2 of two sets of equal dimension.
! 51: -- Either the result will be contained in s1, or a new set
! 52: -- will be constructed.
! 53:
! 54: procedure Intersection ( s1 : in out Set; s2 : in Set );
! 55: function Intersection ( s1,s2 : Set ) return Set;
! 56:
! 57: -- DESCRIPTION :
! 58: -- Construct the intersection of two sets of equal dimension.
! 59: -- Either the result will be contained in s1, or a new set
! 60: -- will be constructed.
! 61:
! 62: -- SELECTORS :
! 63:
! 64: function Dimension ( s : Set ) return natural;
! 65:
! 66: -- DESCRIPTION :
! 67: -- Returns the number of unknowns the set can contain.
! 68: -- For an empty set, Dimension(s) = 0.
! 69:
! 70: function Extent_Of ( s : Set ) return natural;
! 71:
! 72: -- DESCRIPTION :
! 73: -- Returns the number of unknowns the set contains.
! 74:
! 75: function Is_In ( s : Set; i : natural ) return boolean;
! 76:
! 77: -- DESCRIPTION :
! 78: -- Returns true if the ith unknown belongs to the set.
! 79:
! 80: function Is_Subset ( s1,s2 : Set ) return boolean;
! 81:
! 82: -- DESCRIPTION :
! 83: -- Returns true when the set s1 is a subset of s2.
! 84:
! 85: function Is_Equal ( s1,s2 : Set ) return boolean;
! 86:
! 87: -- DESCRIPTION :
! 88: -- Returns true when the two sets have the same dimension
! 89: -- and the same elements.
! 90:
! 91: generic
! 92: with procedure Process ( sub : in Set; continue : out boolean );
! 93: procedure Generate_Subsets ( s : in Set; k : in positive );
! 94:
! 95: -- DESCRIPTION :
! 96: -- Generates all proper subsets with k elements of the set s.
! 97: -- Each time a new subset is found, Process is called, with the
! 98: -- subset as input parameter. When the output parameter continue
! 99: -- is set to false, the iteration stops. Otherwise it continues.
! 100:
! 101: -- NOTE :
! 102: -- The same subset will be used over and over. If necessary,
! 103: -- copies should be taken when processing the subset.
! 104:
! 105: generic
! 106: with procedure Process ( sub : in Set; continue : out boolean );
! 107: procedure Generate_All_Subsets ( s : in Set );
! 108:
! 109: -- DESCRIPTION :
! 110: -- Generates all nonempty subsets of the set s, the set s included.
! 111: -- As above, the procedure Process allows the processing of a subset.
! 112:
! 113: -- DESTRUCTOR :
! 114:
! 115: procedure Clear ( s : in out Set );
! 116:
! 117: -- DESCRIPTION :
! 118: -- Frees all occupied memory of the given set.
! 119: -- After Clear(s), Dimension(s) = 0.
! 120:
! 121: private
! 122:
! 123: type Set_Rep;
! 124: type Set is access Set_Rep;
! 125:
! 126: end Sets_of_Unknowns;
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>