[m-rev.] diff: delete obsolete stdlib modules and procedures

Julien Fischer juliensf at csse.unimelb.edu.au
Tue Jan 3 22:03:39 AEDT 2012


Branches: main

Remove deprecated modules and (most) deprecated procedures from the standard
library.  (The remaining deprecated procedures probably need to stick around
for at least another release in order to give people time to adapt their code.)

library/dir.m:
library/list.m:
library/stack.m:
library/string.m:
library/type_desc.m:
 	Delete obsolete procedures.

library/svarray.m:
library/svbag.m:
library/svbimap.m:
library/sveqvclass.m:
library/svmap.m:
library/svmulti_map.m:
library/svqueue.m:
library/svset.m:
library/svvarset.m:
 	Delete these modules, they are no longer required since the
 	original predicates now have their arguments in the state-variable
 	friendly order.

library/library.m:
 	Delete the above modules.

compiler/frameopt.m:
compiler/par_loop_control.m:
compiler/rbmm.region_transformation.m:
browser/browser_test.m:
extras/windows_installer_generator/wix_gui.m:
samples/ultra_sub.m:
tests/hard_coded/rnd.m:
tests/hard_coded/type_spec_ho_term.m:
tests/hard_coded/xmlable_test.m:
 	Conform to the above changes.

Julien.

Index: browser/browser_term.m
===================================================================
RCS file: /home/mercury/mercury1/repository/mercury/browser/browser_term.m,v
retrieving revision 1.7
diff -u -r1.7 browser_term.m
--- browser/browser_term.m	31 Aug 2006 11:09:47 -0000	1.7
+++ browser/browser_term.m	3 Jan 2012 08:13:13 -0000
@@ -82,6 +82,6 @@
          BrowserTerm = synthetic_term(FunctorString, Args, no)
      ;
          IsFunc = yes,
-        list.split_last_det(Args, FuncArgs, Return),
+        list.det_split_last(Args, FuncArgs, Return),
          BrowserTerm = synthetic_term(FunctorString, FuncArgs, yes(Return))
      ).
Index: compiler/frameopt.m
===================================================================
RCS file: /home/mercury/mercury1/repository/mercury/compiler/frameopt.m,v
retrieving revision 1.126
diff -u -r1.126 frameopt.m
--- compiler/frameopt.m	17 Jun 2011 07:51:17 -0000	1.126
+++ compiler/frameopt.m	3 Jan 2012 08:19:44 -0000
@@ -1175,7 +1175,7 @@
      ),
      (
          Label = BlockLabel, % sanity check
-        list.split_last_det(BlockInstrs0, AllButLastInstrs, LastInstr0)
+        list.det_split_last(BlockInstrs0, AllButLastInstrs, LastInstr0)
      ->
          LastInstr0 = llds_instr(LastUinstr0, Comment),
          (
@@ -1922,7 +1922,7 @@
          AssocLabelMap = SideAssocLabelMap,
          RedirectFallThrough = []
      ),
-    list.split_last_det(Instrs0, PrevInstrs, LastInstr0),
+    list.det_split_last(Instrs0, PrevInstrs, LastInstr0),
      map.from_assoc_list(AssocLabelMap, LabelMap),
      opt_util.replace_labels_instruction(LastInstr0, LastInstr, LabelMap, no),
      Instrs = PrevInstrs ++ [LastInstr | RedirectFallThrough],
Index: compiler/par_loop_control.m
===================================================================
RCS file: /home/mercury/mercury1/repository/mercury/compiler/par_loop_control.m,v
retrieving revision 1.6
diff -u -r1.6 par_loop_control.m
--- compiler/par_loop_control.m	19 Oct 2011 07:58:27 -0000	1.6
+++ compiler/par_loop_control.m	3 Jan 2012 08:22:58 -0000
@@ -940,7 +940,7 @@
              FixupGoalInfo = do_not_fixup_goal_info
          ;
              GoalExpr0 = conj(ConjType, Conjs0),
-            list.split_last_det(Conjs0, EarlierConjs0, LastConj0),
+            list.det_split_last(Conjs0, EarlierConjs0, LastConj0),
              goal_rewrite_recursive_call(Info, IsLastGoal, LastConj0, LastConj,
                  UseParentStackLastConj, FixupGoalInfoLastConj),
              list.map3(goal_rewrite_recursive_call(Info,
Index: compiler/rbmm.region_transformation.m
===================================================================
RCS file: /home/mercury/mercury1/repository/mercury/compiler/rbmm.region_transformation.m,v
retrieving revision 1.21
diff -u -r1.21 rbmm.region_transformation.m
--- compiler/rbmm.region_transformation.m	31 Aug 2011 07:59:34 -0000	1.21
+++ compiler/rbmm.region_transformation.m	3 Jan 2012 08:23:44 -0000
@@ -154,7 +154,7 @@
              ;
                  PredOrFunc = pf_function,
                  % The output of function is always at the last.
-                list.split_last_det(ArgTypes0, BeforeLast, Last),
+                list.det_split_last(ArgTypes0, BeforeLast, Last),
                  ArgTypes = BeforeLast ++ RegionTypes ++ [Last]
              ),
              pred_info_set_arg_types(TypeVarSet, ExistQuantTVars, ArgTypes,
@@ -310,9 +310,9 @@
          !:ActualArgModes = !.ActualArgModes ++ InModes ++ OutModes
      ;
          PredOrFunc = pf_function,
-        list.split_last_det(!.HeadVars, BeforeLastHeadVar, LastHeadVar),
+        list.det_split_last(!.HeadVars, BeforeLastHeadVar, LastHeadVar),
          !:HeadVars = BeforeLastHeadVar ++ FormalRegionArgs ++ [LastHeadVar],
-        list.split_last_det(!.ActualArgModes, BeforeLastHeadMode,
+        list.det_split_last(!.ActualArgModes, BeforeLastHeadMode,
              LastHeadMode),
          !:ActualArgModes = BeforeLastHeadMode ++ InModes
              ++ OutModes ++ [LastHeadMode]
@@ -440,7 +440,7 @@
      ;
          CalleePredOrFunc = pf_function,
          % The output of function is always at the last.
-        list.split_last_det(Args0, BeforeLast, Last),
+        list.det_split_last(Args0, BeforeLast, Last),
          Args = BeforeLast ++ ActualRegionArgs ++ [Last]
      ),

Index: extras/windows_installer_generator/wix_gui.m
===================================================================
RCS file: /home/mercury/mercury1/repository/mercury/extras/windows_installer_generator/wix_gui.m,v
retrieving revision 1.3
diff -u -r1.3 wix_gui.m
--- extras/windows_installer_generator/wix_gui.m	30 Mar 2006 01:21:20 -0000	1.3
+++ extras/windows_installer_generator/wix_gui.m	3 Jan 2012 10:45:33 -0000
@@ -205,7 +205,6 @@
  :- import_module require.
  :- import_module pair.
  :- import_module string.
-:- import_module svmap.

  :- import_module wix_language.

@@ -416,7 +415,7 @@
              BitMapSourceId = FoundSourceId
          else
              allocate_id(BitMapSourceId, !IdSupply),
-            svmap.det_insert(Source, BitMapSourceId, !BitMaps)
+            map.det_insert(Source, BitMapSourceId, !BitMaps)
          ),
          AnnControl = annotated_bitmap(BitMapControlId, Pos, Size,
              BitMapSourceId)
@@ -641,7 +640,7 @@
          DialogId = FoundDialogId
      else
          allocate_id(DialogId, !IdSupply),
-        svmap.det_insert(DialogToken, DialogId, !DialogIdMap)
+        map.det_insert(DialogToken, DialogId, !DialogIdMap)
      ).

  generate_wizard_dialogs(Title, Next, Back, Cancel, Install, BannerSrc, 
Index: library/dir.m
===================================================================
RCS file: /home/mercury/mercury1/repository/mercury/library/dir.m,v
retrieving revision 1.64
diff -u -r1.64 dir.m
--- library/dir.m	14 Dec 2011 05:23:49 -0000	1.64
+++ library/dir.m	3 Jan 2012 07:36:34 -0000
@@ -96,12 +96,6 @@
      %
  :- func dir.det_basename(string) = string.

-    % A synonym for the above.
-    %
-:- pragma obsolete(dir.basename_det/1).
-:- func dir.basename_det(string) = string.
-
-
      % dir.dirname(PathName) = DirName.
      %
      % Returns the directory part of a filename.
@@ -340,8 +334,6 @@

  %-----------------------------------------------------------------------------%

-dir.basename_det(FileName) = dir.det_basename(FileName).
-
  dir.det_basename(FileName) =
      ( BaseName = dir.basename(FileName) ->
          BaseName
Index: library/library.m
===================================================================
RCS file: /home/mercury/mercury1/repository/mercury/library/library.m,v
retrieving revision 1.133
diff -u -r1.133 library.m
--- library/library.m	22 Aug 2011 06:33:02 -0000	1.133
+++ library/library.m	3 Jan 2012 11:00:10 -0000
@@ -115,18 +115,9 @@
  :- import_module stream.string_writer.
  :- import_module string.
  :- import_module string.builder.
-:- import_module svarray.
-:- import_module svbag.
-:- import_module svbimap.
-:- import_module sveqvclass.
  :- import_module svlist.
-:- import_module svmap.
-:- import_module svmulti_map.
  :- import_module svpqueue.
-:- import_module svqueue.
-:- import_module svset.
  :- import_module svstack.
-:- import_module svvarset.
  :- import_module table_statistics.
  :- import_module term.
  :- import_module term_io.
@@ -295,18 +286,9 @@
  mercury_std_library_module("stream.string_writer").
  mercury_std_library_module("string").
  mercury_std_library_module("string.builder").
-mercury_std_library_module("svarray").
-mercury_std_library_module("svbag").
-mercury_std_library_module("svbimap").
-mercury_std_library_module("sveqvclass").
  mercury_std_library_module("svlist").
-mercury_std_library_module("svmap").
-mercury_std_library_module("svmulti_map").
  mercury_std_library_module("svpqueue").
-mercury_std_library_module("svqueue").
-mercury_std_library_module("svset").
  mercury_std_library_module("svstack").
-mercury_std_library_module("svvarset").
  mercury_std_library_module("table_builtin").
  mercury_std_library_module("table_statistics").
  mercury_std_library_module("term").
Index: library/list.m
===================================================================
RCS file: /home/mercury/mercury1/repository/mercury/library/list.m,v
retrieving revision 1.204
diff -u -r1.204 list.m
--- library/list.m	18 Nov 2011 02:48:32 -0000	1.204
+++ library/list.m	3 Jan 2012 07:53:58 -0000
@@ -335,12 +335,6 @@
  :- pred list.det_replace_nth(list(T)::in, int::in, T::in, list(T)::out) is det.
  :- func list.det_replace_nth(list(T), int, T) = list(T).

-:- pragma obsolete(list.replace_nth_det/4).
-:- pred list.replace_nth_det(list(T)::in, int::in, T::in, list(T)::out)
-    is det.
-:- pragma obsolete(list.replace_nth_det/3).
-:- func list.replace_nth_det(list(T), int, T) = list(T).
-
      % list.sort_and_remove_dups(List0, List):
      %
      % List is List0 sorted with the second and subsequent occurrence of
@@ -399,15 +393,6 @@
  :- pred list.det_index0(list(T)::in, int::in, T::out) is det.
  :- pred list.det_index1(list(T)::in, int::in, T::out) is det.

-:- pragma obsolete(list.index0_det/3).
-:- pred list.index0_det(list(T)::in, int::in, T::out) is det.
-:- pragma obsolete(list.index1_det/3).
-:- pred list.index1_det(list(T)::in, int::in, T::out) is det.
-
-:- pragma obsolete(list.index0_det/2).
-:- func list.index0_det(list(T), int) = T.
-:- pragma obsolete(list.index1_det/2).
-:- func list.index1_det(list(T), int) = T.
  :- func list.det_index0(list(T), int) = T.
  :- func list.det_index1(list(T), int) = T.

@@ -478,9 +463,6 @@
  :- pred list.det_last(list(T)::in, T::out) is det.
  :- func list.det_last(list(T)) = T.

-:- pragma obsolete(list.last_det/2).
-:- pred list.last_det(list(T)::in, T::out) is det.
-
      % list.split_last(List, AllButLast, Last) is true if Last is the
      % last element of List and AllButLast is the list of elements before it.
      %
@@ -489,7 +471,6 @@
      % A deterministic version of list.split_last, which aborts instead of
      % failing if the input list is empty.
      %
-:- pred list.split_last_det(list(T)::in, list(T)::out, T::out) is det.
  :- pred list.det_split_last(list(T)::in, list(T)::out, T::out) is det.

  %-----------------------------------------------------------------------------%
@@ -1732,12 +1713,6 @@
          error("list.det_index0: index out of range")
      ).

-list.index0_det(Xs, N) = A :-
-    list.index0_det(Xs, N, A).
-
-list.index0_det(List, N, Elem) :-
-    list.det_index0(List, N, Elem).
-
  list.index1(List, N, Elem) :-
      list.index0(List, N - 1, Elem).

@@ -1747,12 +1722,6 @@
  list.det_index1(List, N, Elem) :-
      list.det_index0(List, N - 1, Elem).

-list.index1_det(List, N, Elem) :-
-    list.det_index1(List, N, Elem).
-
-list.index1_det(Xs, N) = A :-
-    list.det_index1(Xs, N, A).
-
  %-----------------------------------------------------------------------------%

  list.index0_of_first_occurrence(List, Elem, N) :-
@@ -1875,12 +1844,6 @@
      P > 0,
      list.replace_nth_2(Xs, P, R, L).

-list.replace_nth_det(Xs, N, A) = Ys :-
-    list.det_replace_nth(Xs, N, A, Ys).
-
-list.replace_nth_det(Xs, P, R, L) :-
-    list.det_replace_nth(Xs, P, R, L).
-
  list.det_replace_nth(Xs, N, A) = Ys :-
      list.det_replace_nth(Xs, N, A, Ys).

@@ -2310,9 +2273,6 @@
          list.det_last_2(TH, TT, Last)
      ).

-list.last_det(List, Last) :-
-    list.det_last(List, Last).
-
  list.split_last([H | T], AllButLast, Last) :-
      (
          T = [],
@@ -2320,39 +2280,36 @@
          Last = H
      ;
          T = [TH | TT],
-        list.split_last_det_2(TH, TT, AllButLastTail, Last),
+        list.det_split_last_2(TH, TT, AllButLastTail, Last),
          AllButLast = [H | AllButLastTail]
      ).

-list.split_last_det([], _, _) :-
-    error("list.split_last_det: empty list").
-list.split_last_det([H | T], AllButLast, Last) :-
+list.det_split_last([], _, _) :-
+    error("list.det_split_last: empty list").
+list.det_split_last([H | T], AllButLast, Last) :-
      (
          T = [],
          AllButLast = [],
          Last = H
      ;
          T = [TH | TT],
-        list.split_last_det_2(TH, TT, AllButLastTail, Last),
+        list.det_split_last_2(TH, TT, AllButLastTail, Last),
          AllButLast = [H | AllButLastTail]
      ).

-:- pred list.split_last_det_2(T::in, list(T)::in, list(T)::out, T::out) is det.
+:- pred list.det_split_last_2(T::in, list(T)::in, list(T)::out, T::out) is det.

-list.split_last_det_2(H, T, AllButLast, Last) :-
+list.det_split_last_2(H, T, AllButLast, Last) :-
      (
          T = [],
          AllButLast = [],
          Last = H
      ;
          T = [TH | TT],
-        list.split_last_det_2(TH, TT, AllButLastTail, Last),
+        list.det_split_last_2(TH, TT, AllButLastTail, Last),
          AllButLast = [H | AllButLastTail]
      ).

-list.det_split_last(List, AllButLast, Last) :-
-    list.split_last_det(List, AllButLast, Last).
-
  %-----------------------------------------------------------------------------%

  list.map(_F, []) = [].
Index: library/stack.m
===================================================================
RCS file: /home/mercury/mercury1/repository/mercury/library/stack.m,v
retrieving revision 1.27
diff -u -r1.27 stack.m
--- library/stack.m	10 May 2011 04:12:28 -0000	1.27
+++ library/stack.m	3 Jan 2012 07:59:59 -0000
@@ -63,13 +63,6 @@
  :- pred stack.det_top(stack(T)::in, T::out) is det.
  :- func stack.det_top(stack(T)) = T.

-    % Obsolete synonyms for the above.
-    %
-:- pragma obsolete(stack.top_det/2).
-:- pred stack.top_det(stack(T)::in, T::out) is det.
-:- pragma obsolete(stack.top_det/1).
-:- func stack.top_det(stack(T)) = T.
-
  	% `stack.pop(Stack0, Elem, Stack)' is true iff `Stack0' is
  	% a non-empty stack whose top element is `Elem', and `Stack'
  	% the stack which results from popping `Elem' off `Stack0'.
@@ -80,8 +73,6 @@
  	% call error/1 rather than failing if given an empty stack.
  	%
  :- pred stack.det_pop(stack(T)::in, T::out, stack(T)::out) is det.
-:- pragma obsolete(stack.pop_det/3).
-:- pred stack.pop_det(stack(T)::in, T::out, stack(T)::out) is det.

  	% `stack.depth(Stack, Depth)' is true iff `Stack' is a stack
  	% containing `Depth' elements.
@@ -137,10 +128,6 @@
  		error("stack.det_top: top of empty stack")
  	).

-stack.top_det(S) = stack.det_top(S).
-stack.top_det(S, E) :-
-    stack.det_top(S, E).
-
  stack.pop(stack([Elem | Elems]), Elem, stack(Elems)).

  stack.det_pop(Stack0, Elem, Stack) :-
@@ -152,9 +139,6 @@
  		error("stack.det_pop: pop from empty stack")
  	).

-stack.pop_det(Stack0, Elem, Stack) :-
-	stack.det_pop(Stack0, Elem, Stack).
-
  stack.depth(S) = N :-
  	stack.depth(S, N).

Index: library/string.m
===================================================================
RCS file: /home/mercury/mercury1/repository/mercury/library/string.m,v
retrieving revision 1.313
diff -u -r1.313 string.m
--- library/string.m	21 Oct 2011 04:06:21 -0000	1.313
+++ library/string.m	3 Jan 2012 08:01:46 -0000
@@ -148,11 +148,6 @@
      %
  :- func string.det_remove_suffix(string, string) = string.

-    % An obsolete synonym for the above.
-    %
-:- pragma obsolete(string.remove_suffix_det/2).
-:- func string.remove_suffix_det(string, string) = string.
-
      % string.remove_suffix_if_present(Suffix, String) returns `String' minus
      % `Suffix' if `String' ends with `Suffix', `String' otherwise.
      %
@@ -507,11 +502,6 @@
  :- func string.det_index(string, int) = char.
  :- pred string.det_index(string::in, int::in, char::uo) is det.

-:- pragma obsolete(string.index_det/2).
-:- func string.index_det(string, int) = char.
-:- pragma obsolete(string.index_det/3).
-:- pred string.index_det(string::in, int::in, char::uo) is det.
-
      % A synonym for det_index/2:
      % String ^ elem(Index) = string.det_index(String, Index).
      %
@@ -1228,9 +1218,6 @@
  % on calls to string.length that occur in loops.
  :- pragma inline(string.det_index/3).

-string.index_det(String, Int, Char) :-
-    string.det_index(String, Int, Char).
-
  string.det_index(String, Int, Char) :-
      ( string.index(String, Int, Char0) ->
          Char = Char0
@@ -1405,9 +1392,6 @@
      string.suffix(String, Suffix),
      string.left(String, length(String) - length(Suffix), StringWithoutSuffix).

-string.remove_suffix_det(String, Suffix) =
-    string.det_remove_suffix(String, Suffix).
-
  string.det_remove_suffix(String, Suffix) = StringWithoutSuffix :-
      ( string.remove_suffix(String, Suffix, StringWithoutSuffixPrime) ->
          StringWithoutSuffix = StringWithoutSuffixPrime
@@ -6125,8 +6109,6 @@
  string.duplicate_char(C, N) = S :-
      string.duplicate_char(C, N, S).

-string.index_det(S, N) = string.det_index(S, N).
-
  string.det_index(S, N) = C :-
      string.det_index(S, N, C).

Index: library/svarray.m
===================================================================
RCS file: library/svarray.m
diff -N library/svarray.m
--- library/svarray.m	26 Jun 2011 16:56:41 -0000	1.9
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,104 +0,0 @@
-%-----------------------------------------------------------------------------%
-% vim: ft=mercury ts=4 sw=4 et wm=0 tw=0
-%-----------------------------------------------------------------------------%
-% Copyright (C) 2004-2007, 2011 The University of Melbourne.
-% This file may only be copied under the terms of the GNU Library General
-% Public License - see the file COPYING.LIB in the Mercury distribution.
-%-----------------------------------------------------------------------------%
-% 
-% File: svarray.m
-% 
-% This file provides an interface to the 'array' ADT that is conducive to the
-% use of state variable notation. The predicates here do the same thing as
-% their counterparts in the array module; the only difference is the order
-% of the arguments.
-% 
-%-----------------------------------------------------------------------------%
-%-----------------------------------------------------------------------------%
-
-:- module svarray.
-:- interface.
-
-:- import_module array.
-
-%-----------------------------------------------------------------------------%
-
-    % svarray.set sets the nth element of an array, and returns the
-    % resulting array (good opportunity for destructive update ;-).
-    % Throws an exception if the index is out of bounds.
-    %
-:- pragma obsolete(svarray.set/4).
-:- pred svarray.set(int::in, T::in, array(T)::array_di, array(T)::array_uo)
-    is det.
-
-    % svarray.semidet_set sets the nth element of an array,
-    % and returns the resulting array.
-    % It fails if the index is out of bounds.
-    %
-:- pragma obsolete(svarray.semidet_set/4).
-:- pred svarray.semidet_set(int::in, T::in,
-    array(T)::array_di, array(T)::array_uo) is semidet.
-
-    % svarray.slow_set sets the nth element of an array,
-    % and returns the resulting array.  The initial array is not
-    % required to be unique, so the implementation may not be able to use
-    % destructive update.
-    % It is an error if the index is out of bounds.
-    %
-:- pragma obsolete(svarray.slow_set/4).
-:- pred svarray.slow_set(int, T, array(T), array(T)).
-%:- mode svarray.slow_set(in, in, array_ui, array_uo) is det.
-:- mode svarray.slow_set(in, in, in, array_uo) is det.
-
-    % svarray.semidet_slow_set sets the nth element of an array,
-    % and returns the resulting array.  The initial array is not
-    % required to be unique, so the implementation may not be able to use
-    % destructive update.
-    % It fails if the index is out of bounds.
-    %
-:- pragma obsolete(svarray.semidet_slow_set/4).
-:- pred svarray.semidet_slow_set(int, T, array(T), array(T)).
-%:- mode svarray.semidet_slow_set(in, in, array_ui, array_uo) is semidet.
-:- mode svarray.semidet_slow_set(in, in, in, array_uo) is semidet.
-
-    % svarray.resize(Size, Init, Array0, Array):
-    % The array is expanded or shrunk to make it fit
-    % the new size `Size'.  Any new entries are filled
-    % with `Init'.
-    %
-:- pragma obsolete(svarray.resize/4).
-:- pred svarray.resize(int::in, T::in, array(T)::array_di, array(T)::array_uo)
-    is det.
-
-    % svarray.shrink(Size, Array0, Array):
-    % The array is shrunk to make it fit the new size `Size'.
-    % Throws an exception if `Size' is larger than the size of `Array0'.
-    %
-:- pragma obsolete(svarray.shrink/3).
-:- pred svarray.shrink(int::in, array(T)::array_di, array(T)::array_uo)
-    is det.
-
-%-----------------------------------------------------------------------------%
-%-----------------------------------------------------------------------------%
-
-:- implementation.
-
-svarray.set(Index, Value, !Array) :-
-    array.set(Index, Value, !Array).
-
-svarray.semidet_set(Index, Value, !Array) :-
-    array.semidet_set(Index, Value, !Array).
-
-svarray.slow_set(Index, Value, !Array) :-
-    array.slow_set(Index, Value, !Array).
-
-svarray.semidet_slow_set(Index, Value, !Array) :-
-    array.semidet_slow_set(Index, Value, !Array).
-
-svarray.resize(Size, Init, !Array) :-
-    array.resize(Size, Init, !Array).
-
-svarray.shrink(Size, !Array) :-
-    array.shrink(Size, !Array).
-
-%-----------------------------------------------------------------------------%
Index: library/svbag.m
===================================================================
RCS file: library/svbag.m
diff -N library/svbag.m
--- library/svbag.m	26 Jun 2011 16:56:41 -0000	1.10
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,183 +0,0 @@
-%-----------------------------------------------------------------------------%
-% vim: ft=mercury ts=4 sw=4 et wm=0 tw=0
-%---------------------------------------------------------------------------%
-% Copyright (C) 2004-2006, 2011 The University of Melbourne.
-% This file may only be copied under the terms of the GNU Library General
-% Public License - see the file COPYING.LIB in the Mercury distribution.
-%---------------------------------------------------------------------------%
-% 
-% File: svbag.m
-% 
-% This file provides an interface to the 'bag' ADT that is conducive to the
-% use of state variable notation. The predicates here do the same thing as
-% their counterparts in the bag module; the only difference is the order of the
-% arguments.
-% 
-%---------------------------------------------------------------------------%
-%---------------------------------------------------------------------------%
-
-:- module svbag.
-:- interface.
-
-:- import_module bag.
-:- import_module list.
-:- import_module set.
-
-%---------------------------------------------------------------------------%
-
-    % Insert a particular value in a bag.
-    %
-:- pragma obsolete(svbag.insert/3).
-:- pred svbag.insert(T::in, bag(T)::in, bag(T)::out) is det.
-
-    % Insert a list of values into a bag.
-    %
-:- pragma obsolete(svbag.insert_list/3).
-:- pred svbag.insert_list(list(T)::in, bag(T)::in, bag(T)::out) is det.
-
-    % Insert a set of values into a bag.
-    %
-:- pragma obsolete(svbag.insert_set/3).
-:- pred svbag.insert_set(set(T)::in, bag(T)::in, bag(T)::out) is det.
-
-    % Remove one occurrence of a particular value from a bag.
-    % Fail if the item does not exist in the bag.
-    %
-:- pragma obsolete(svbag.remove/3).
-:- pred svbag.remove(T::in, bag(T)::in, bag(T)::out) is semidet.
-
-    % Remove one occurrence of a particular value from a bag.
-    % Abort if the item does not exist in the bag.
-    %
-:- pragma obsolete(svbag.det_remove/3).
-:- pred svbag.det_remove(T::in, bag(T)::in, bag(T)::out) is det.
-
-    % Remove a list of values from a bag.  Duplicates are removed
-    % from the bag the appropriate number of times.  Fail if any
-    % of the items in the list do not exist in the bag.
-    %
-    % This call is logically equivalent to:
-    %
-    %   svbag.remove_list(RemoveList, Bag0, Bag) :-
-    %       bag.from_list(RemoveList, RemoveBag),
-    %       bag.is_subbag(RemoveBag, Bag0),
-    %       svbag.subtract(RemoveBag, Bag0, Bag).
-    %
-:- pragma obsolete(svbag.remove_list/3).
-:- pred svbag.remove_list(list(T)::in, bag(T)::in, bag(T)::out) is semidet.
-
-    % Remove a list of values from a bag.  Duplicates are removed
-    % from the bag the appropriate number of times.  Abort if any
-    % of the items in the list do not exist in the bag.
-    %
-:- pragma obsolete(svbag.det_remove_list/3).
-:- pred svbag.det_remove_list(list(T)::in, bag(T)::in, bag(T)::out) is det.
-
-    % Remove a set of values from a bag. Each value is removed once.
-    % Fail if any of the items in the set do not exist in the bag.
-    %
-:- pragma obsolete(svbag.remove_set/3).
-:- pred svbag.remove_set(set(T)::in, bag(T)::in, bag(T)::out) is semidet.
-
-    % Remove a set of values from a bag. Each value is removed once.
-    % Abort if any of the items in the set do not exist in the bag.
-    %
-:- pragma obsolete(svbag.det_remove_set/3).
-:- pred svbag.det_remove_set(set(T)::in, bag(T)::in, bag(T)::out) is det.
-
-    % Delete one occurrence of a particular value from a bag.
-    % If the key is not present, leave the bag unchanged.
-    %
-:- pragma obsolete(svbag.delete/3).
-:- pred svbag.delete(T::in, bag(T)::in, bag(T)::out) is det.
-
-    % Remove all occurrences of a particular value from a bag.
-    % Fail if the item does not exist in the bag.
-    %
-:- pragma obsolete(svbag.remove_all/3).
-:- pred svbag.remove_all(T::in, bag(T)::in, bag(T)::out) is semidet.
-
-    % Delete all occurrences of a particular value from a bag.
-    %
-:- pragma obsolete(svbag.delete_all/3).
-:- pred svbag.delete_all(T::in, bag(T)::in, bag(T)::out) is det.
-
-    % svbag.subtract(Bag0, SubBag, Bag):
-    %
-    % Subtracts SubBag from Bag0 to produce Bag.
-    % Each element in SubBag is removed from Bag0 to produce Bag.
-    % If an element exists in SubBag, but not in Bag, then that
-    % element is not removed.
-    % e.g. svbag.subtract({1, 1, 2, 2, 3 }, {1, 1, 2, 3, 3, 3}, {2}).
-    %
-:- pragma obsolete(svbag.subtract/3).
-:- pred svbag.subtract(bag(T)::in, bag(T)::in, bag(T)::out) is det.
-
-    % Fails if the bag is empty.
-    %
-:- pragma obsolete(svbag.remove_smallest/3).
-:- pred svbag.remove_smallest(T::out, bag(T)::in, bag(T)::out) is semidet.
-
-%---------------------------------------------------------------------------%
-%---------------------------------------------------------------------------%
-
-:- implementation.
-
-% Everything below here is not intended to be part of the public interface,
-% and will not be included in the Mercury library reference manual.
-
-:- interface.
-
-:- import_module term.      % for var/1.
-
-:- pragma type_spec(svbag.insert_set/3, T = var(_)).
-
-:- pragma type_spec(svbag.det_remove_set/3, T = var(_)).
-
-%-----------------------------------------------------------------------------%
-
-:- implementation.
-
-svbag.insert(Item, !Bag) :-
-    bag.insert(Item, !Bag).
-
-svbag.insert_list(List, !Bag) :-
-    bag.insert_list(List, !Bag).
-
-svbag.insert_set(Set, !Bag) :-
-    bag.insert_set(Set, !Bag).
-
-svbag.remove(Item, !Bag) :-
-    bag.remove(Item, !Bag).
-
-svbag.det_remove(Item, !Bag) :-
-    bag.det_remove(Item, !Bag).
-
-svbag.remove_list(List, !Bag) :-
-    bag.remove_list(List, !Bag).
-
-svbag.det_remove_list(List, !Bag) :-
-    bag.det_remove_list(List, !Bag).
-
-svbag.remove_set(Set, !Bag) :-
-    bag.remove_set(Set, !Bag).
-
-svbag.det_remove_set(Set, !Bag) :-
-    bag.det_remove_set(Set, !Bag).
-
-svbag.delete(Item, !Bag) :-
-    bag.delete(Item, !Bag).
-
-svbag.remove_all(Item, !Bag) :-
-    bag.remove_all(Item, !Bag).
-
-svbag.delete_all(Item, !Bag) :-
-    bag.delete_all(Item, !Bag).
-
-svbag.subtract(SubBag, !Bag) :-
-    bag.subtract(SubBag, !Bag).
-
-svbag.remove_smallest(Item, !Bag) :-
-    bag.remove_smallest(Item, !Bag).
-
-%---------------------------------------------------------------------------%
Index: library/svbimap.m
===================================================================
RCS file: library/svbimap.m
diff -N library/svbimap.m
--- library/svbimap.m	26 Jun 2011 16:56:41 -0000	1.8
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,49 +0,0 @@
-%-----------------------------------------------------------------------------%
-% vim: ft=mercury ts=4 sw=4 et wm=0 tw=0
-%---------------------------------------------------------------------------%
-% Copyright (C) 2004-2006, 2011 The University of Melbourne.
-% This file may only be copied under the terms of the GNU Library General
-% Public License - see the file COPYING.LIB in the Mercury distribution.
-%-----------------------------------------------------------------------------%
-% 
-% File: svbimap.m.
-% 
-% This file provides an interface to the 'bimap' ADT that is conducive to the
-% use of state variable notation. The predicates here do the same thing as
-% their counterparts in the bimap module; the only difference is the order
-% of the arguments.
-% 
-%-----------------------------------------------------------------------------%
-%-----------------------------------------------------------------------------%
-
-:- module svbimap.
-:- interface.
-
-:- import_module bimap.
-
-%-----------------------------------------------------------------------------%
-
-:- pragma obsolete(svbimap.insert/4).
-:- pred svbimap.insert(K::in, V::in, bimap(K, V)::in, bimap(K, V)::out)
-    is semidet.
-
-:- pragma obsolete(svbimap.det_insert/4).
-:- pred svbimap.det_insert(K::in, V::in, bimap(K, V)::in, bimap(K, V)::out)
-    is det.
-
-:- pragma obsolete(svbimap.set/4).
-:- pred svbimap.set(K::in, V::in, bimap(K, V)::in, bimap(K, V)::out) is det.
-
-%-----------------------------------------------------------------------------%
-%-----------------------------------------------------------------------------%
-
-:- implementation.
-
-svbimap.insert(K, V, !BM) :-
-    bimap.insert(K, V, !BM).
-
-svbimap.det_insert(K, V, !BM) :-
-    bimap.det_insert(K, V, !BM).
-
-svbimap.set(K, V, !BM) :-
-    bimap.set(K, V, !BM).
Index: library/sveqvclass.m
===================================================================
RCS file: library/sveqvclass.m
diff -N library/sveqvclass.m
--- library/sveqvclass.m	26 Jun 2011 16:56:41 -0000	1.9
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,83 +0,0 @@
-%-----------------------------------------------------------------------------%
-% vim: ft=mercury ts=4 sw=4 et wm=0 tw=0
-%-----------------------------------------------------------------------------%
-% Copyright (C) 2005-2006, 2011 The University of Melbourne.
-% This file may only be copied under the terms of the GNU Library General
-% Public License - see the file COPYING.LIB in the Mercury distribution.
-%-----------------------------------------------------------------------------%
-% 
-% File: sveqvclass.m.
-% Author: zs.
-% Stability: high.
-% 
-% This file provides an interface to the 'eqvclass' ADT that is conducive
-% to the use of state variable notation. The predicates here do the same thing
-% as their counterparts in the eqvclass module; the only difference is the
-% order of the arguments.
-% 
-%-----------------------------------------------------------------------------%
-%-----------------------------------------------------------------------------%
-
-:- module sveqvclass.
-:- interface.
-
-:- import_module eqvclass.
-
-%-----------------------------------------------------------------------------%
-
-    % Make an element known to the equivalence class.
-    % The element may already be known to the class;
-    % if it isn't, it is created without any equivalence relationships.
-    %
-:- pragma obsolete(sveqvclass.ensure_element/3).
-:- pred sveqvclass.ensure_element(T::in, eqvclass(T)::in, eqvclass(T)::out)
-    is det.
-
-    % Make an element known to the equivalence class.
-    % The element must not already be known to the class;
-    % it is created without any equivalence relationships.
-    %
-:- pragma obsolete(sveqvclass.new_element/3).
-:- pred sveqvclass.new_element(T::in, eqvclass(T)::in, eqvclass(T)::out)
-    is det.
-
-    % Make two elements of the equivalence class equivalent.
-    % It is ok if they already are.
-    %
-:- pragma obsolete(sveqvclass.ensure_equivalence/4).
-:- pred sveqvclass.ensure_equivalence(T::in, T::in,
-    eqvclass(T)::in, eqvclass(T)::out) is det.
-
-    % Make two elements of the equivalence class equivalent.
-    % It is an error if they are already equivalent.
-    %
-:- pragma obsolete(sveqvclass.new_equivalence/4).
-:- pred sveqvclass.new_equivalence(T::in, T::in,
-    eqvclass(T)::in, eqvclass(T)::out) is det.
-
-    % Remove the given element and all other elements equivalent to it
-    % from the given equivalence class.
-    %
-:- pragma obsolete(sveqvclass.remove_equivalent_elements/3).
-:- pred sveqvclass.remove_equivalent_elements(T::in,
-    eqvclass(T)::in, eqvclass(T)::out) is det.
-
-%---------------------------------------------------------------------------%
-%---------------------------------------------------------------------------%
-
-:- implementation.
-
-sveqvclass.ensure_element(Element, !EqvClass) :-
-    eqvclass.ensure_element(Element, !EqvClass).
-
-sveqvclass.new_element(Element, !EqvClass) :-
-    eqvclass.new_element(Element, !EqvClass).
-
-sveqvclass.ensure_equivalence(Element1, Element2, !EqvClass) :-
-    eqvclass.ensure_equivalence(Element1, Element2, !EqvClass).
-
-sveqvclass.new_equivalence(Element1, Element2, !EqvClass) :-
-    eqvclass.new_equivalence(Element1, Element2, !EqvClass).
-
-sveqvclass.remove_equivalent_elements(X, !EqvClass) :-
-    !:EqvClass = eqvclass.remove_equivalent_elements(!.EqvClass, X).
Index: library/svmap.m
===================================================================
RCS file: library/svmap.m
diff -N library/svmap.m
--- library/svmap.m	26 Jun 2011 16:56:41 -0000	1.10
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,182 +0,0 @@
-%-----------------------------------------------------------------------------%
-% vim: ft=mercury ts=4 sw=4 et wm=0 tw=0
-%---------------------------------------------------------------------------%
-% Copyright (C) 2004-2006, 2011 The University of Melbourne.
-% This file may only be copied under the terms of the GNU Library General
-% Public License - see the file COPYING.LIB in the Mercury distribution.
-%-----------------------------------------------------------------------------%
-% 
-% File: svmap.m.
-% Author: zs.
-% Stability: high.
-% 
-% This file provides an interface to the 'map' ADT that is conducive to the
-% use of state variable notation. The predicates here do the same thing as
-% their counterparts in the map module; the only difference is the order of the
-% arguments.
-% 
-%-----------------------------------------------------------------------------%
-%-----------------------------------------------------------------------------%
-
-:- module svmap.
-:- interface.
-
-:- import_module assoc_list.
-:- import_module list.
-:- import_module map.
-
-%-----------------------------------------------------------------------------%
-
-    % Insert a new key and corresponding value into a map.
-    % Fail if the key already exists.
-    %
-:- pragma obsolete(svmap.insert/4).
-:- pred svmap.insert(K::in, V::in, map(K, V)::in, map(K, V)::out) is semidet.
-
-    % Insert a new key and corresponding value into a map.
-    % Abort if the key already exists.
-    %
-:- pragma obsolete(svmap.det_insert/4).
-:- pred svmap.det_insert(K::in, V::in, map(K, V)::in, map(K, V)::out) is det.
-
-    % Apply map.det_insert to key - value pairs from corresponding lists.
-    %
-:- pragma obsolete(svmap.det_insert_from_corresponding_lists/4).
-:- pred svmap.det_insert_from_corresponding_lists(list(K)::in, list(V)::in,
-    map(K, V)::in, map(K, V)::out) is det.
-
-    % Apply map.det_insert to key - value pairs from the assoc_lists.
-    %
-:- pragma obsolete(svmap.det_insert_from_assoc_list/3).
-:- pred svmap.det_insert_from_assoc_list(assoc_list(K, V)::in,
-    map(K, V)::in, map(K, V)::out) is det.
-
-    % Apply map.set to key - value pairs from corresponding lists.
-    %
-:- pragma obsolete(svmap.set_from_corresponding_lists/4).
-:- pred svmap.set_from_corresponding_lists(list(K)::in, list(V)::in,
-    map(K, V)::in, map(K, V)::out) is det.
-
-:- pragma obsolete(svmap.set_from_assoc_list/3).
-:- pred svmap.set_from_assoc_list(assoc_list(K, V)::in,
-    map(K, V)::in, map(K, V)::out) is det.
-
-    % Update the value corresponding to a given key
-    % Fail if the key doesn't already exist.
-    %
-:- pragma obsolete(svmap.update/4).
-:- pred svmap.update(K::in, V::in, map(K, V)::in, map(K, V)::out) is semidet.
-
-    % Update the value corresponding to a given key
-    % Abort if the key doesn't already exist.
-    %
-:- pragma obsolete(svmap.det_update/4).
-:- pred svmap.det_update(K::in, V::in, map(K, V)::in, map(K, V)::out) is det.
-
-    % Update value if the key is already present, otherwise
-    % insert new key and value.
-    %
-:- pragma obsolete(svmap.set/4).
-:- pred svmap.set(K::in, V::in, map(K, V)::in, map(K, V)::out) is det.
-
-    % Delete a key-value pair from a map.
-    % If the key is not present, leave the map unchanged.
-    %
-:- pragma obsolete(svmap.delete/3).
-:- pred svmap.delete(K::in, map(K, V)::in, map(K, V)::out) is det.
-
-    % Apply map.delete/3 to a list of keys.
-    %
-:- pragma obsolete(svmap.delete_list/3).
-:- pred svmap.delete_list(list(K)::in, map(K, V)::in, map(K, V)::out) is det.
-
-    % Delete a key-value pair from a map and return the value.
-    % Fail if the key is not present.
-    %
-:- pragma obsolete(svmap.remove/4).
-:- pred svmap.remove(K::in, V::out, map(K, V)::in, map(K, V)::out) is semidet.
-
-    % Delete a key-value pair from a map and return the value.
-    % Abort if the key is not present.
-    %
-:- pragma obsolete(svmap.det_remove/4).
-:- pred svmap.det_remove(K::in, V::out, map(K, V)::in, map(K, V)::out) is det.
-
-    % Remove the smallest item from the map, fail if
-    % the map is empty.
-    %
-:- pragma obsolete(svmap.remove_smallest/4).
-:- pred svmap.remove_smallest(K::out, V::out, map(K, V)::in, map(K, V)::out)
-    is semidet.
-
-%-----------------------------------------------------------------------------%
-
-% Everything below here is not intended to be part of the public interface,
-% and will not be included in the Mercury library reference manual.
-
-:- interface.
-
-:- import_module term. % for var/1.
-
-:- pragma type_spec(svmap.insert(in, in, in, out), K = var(_)).
-:- pragma type_spec(svmap.insert(in, in, in, out), K = int).
-
-:- pragma type_spec(svmap.det_insert(in, in, in, out), K = var(_)).
-:- pragma type_spec(svmap.det_insert(in, in, in, out), K = int).
-
-:- pragma type_spec(svmap.set(in, in, in, out), K = var(_)).
-:- pragma type_spec(svmap.set(in, in, in, out), K = int).
-
-:- pragma type_spec(svmap.update(in, in, in, out), K = var(_)).
-:- pragma type_spec(svmap.update(in, in, in, out), K = int).
-
-:- pragma type_spec(svmap.det_update(in, in, in, out), K = var(_)).
-:- pragma type_spec(svmap.det_update(in, in, in, out), K = int).
-
-:- implementation.
-
-%-----------------------------------------------------------------------------%
-
-svmap.insert(K, V, !Map) :-
-    map.insert(K, V, !Map).
-
-svmap.det_insert(K, V, !Map) :-
-    map.det_insert(K, V, !Map).
-
-svmap.det_insert_from_corresponding_lists(Ks, Vs, !Map) :-
-    map.det_insert_from_corresponding_lists(Ks, Vs, !Map).
-
-svmap.det_insert_from_assoc_list(As, !Map) :-
-    map.det_insert_from_assoc_list(As, !Map).
-
-svmap.set_from_corresponding_lists(Ks, Vs, !Map) :-
-    map.set_from_corresponding_lists(Ks, Vs, !Map).
-
-svmap.set_from_assoc_list(As, !Map) :-
-    map.set_from_assoc_list(As, !Map).
-
-svmap.update(K, V, !Map) :-
-    map.update(K, V, !Map).
-
-svmap.det_update(K, V, !Map) :-
-    map.det_update(K, V, !Map).
-
-svmap.set(K, V, !Map) :-
-    map.set(K, V, !Map).
-
-svmap.delete(Key, !Map) :-
-    map.delete(Key, !Map).
-
-svmap.delete_list(Keys, !Map) :-
-    map.delete_list(Keys, !Map).
-
-svmap.remove(Key, Value, !Map) :-
-    map.remove(Key, Value, !Map).
-
-svmap.det_remove(Key, Value, !Map) :-
-    map.det_remove(Key, Value, !Map).
-
-svmap.remove_smallest(K, V, !Map) :-
-    map.remove_smallest(K, V, !Map).
-
-%-----------------------------------------------------------------------------%
Index: library/svmulti_map.m
===================================================================
RCS file: library/svmulti_map.m
diff -N library/svmulti_map.m
--- library/svmulti_map.m	26 Jun 2011 16:56:41 -0000	1.7
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,153 +0,0 @@
-%-----------------------------------------------------------------------------%
-% vim: ft=mercury ts=4 sw=4 et wm=0 tw=0
-%-----------------------------------------------------------------------------%
-% Copyright (C) 2005-2006, 2011 The University of Melbourne.
-% This file may only be copied under the terms of the GNU Library General
-% Public License - see the file COPYING.LIB in the Mercury distribution.
-%-----------------------------------------------------------------------------%
-% 
-% File: svmulti_map.m.
-% Author: dylan.
-% Stability: low.
-% 
-% This file provides an interface to the 'multi_map' ADT that is conducive to
-% the use of state variable notation. The predicates here do the same thing as
-% their counterparts in the multi_map module; the only difference is the order
-% of the arguments.
-% 
-%-----------------------------------------------------------------------------%
-%-----------------------------------------------------------------------------%
-
-:- module svmulti_map.
-:- interface.
-
-:- import_module list.
-:- import_module multi_map.
-
-%-----------------------------------------------------------------------------%
-
-    % Insert a new key and corresponding value into a multi_map.
-    % Fail if the key already exists.
-    %
-:- pragma obsolete(svmulti_map.insert/4).
-:- pred svmulti_map.insert(K::in, V::in,
-    multi_map(K, V)::in, multi_map(K, V)::out) is semidet.
-
-    % Insert a new key and corresponding value into a multi_map.
-    % Abort if the key already exists.
-    %
-:- pragma obsolete(svmulti_map.det_insert/4).
-:- pred svmulti_map.det_insert(K::in, V::in,
-    multi_map(K, V)::in, multi_map(K, V)::out) is det.
-
-    % Update (add) the value corresponding to a given key.
-    % Fail if the key does not already exist.
-    %
-:- pragma obsolete(svmulti_map.update/4).
-:- pred svmulti_map.update(K::in, V::in,
-    multi_map(K, V)::in, multi_map(K, V)::out) is semidet.
-
-    % Update (add) the value corresponding to a given key.
-    % Abort if the key doesn't already exist.
-    %
-:- pragma obsolete(svmulti_map.det_update/4).
-:- pred svmulti_map.det_update(K::in, V::in,
-    multi_map(K, V)::in, multi_map(K, V)::out) is det.
-
-    % Update (replace) the value corresponding to a given key.
-    % Abort if the key does not already exist.
-    %
-:- pragma obsolete(svmulti_map.det_replace/4).
-:- pred svmulti_map.det_replace(K::in, list(V)::in,
-    multi_map(K, V)::in, multi_map(K, V)::out) is det.
-
-    % Update (add) value if the key is already present, otherwise
-    % insert the new key and value.
-    %
-:- pragma obsolete(svmulti_map.set/4).
-:- pred svmulti_map.set(K::in, V::in,
-    multi_map(K, V)::in, multi_map(K, V)::out) is det.
-
-:- pragma obsolete(svmulti_map.add/4).
-:- pred svmulti_map.add(K::in, V::in,
-    multi_map(K, V)::in, multi_map(K, V)::out) is det.
-
-    % Delete a key and data from a multi_map
-    % If the key is not present, leave the multi_map unchanged.
-    %
-:- pragma obsolete(svmulti_map.delete/3).
-:- pred svmulti_map.delete(K::in, multi_map(K, V)::in, multi_map(K, V)::out)
-    is det.
-
-    % Delete a data value from a key in a multi_map
-    % If the key is not present, leave the multi_map unchanged.
-    %
-:- pragma obsolete(svmulti_map.delete/4).
-:- pred svmulti_map.delete(K::in, V::in,
-    multi_map(K, V)::in, multi_map(K, V)::out) is det.
-
-    % Delete a key-value pair from a multi_map and return the value.
-    % Fail if the key is not present.
-    %
-:- pragma obsolete(svmulti_map.remove/4).
-:- pred svmulti_map.remove(K::in, list(V)::out,
-    multi_map(K, V)::in, multi_map(K, V)::out) is semidet.
-
-    % Delete a key-value pair from a multi_map and return the value.
-    % Abort if the key is not present.
-    %
-:- pragma obsolete(svmulti_map.det_remove/4).
-:- pred svmulti_map.det_remove(K::in, list(V)::out,
-    multi_map(K, V)::in, multi_map(K, V)::out) is det.
-
-    % Remove the smallest item from the multi_map, fail if
-    % the multi_map is empty.
-    %
-:- pragma obsolete(svmulti_map.remove_smallest/4).
-:- pred svmulti_map.remove_smallest(K::out, list(V)::out,
-    multi_map(K, V)::in, multi_map(K, V)::out) is semidet.
-
-%----------------------------------------------------------------------------%
-%----------------------------------------------------------------------------%
-
-:- implementation.
-
-svmulti_map.insert(K, V, !MultiMap) :-
-    multi_map.insert(K, V, !MultiMap).
-
-svmulti_map.det_insert(K, V, !MultiMap) :-
-    multi_map.det_insert(K, V, !MultiMap).
-
-svmulti_map.update(K, V, !MultiMap) :-
-    multi_map.update(K, V, !MultiMap).
-
-svmulti_map.det_update(K, V, !MultiMap) :-
-    multi_map.det_update(K, V, !MultiMap).
-
-svmulti_map.det_replace(K, V, !MultiMap) :-
-    multi_map.det_replace(K, V, !MultiMap).
-
-svmulti_map.set(K, V, !MultiMap) :-
-    multi_map.set(K, V, !MultiMap).
-
-svmulti_map.add(K, V, !MultiMap) :-
-    multi_map.add(K, V, !MultiMap).
-
-svmulti_map.delete(K, !MultiMap) :-
-    multi_map.delete(K, !MultiMap).
-
-svmulti_map.delete(K, V, !MultiMap) :-
-    multi_map.delete(K, V, !MultiMap).
-
-svmulti_map.remove(K, V, !MultiMap) :-
-    multi_map.remove(K, V, !MultiMap).
-
-svmulti_map.det_remove(K, V, !MultiMap) :-
-    multi_map.det_remove(K, V, !MultiMap).
-
-svmulti_map.remove_smallest(K, V, !MultiMap) :-
-    multi_map.remove_smallest(K, V, !MultiMap).
-
-%----------------------------------------------------------------------------%
-:- end_module svmulti_map.
-%----------------------------------------------------------------------------%
Index: library/svqueue.m
===================================================================
RCS file: library/svqueue.m
diff -N library/svqueue.m
--- library/svqueue.m	26 Jun 2011 16:56:41 -0000	1.9
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,102 +0,0 @@
-%-----------------------------------------------------------------------------%
-% vim: ft=mercury ts=4 sw=4 et wm=0 tw=0
-%---------------------------------------------------------------------------%
-% Copyright (C) 2004-2006, 2011 The University of Melbourne.
-% This file may only be copied under the terms of the GNU Library General
-% Public License - see the file COPYING.LIB in the Mercury distribution.
-%---------------------------------------------------------------------------%
-% 
-% File: svqueue.m.
-% Author: zs.
-% Stability: high.
-% 
-% This file provides an interface to the 'queue' ADT that is conducive to the
-% use of state variable notation. The predicates here do the same thing as
-% their counterparts in the queue module; the only difference is the order
-% of the arguments.
-% 
-%--------------------------------------------------------------------------%
-%--------------------------------------------------------------------------%
-
-:- module svqueue.
-:- interface.
-
-:- import_module list.
-:- import_module queue.
-
-%--------------------------------------------------------------------------%
-
-    % `svqueue.put(Elem, Queue0, Queue)' is true iff `Queue' is
-    % the queue which results from appending `Elem' onto the end
-    % of `Queue0'.
-    %
-:- pragma obsolete(svqueue.put/3).
-:- pred svqueue.put(T::in, queue(T)::in, queue(T)::out) is det.
-
-    % `svqueue.put_list(Elems, Queue0, Queue)' is true iff `Queue'
-    % is the queue which results from inserting the items in the
-    % list `Elems' into `Queue0'.
-    %
-:- pragma obsolete(svqueue.put_list/3).
-:- pred svqueue.put_list(list(T)::in, queue(T)::in, queue(T)::out) is det.
-
-    % `svqueue.get(Elem, Queue0, Queue)' is true iff `Queue0' is
-    % a non-empty queue whose first element is `Elem', and `Queue'
-    % the queue which results from removing that element from
-    % the front of `Queue0'.
-    %
-:- pragma obsolete(svqueue.get/3).
-:- pred svqueue.get(T::out, queue(T)::in, queue(T)::out) is semidet.
-
-    % `svqueue.delete_all(Elem, Queue0, Queue)' is true iff `Queue' is
-    % the same queue as `Queue0' with all occurences of `Elem' removed
-    % from it.
-    %
-:- pragma obsolete(svqueue.delete_all/3).
-:- pred svqueue.delete_all(T::in, queue(T)::in, queue(T)::out) is det.
-
-    % `svqueue.put_on_front(Elem, Queue0, Queue)' pushes `Elem' on to
-    % the front of `Queue0', giving `Queue'.
-    %
-:- pragma obsolete(svqueue.put_on_front/3).
-:- pred svqueue.put_on_front(T::in, queue(T)::in, queue(T)::out) is det.
-
-    % `svqueue.put_list_on_front(Queue0, Elems, Queue)' pushes `Elems'
-    % on to the front of `Queue0', giving `Queue' (the Nth member
-    % of `Elems' becomes the Nth member from the front of `Queue').
-    %
-:- pragma obsolete(svqueue.put_list_on_front/3).
-:- pred svqueue.put_list_on_front(list(T)::in, queue(T)::in, queue(T)::out)
-    is det.
-
-    % `queue.get_from_back(Elem, Queue0, Queue)' removes `Elem' from
-    % the back of `Queue0', giving `Queue'.
-    %
-:- pragma obsolete(svqueue.get_from_back/3).
-:- pred svqueue.get_from_back(T::out, queue(T)::in, queue(T)::out) is semidet.
-
-%--------------------------------------------------------------------------%
-%--------------------------------------------------------------------------%
-
-:- implementation.
-
-svqueue.put(Elem, !Queue) :-
-    queue.put(Elem, !Queue).
-
-svqueue.put_list(List, !Queue) :-
-    queue.put_list(List, !Queue).
-
-svqueue.get(Elem, !Queue) :-
-    queue.get(Elem, !Queue).
-
-svqueue.delete_all(Elem, !Queue) :-
-    queue.delete_all(Elem, !Queue).
-
-svqueue.put_on_front(Elem, !Queue) :-
-    queue.put_on_front(Elem, !Queue).
-
-svqueue.put_list_on_front(Elems, !Queue) :-
-    queue.put_list_on_front(Elems, !Queue).
-
-svqueue.get_from_back(Elem, !Queue) :-
-    queue.get_from_back(Elem, !Queue).
Index: library/svset.m
===================================================================
RCS file: library/svset.m
diff -N library/svset.m
--- library/svset.m	26 Jun 2011 16:56:41 -0000	1.10
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,118 +0,0 @@
-%-----------------------------------------------------------------------------%
-% vim: ft=mercury ts=4 sw=4 et wm=0 tw=0
-%---------------------------------------------------------------------------%
-% Copyright (C) 2004-2006, 2011 The University of Melbourne.
-% This file may only be copied under the terms of the GNU Library General
-% Public License - see the file COPYING.LIB in the Mercury distribution.
-%---------------------------------------------------------------------------%
-% 
-% File: set.m.
-% Authors: zs.
-% Stability: high.
-% 
-% This file provides an interface to the 'set' ADT that is conducive to the
-% use of state variable notation. The predicates here do the same thing as
-% their counterparts in the set module; the only difference is the order of
-% the arguments.
-% 
-%--------------------------------------------------------------------------%
-%--------------------------------------------------------------------------%
-
-:- module svset.
-:- interface.
-
-:- import_module list.
-:- import_module set.
-
-    % `svset.insert(X, Set0, Set)' is true iff `Set' is the union of
-    % `Set0' and the set containing only `X'.
-    %
-:- pragma obsolete(svset.insert/3).
-:- pred svset.insert(T::in, set(T)::in, set(T)::out) is det.
-
-    % `svset.insert_list(Xs, Set0, Set)' is true iff `Set' is the union of
-    % `Set0' and the set containing only the members of `Xs'.
-    %
-:- pragma obsolete(svset.insert_list/3).
-:- pred svset.insert_list(list(T)::in, set(T)::in, set(T)::out) is det.
-
-    % `svset.delete(X, Set0, Set)' is true iff `Set' is the relative
-    % complement of `Set0' and the set containing only `X', i.e.
-    % if `Set' is the set which contains all the elements of `Set0'
-    % except `X'.
-    %
-:- pragma obsolete(svset.delete/3).
-:- pred svset.delete(T::in, set(T)::in, set(T)::out) is det.
-
-    % `svset.delete_list(Xs, Set0, Set)' is true iff `Set' is the relative
-    % complement of `Set0' and the set containing only the members of
-    % `Xs'.
-    %
-:- pragma obsolete(svset.delete_list/3).
-:- pred svset.delete_list(list(T)::in, set(T)::in, set(T)::out) is det.
-
-    % `svset.remove(X, Set0, Set)' is true iff `Set0' contains `X',
-    % and `Set' is the relative complement of `Set0' and the set
-    % containing only `X', i.e.  if `Set' is the set which contains
-    % all the elements of `Set0' except `X'.
-    %
-:- pragma obsolete(svset.remove/3).
-:- pred svset.remove(T::in, set(T)::in, set(T)::out) is semidet.
-
-    % `svset.remove_list(Xs, Set0, Set)' is true iff `Xs' does not
-    % contain any duplicates, `Set0' contains every member of `Xs',
-    % and `Set' is the relative complement of `Set0' and the set
-    % containing only the members of `Xs'.
-    %
-:- pragma obsolete(svset.remove_list/3).
-:- pred svset.remove_list(list(T)::in, set(T)::in, set(T)::out) is semidet.
-
-    % `svset.remove_least(Elem, Set0, Set)' is true iff
-    % `Set0' is not empty, `Elem' is the smallest element in `Set0'
-    % (with elements ordered using the standard ordering given
-    % by compare/3), and `Set' is the set containing all the
-    % elements of `Set0' except `Elem'.
-    %
-:- pragma obsolete(svset.remove_least/3).
-:- pred svset.remove_least(T::out, set(T)::in, set(T)::out) is semidet.
-
-%--------------------------------------------------------------------------%
-%--------------------------------------------------------------------------%
-
-:- implementation.
-
-% Everything below here is not intended to be part of the public interface,
-% and will not be included in the Mercury library reference manual.
-
-:- interface.
-
-:- import_module term.  % for var/1.
-
-:- pragma type_spec(svset.insert/3, T = var(_)).
-
-:- pragma type_spec(svset.insert_list/3, T = var(_)).
-
-%-----------------------------------------------------------------------------%
-
-:- implementation.
-
-svset.insert(X, !Set) :-
-    set.insert(X, !Set).
-
-svset.insert_list(X, !Set) :-
-    set.insert_list(X, !Set).
-
-svset.delete(X, !Set) :-
-    set.delete(X, !Set).
-
-svset.delete_list(X, !Set) :-
-    set.delete_list(X, !Set).
-
-svset.remove(X, !Set) :-
-    set.remove(X, !Set).
-
-svset.remove_list(X, !Set) :-
-    set.remove_list(X, !Set).
-
-svset.remove_least(X, !Set) :-
-    set.remove_least(X, !Set).
Index: library/svvarset.m
===================================================================
RCS file: library/svvarset.m
diff -N library/svvarset.m
--- library/svvarset.m	26 Jun 2011 16:56:41 -0000	1.11
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,138 +0,0 @@
-%-----------------------------------------------------------------------------%
-% vim: ft=mercury ts=4 sw=4 et wm=0 tw=0
-%-----------------------------------------------------------------------------%
-% Copyright (C) 2005-2006, 2011 The University of Melbourne.
-% This file may only be copied under the terms of the GNU Library General
-% Public License - see the file COPYING.LIB in the Mercury distribution.
-%-----------------------------------------------------------------------------%
-% 
-% File: svvarset.m.
-% Author: fjh.
-% Stability: low.
-% 
-% This file provides an interface to the 'varset' ADT that is conducive to the
-% user of state variable notation.  The predicates here do the same thing as
-% their counterparts in the varset module; the only difference is the order of
-% the arguments.
-% 
-%-----------------------------------------------------------------------------%
-%-----------------------------------------------------------------------------%
-
-:- module svvarset.
-:- interface.
-
-:- import_module list.
-:- import_module maybe.
-:- import_module set.
-:- import_module term.
-:- import_module varset.
-
-%-----------------------------------------------------------------------------%
-
-    % Create a new variable.
-    %
-:- pragma obsolete(svvarset.new_var/3).
-:- pred svvarset.new_var(var(T)::out, varset(T)::in, varset(T)::out) is det.
-
-    % Create a new named variable.
-    %
-:- pragma obsolete(svvarset.new_named_var/4).
-:- pred svvarset.new_named_var(string::in, var(T)::out,
-    varset(T)::in, varset(T)::out) is det.
-
-    % Create a new variable, and maybe give it a name.
-    %
-:- pragma obsolete(svvarset.new_maybe_named_var/4).
-:- pred svvarset.new_maybe_named_var(maybe(string)::in, var(T)::out,
-    varset(T)::in, varset(T)::out) is det.
-
-    % Create a new named variable with a unique (w.r.t. the
-    % varset) number appended to the name.
-    %
-:- pragma obsolete(svvarset.new_uniquely_named_var/4).
-:- pred svvarset.new_uniquely_named_var(string::in, var(T)::out,
-    varset(T)::in, varset(T)::out) is det.
-
-    % Create multiple new variables.
-    %
-:- pragma obsolete(svvarset.new_vars/4).
-:- pred svvarset.new_vars(int::in, list(var(T))::out, varset(T)::in,
-    varset(T)::out) is det.
-
-    % Delete the name and value for a variable.
-    %
-:- pragma obsolete(svvarset.delete_var/3).
-:- pred svvarset.delete_var(var(T)::in, varset(T)::in, varset(T)::out) is det.
-
-    % Delete the names and values for a list of variables.
-    %
-:- pragma obsolete(svvarset.delete_vars/3).
-:- pred svvarset.delete_vars(list(var(T))::in, varset(T)::in, varset(T)::out)
-    is det.
-
-    % Set the name of a variable.
-    %
-:- pragma obsolete(svvarset.name_var/4).
-:- pred svvarset.name_var(var(T)::in, string::in, varset(T)::in,
-    varset(T)::out) is det.
-
-    % Bind a value to a variable.
-    % This will overwrite any existing binding.
-    %
-:- pragma obsolete(svvarset.bind_var/4).
-:- pred svvarset.bind_var(var(T)::in, term(T)::in, varset(T)::in,
-    varset(T)::out) is det.
-
-    % Bind a set of terms to a set of variables.
-    %
-:- pragma obsolete(svvarset.bind_vars/3).
-:- pred svvarset.bind_vars(substitution(T)::in, varset(T)::in, varset(T)::out)
-    is det.
-
-    % Given a varset and a set of variables, remove the names
-    % and values of any other variables stored in the varset.
-    %
-:- pragma obsolete(svvarset.select/3).
-:- pred svvarset.select(set(var(T))::in, varset(T)::in, varset(T)::out) is det.
-
-%-----------------------------------------------------------------------------%
-%-----------------------------------------------------------------------------%
-
-:- implementation.
-
-svvarset.new_var(Var, !Varset) :-
-    varset.new_var(Var, !Varset).
-
-svvarset.new_named_var(Name, Var, !Varset) :-
-    varset.new_named_var(Name, Var, !Varset).
-
-svvarset.new_maybe_named_var(MaybeName, Var, !Varset) :-
-    varset.new_maybe_named_var(MaybeName, Var, !Varset).
-
-svvarset.new_uniquely_named_var(Name, Var, !Varset) :-
-    varset.new_uniquely_named_var(Name, Var, !Varset).
-
-svvarset.new_vars(NumVars, NewVars, !Varset) :-
-    varset.new_vars(NumVars, NewVars, !Varset).
-
-svvarset.delete_var(Var, !Varset) :-
-    varset.delete_var(Var, !Varset).
-
-svvarset.delete_vars(Vars, !Varset) :-
-    varset.delete_vars(Vars, !Varset).
-
-svvarset.name_var(Id, Name, !Varset) :-
-    varset.name_var(Id, Name, !Varset).
-
-svvarset.bind_var(Id, Val, !Varset) :-
-    varset.bind_var(Id, Val, !Varset).
-
-svvarset.bind_vars(Subst, !Varset) :-
-    varset.bind_vars(Subst, !Varset).
-
-svvarset.select(Vars, !Varset) :-
-    varset.select(Vars, !Varset).
-
-%-----------------------------------------------------------------------------%
-:- end_module svvarset.
-%-----------------------------------------------------------------------------%
Index: library/type_desc.m
===================================================================
RCS file: /home/mercury/mercury1/repository/mercury/library/type_desc.m,v
retrieving revision 1.73
diff -u -r1.73 type_desc.m
--- library/type_desc.m	16 Jun 2011 06:22:22 -0000	1.73
+++ library/type_desc.m	3 Jan 2012 07:35:55 -0000
@@ -69,11 +69,6 @@
      %
  :- func det_ground_pseudo_type_desc_to_type_desc(pseudo_type_desc) = type_desc.

-    % An obsolete synonym for the above.
-    %
-:- pragma obsolete(ground_pseudo_type_desc_to_type_desc_det/1).
-:- func ground_pseudo_type_desc_to_type_desc_det(pseudo_type_desc) = type_desc.
-
      % The function type_of/1 returns a representation of the type
      % of its argument.
      %
@@ -449,9 +444,6 @@
          fail
      ).

-ground_pseudo_type_desc_to_type_desc_det(PseudoTypeDesc) =
-    det_ground_pseudo_type_desc_to_type_desc(PseudoTypeDesc).
-
  det_ground_pseudo_type_desc_to_type_desc(PseudoTypeDesc) = TypeDesc :-
      ( pseudo_type_desc_is_ground(PseudoTypeDesc) ->
          private_builtin.unsafe_type_cast(PseudoTypeDesc, TypeDesc)
Index: samples/ultra_sub.m
===================================================================
RCS file: /home/mercury/mercury1/repository/mercury/samples/ultra_sub.m,v
retrieving revision 1.9
diff -u -r1.9 ultra_sub.m
--- samples/ultra_sub.m	10 Jan 2011 02:29:33 -0000	1.9
+++ samples/ultra_sub.m	3 Jan 2012 10:46:23 -0000
@@ -46,7 +46,6 @@
  :- import_module list.
  :- import_module map.
  :- import_module string.
-:- import_module svmap.

  %------------------------------------------------------------------------------%

@@ -121,7 +120,7 @@
      ->
          true
      ;
-        svmap.set(X, Chars, !Match)
+        map.set(X, Chars, !Match)
      ),
      (
          % Try and match the remainder of the pattern.
Index: tests/hard_coded/rnd.m
===================================================================
RCS file: /home/mercury/mercury1/repository/tests/hard_coded/rnd.m,v
retrieving revision 1.5
diff -u -r1.5 rnd.m
--- tests/hard_coded/rnd.m	14 Aug 2009 03:21:54 -0000	1.5
+++ tests/hard_coded/rnd.m	3 Jan 2012 10:31:45 -0000
@@ -4,7 +4,7 @@

  :- import_module io.

-:- pred main(io__state, io__state).
+:- pred main(io.state, io.state).
  :- mode main(di, uo) is det.

  :- implementation.
@@ -12,7 +12,7 @@
  :- import_module float, int, list.

  main -->
-	{ rnd__init(17, Rnd) },
+	{ rnd.init(17, Rnd) },
  	{ gen_nums(10, Rnd, [], Nums) },
  	foldl((pred(Num::in, di, uo) is det -->
  		print(Num), nl
@@ -31,8 +31,8 @@

  %---------------------------------------------------------------------------%

-:- pred rnd__init(int, rnd).
-:- mode rnd__init(in, out) is det.
+:- pred rnd.init(int, rnd).
+:- mode rnd.init(in, out) is det.

  :- pred rnd(float, rnd, rnd).
  :- mode rnd(out, in, out) is det.
@@ -62,7 +62,7 @@
  	Val = J*(Max - Min)+Min.

  shuffle(Ins, Outs, R0, R) :-
-	list__length(Ins, N),
+	list.length(Ins, N),
  	shuffle2(N, Ins, [], T0, R0, R1),
  	shuffle2(N, T0, [], T1, R1, R2),
  	shuffle2(N, T1, [], T2, R2, R3),
@@ -98,9 +98,9 @@
  	).

  oneof(Things, Thing, R0, R) :-
-	list__length(Things, Num),
+	list.length(Things, Num),
  	irange(0, Num-1, X, R0, R),
-	list__index0_det(Things, X, Thing).
+	list.det_index0(Things, X, Thing).

  %---------------------------------------------------------------------------%

@@ -114,7 +114,7 @@
  		int
  	).

-rnd__init(Seed, rnd(M1, M2, Seed)) :-
+rnd.init(Seed, rnd(M1, M2, Seed)) :-
  	SN = Seed /\ ((1 << 15) - 1),
  	N  = Seed /\ ((1 << 30) - 1),
  	M1a = vec(0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
Index: tests/hard_coded/type_spec_ho_term.m
===================================================================
RCS file: /home/mercury/mercury1/repository/tests/hard_coded/type_spec_ho_term.m,v
retrieving revision 1.2
diff -u -r1.2 type_spec_ho_term.m
--- tests/hard_coded/type_spec_ho_term.m	5 May 2011 03:59:00 -0000	1.2
+++ tests/hard_coded/type_spec_ho_term.m	3 Jan 2012 10:32:29 -0000
@@ -1,29 +1,29 @@
-% Test type specialization of higher-order terms (the map__lookup).
+% Test type specialization of higher-order terms (the map.lookup).
  :- module type_spec_ho_term.

  :- interface.

  :- import_module io.

-:- pred main(io__state::di, io__state::uo) is det.
+:- pred main(io.state::di, io.state::uo) is det.

  :- implementation.

  :- import_module list, map, term, varset.

  main -->
-	{ varset__init(VarSet0 `with_type` varset) },
-	{ varset__new_vars(4, Vars, VarSet0, _VarSet) },
-	{ map__from_corresponding_lists(Vars, ["a", "b", "c", "d"], Map) },
+	{ varset.init(VarSet0 `with_type` varset) },
+	{ varset.new_vars(4, Vars, VarSet0, _VarSet) },
+	{ map.from_corresponding_lists(Vars, ["a", "b", "c", "d"], Map) },
  	{ lookup_list(Map,
-		[list__index1_det(Vars, 1), list__index1_det(Vars, 3)],
+		[list.det_index1(Vars, 1), list.det_index1(Vars, 3)],
  		List) },
-	io__write_list(List, ", ", io__write_string),
-	io__nl.
+	io.write_list(List, ", ", io.write_string),
+	io.nl.

  :- pred lookup_list(map(T, U)::in, list(T)::in, list(U)::out) is det.
  :- pragma type_spec(lookup_list/3, T = var).

  lookup_list(Map, List0, List) :-
-	list__map(map__lookup(Map), List0, List).
+	list.map(map.lookup(Map), List0, List).

Index: tests/hard_coded/xmlable_test.m
===================================================================
RCS file: /home/mercury/mercury1/repository/tests/hard_coded/xmlable_test.m,v
retrieving revision 1.4
diff -u -r1.4 xmlable_test.m
--- tests/hard_coded/xmlable_test.m	30 Oct 2006 07:20:57 -0000	1.4
+++ tests/hard_coded/xmlable_test.m	3 Jan 2012 10:33:09 -0000
@@ -8,18 +8,18 @@

  :- implementation.

-:- import_module term_to_xml, map, pair, svmap, list, string.
+:- import_module term_to_xml, map, pair, list, string.

  main(!IO) :-
  	map.init(Map),
  	some [!Map] (
  		!:Map = Map,
-		svmap.set(1, "one", !Map),
-		svmap.set(2, "two", !Map),
-		svmap.set(3, "three", !Map),
-		svmap.set(4, "four", !Map),
-		svmap.set(5, "five", !Map),
-		svmap.set(6, "six &<>!@$%^`&*()-+='", !Map),
+		map.set(1, "one", !Map),
+		map.set(2, "two", !Map),
+		map.set(3, "three", !Map),
+		map.set(4, "four", !Map),
+		map.set(5, "five", !Map),
+		map.set(6, "six &<>!@$%^`&*()-+='", !Map),
  		write_xml_doc_style_dtd(io.stdout_stream, !.Map, no_stylesheet,
  			external_dtd(
  			public_system("-//W3C//DTD XHTML 1.0 Strict//EN",

--------------------------------------------------------------------------
mercury-reviews mailing list
Post messages to:       mercury-reviews at csse.unimelb.edu.au
Administrative Queries: owner-mercury-reviews at csse.unimelb.edu.au
Subscriptions:          mercury-reviews-request at csse.unimelb.edu.au
--------------------------------------------------------------------------



More information about the reviews mailing list