[m-rev.] for post-commit review: new mdb comand "ambiguity"

Zoltan Somogyi zs at cs.mu.OZ.AU
Tue Oct 25 14:00:17 AEST 2005


Add a new mdb command "ambiguity" that prints out ambiguous predicate, function
and type names.

doc/user_guide.texi:
	Document the new command.

doc/mdb_categories:
	Add the new command, as well as some others that should have been added
	previously but weren't.

trace/mercury_trace_internal.c:
	Add the user interface for the new command.

	Fix some old cut-and-paste bugs.

trace/mercury_trace_tables.[ch]:
	Add the implementation of the new command.

runtime/mercury_type_tables.[ch]:
	Change the signature of the function that return the list of all
	type_ctor_infos to also return their number, for use in the new code
	in mercury_trace_tables.c.

	Convert to four-space indentation.

runtime/mercury_layout_util.c:
runtime/mercury_wrapper.c:
	Convert to four-space indentation.

tests/debugger/completion.exp:
tests/debugger/mdb_command_test.inp:
	Expect the mdb command added by this diff, as well as the ones added
	by Ralph recently.

The output for the library follows.

Zoltan.

Ambiguous predicate and function names:

func float.*/3
func int.*/3
func integer.*/3
func rational.*/3
func robdd.*/3

func float.+/2
func float.+/3
func int.+/2
func int.+/3
func integer.+/2
func integer.+/3
func rational.+/2
func rational.+/3
func robdd.+/3

func cord.++/3
func list.++/3
func pprint.++/3
func string.++/3

func float.-/2
func float.-/3
func int.-/2
func int.-/3
func integer.-/2
func integer.-/3
func rational.-/2
func rational.-/3

func dir.//3
func float.//3
func int.//3
func rational.//3

func int.///3
func integer.///3

func int./\/3
func integer./\/3

pred float.</2
pred int.</2
pred integer.</2
pred rational.</2

func int.<</3
func integer.<</3

pred prolog.=:=/2
func robdd.=:=/3

pred float.=</2
pred int.=</2
pred integer.=</2
pred rational.=</2
func robdd.=</3

pred prolog.=\=/2
func robdd.=\=/3

pred float.>/2
pred int.>/2
pred integer.>/2
pred rational.>/2

pred float.>=/2
pred int.>=/2
pred integer.>=/2
pred rational.>=/2

func int.>>/3
func integer.>>/3

pred set.TypeSpecOf__pred__contains__[T = var(V_2)]_0_1/2
pred set_ordlist.TypeSpecOf__pred__contains__[T = var(V_2)]_0_1/2
pred set_tree234.TypeSpecOf__pred__contains__[T = var(V_2)]_0_1/2

pred map.TypeSpecOf__pred__det_insert__[K = int]_0_1/4
pred svmap.TypeSpecOf__pred__det_insert__[K = int]_0_1/4

pred map.TypeSpecOf__pred__det_insert__[K = var(V_2)]_0_1/4
pred svmap.TypeSpecOf__pred__det_insert__[K = var(V_2)]_0_1/4

pred map.TypeSpecOf__pred__insert__[K = int]_0_1/4
pred svmap.TypeSpecOf__pred__insert__[K = int]_0_1/4

pred map.TypeSpecOf__pred__insert__[K = var(V_2)]_0_1/4
pred svmap.TypeSpecOf__pred__insert__[K = var(V_2)]_0_1/4

pred list.TypeSpecOf__pred__member__[T = var(V_2)]_0_1/2
pred set.TypeSpecOf__pred__member__[T = var(V_2)]_0_1/2
pred set_ordlist.TypeSpecOf__pred__member__[T = var(V_2)]_0_1/2

pred map.TypeSpecOf__pred__set__[K = var(V_2)]_0_1/4
pred svmap.TypeSpecOf__pred__set__[K = var(V_2)]_0_1/4
pred tree234.TypeSpecOf__pred__set__[K = var(V_2)]_0_1/4

pred map.TypeSpecOf__pred__update__[K = int]_0_1/4
pred svmap.TypeSpecOf__pred__update__[K = int]_0_1/4
pred tree234.TypeSpecOf__pred__update__[K = int]_0_1/4

pred map.TypeSpecOf__pred__update__[K = var(V_2)]_0_1/4
pred svmap.TypeSpecOf__pred__update__[K = var(V_2)]_0_1/4
pred tree234.TypeSpecOf__pred__update__[K = var(V_2)]_0_1/4

pred set_ctree234.TypeSpecOf__pred_or_func__contains__[T = var(V_2)]_0_1/2
pred sparse_bitset.TypeSpecOf__pred_or_func__contains__[T = var(V_2)]_0_1/2

pred set_ctree234.TypeSpecOf__pred_or_func__delete__[T = var(V_2)]_0_1/3
func sparse_bitset.TypeSpecOf__pred_or_func__delete__[T = var(V_2)]_0_1/3

pred set.TypeSpecOf__pred_or_func__difference__[T = var(V_2)]_0_1/3
func set_ctree234.TypeSpecOf__pred_or_func__difference__[T = var(V_2)]_0_1/3
pred set_ordlist.TypeSpecOf__pred_or_func__difference__[T = var(V_2)]_0_1/3
func set_tree234.TypeSpecOf__pred_or_func__difference__[T = var(V_2)]_0_1/3

pred set.TypeSpecOf__pred_or_func__insert__[T = var(V_2)]_0_1/3
pred set_ctree234.TypeSpecOf__pred_or_func__insert__[T = var(V_2)]_0_1/3
pred set_ordlist.TypeSpecOf__pred_or_func__insert__[T = var(V_2)]_0_1/3
pred set_tree234.TypeSpecOf__pred_or_func__insert__[T = var(V_2)]_0_1/3
func sparse_bitset.TypeSpecOf__pred_or_func__insert__[T = var(V_2)]_0_1/3
pred svset.TypeSpecOf__pred_or_func__insert__[T = var(V_2)]_0_1/3

pred set.TypeSpecOf__pred_or_func__insert_list__[T = var(V_2)]_0_1/3
pred set_ctree234.TypeSpecOf__pred_or_func__insert_list__[T = var(V_2)]_0_1/3
pred set_ordlist.TypeSpecOf__pred_or_func__insert_list__[T = var(V_2)]_0_1/3
pred set_tree234.TypeSpecOf__pred_or_func__insert_list__[T = var(V_2)]_0_1/3
func sparse_bitset.TypeSpecOf__pred_or_func__insert_list__[T = var(V_2)]_0_1/3
pred svset.TypeSpecOf__pred_or_func__insert_list__[T = var(V_2)]_0_1/3

pred set.TypeSpecOf__pred_or_func__intersect__[T = var(V_2)]_0_1/3
func set_ctree234.TypeSpecOf__pred_or_func__intersect__[T = var(V_2)]_0_1/3
pred set_ordlist.TypeSpecOf__pred_or_func__intersect__[T = var(V_2)]_0_1/3
func set_tree234.TypeSpecOf__pred_or_func__intersect__[T = var(V_2)]_0_1/3

pred set.TypeSpecOf__pred_or_func__list_to_set__[T = var(V_2)]_0_1/2
pred set_ordlist.TypeSpecOf__pred_or_func__list_to_set__[T = var(V_2)]_0_1/2
func sparse_bitset.TypeSpecOf__pred_or_func__list_to_set__[T = var(V_2)]_0_1/2

pred map.TypeSpecOf__pred_or_func__lookup__[K = var(V_2)]_0_1/3
pred tree234.TypeSpecOf__pred_or_func__lookup__[K = var(V_2)]_0_1/3

pred map.TypeSpecOf__pred_or_func__search__[K = int]_0_1/3
pred tree234.TypeSpecOf__pred_or_func__search__[K = int]_0_1/3

pred map.TypeSpecOf__pred_or_func__search__[K = var(V_2)]_0_1/3
pred tree234.TypeSpecOf__pred_or_func__search__[K = var(V_2)]_0_1/3

func set_tree234.TypeSpecOf__pred_or_func__sorted_list_to_set__[T = var(V_2)]_0_1/2
func sparse_bitset.TypeSpecOf__pred_or_func__sorted_list_to_set__[T = var(V_2)]_0_1/2

pred set.TypeSpecOf__pred_or_func__union__[T = var(V_2)]_0_1/3
func set_ctree234.TypeSpecOf__pred_or_func__union__[T = var(V_2)]_0_1/3
pred set_ordlist.TypeSpecOf__pred_or_func__union__[T = var(V_2)]_0_1/3
func set_tree234.TypeSpecOf__pred_or_func__union__[T = var(V_2)]_0_1/3

func int.\/2
func integer.\/2

func int.\//3
func integer.\//3

func float.abs/2
pred int.abs/2
func integer.abs/2
func rational.abs/2

pred multi_map.add/4
pred relation.add/4
pred svmulti_map.add/4
pred svrelation.add/4

pred relation.add_assoc_list/3
pred svrelation.add_assoc_list/3

pred eqvclass.add_element/4
pred relation.add_element/4
pred svrelation.add_element/4

pred relation.add_values/4
pred svrelation.add_values/4

func list.append/3
pred string.append/3

pred bimap.apply_forward_map_to_list/3
pred injection.apply_forward_map_to_list/3

pred bimap.apply_reverse_map_to_list/3
pred injection.apply_reverse_map_to_list/3

pred map.apply_to_list/3
pred multi_map.apply_to_list/3

pred deconstruct.arg/4
pred prolog.arg/3
func std_util.arg/3

pred deconstruct.arg_cc/3
pred std_util.arg_cc/3

pred io.arg_priority/3
func ops.arg_priority/2

func bintree.balance/2
pred set_bbbtree.balance/5

pred io.binary_input_stream_foldl/5
pred io.binary_input_stream_foldl/6

pred io.binary_input_stream_foldl2_io/5
pred io.binary_input_stream_foldl2_io/6

pred io.binary_input_stream_foldl2_io_maybe_stop/5
pred io.binary_input_stream_foldl2_io_maybe_stop/6

pred io.binary_input_stream_foldl_io/4
pred io.binary_input_stream_foldl_io/5

pred io.binary_input_stream_name/3
pred io.binary_input_stream_name/4

pred io.binary_output_stream_name/3
pred io.binary_output_stream_name/4

pred svvarset.bind_var/4
pred varset.bind_var/4

pred svvarset.bind_vars/3
pred varset.bind_vars/3

func bitmap.bitmask/2
func version_bitmap.bitmask/2

func bitmap.bitsmask/2
func version_bitmap.bitsmask/2

pred array.bounds/3
pred array2d.bounds/3
pred bt_array.bounds/3
pred version_array2d.bounds/3

func array.bsearch/4
pred bt_array.bsearch/4

pred array.bsearch_2/6
pred bt_array.bsearch_2/6

func term_to_xml.can_generate_dtd/3
func term_to_xml.can_generate_dtd/4

pred hash_table.char_double_hash/3
pred version_hash_table.char_double_hash/3

pred bitmap.clear/3
pred version_bitmap.clear/3

pred robdd.clear_caches/0
pred robdd.clear_caches/2

func bitmap.clear_filler_bits/2
func version_bitmap.clear_filler_bits/2

pred term.coerce/2
pred varset.coerce/2

func bitmap.complement/2
func version_bitmap.complement/2

func bitmap.complement_2/3
func version_bitmap.complement_2/3

pred relation.compose/3
func std_util.compose/4

func cord.cons/3
func list.cons/3

func construct.construct/4
func std_util.construct/4

func construct.construct_tuple/2
func std_util.construct_tuple/2

pred bag.contains/2
pred bintree_set.contains/2
pred map.contains/2
pred multi_map.contains/2
pred set.contains/2
pred set_bbbtree.contains/2
pred set_ctree234.contains/2
pred set_ordlist.contains/2
pred set_tree234.contains/2
pred set_unordlist.contains/2
pred sparse_bitset.contains/2

pred bimap.contains_key/2
pred injection.contains_key/2

pred bimap.contains_value/2
pred injection.contains_value/2

pred term.context_init/1
pred term.context_init/3

func array.copy/2
func bitmap.copy/2
func version_array.copy/2
func version_array2d.copy/2
func version_bitmap.copy/2

pred store.copy_mutvar/4
pred version_store.copy_mutvar/4

func bintree.count/2
pred map.count/2
pred multi_map.count/2
pred rbtree.count/2
func set.count/2
func set_ctree234.count/2
func set_ordlist.count/2
func set_tree234.count/2
func sparse_bitset.count/2
pred tree234.count/2

pred deconstruct.deconstruct/5
pred rtti_implementation.deconstruct/5
pred rtti_implementation.deconstruct/8
pred std_util.deconstruct/4

func bag.delete/3
func bintree.delete/3
func bintree_set.delete/3
pred hash_table.delete/3
pred list.delete/3
pred map.delete/3
pred multi_map.delete/3
pred multi_map.delete/4
pred rbtree.delete/3
func set.delete/3
func set_bbbtree.delete/3
func set_ctree234.delete/3
func set_ordlist.delete/3
func set_tree234.delete/3
func set_unordlist.delete/3
pred sparse_bitset.delete/3
pred svbag.delete/3
pred svmap.delete/3
pred svmulti_map.delete/3
pred svmulti_map.delete/4
pred svset.delete/3
pred tree234.delete/3
pred version_hash_table.delete/3

pred rbtree.delete_2/5
pred set_tree234.delete_2/4
pred tree234.delete_2/4

pred bag.delete_all/3
pred list.delete_all/3
func queue.delete_all/3
pred svbag.delete_all/3
pred svqueue.delete_all/3

pred bimap.delete_key/3
pred injection.delete_key/3

pred bimap.delete_keys/3
pred injection.delete_keys/3

func bintree_set.delete_list/3
pred map.delete_list/3
func set.delete_list/3
func set_bbbtree.delete_list/3
func set_ctree234.delete_list/3
func set_ordlist.delete_list/3
func set_tree234.delete_list/3
func set_unordlist.delete_list/3
pred sparse_bitset.delete_list/3
pred svmap.delete_list/3
pred svset.delete_list/3

pred bimap.delete_value/3
pred injection.delete_value/3

pred bimap.delete_values/3
pred injection.delete_values/3

pred svvarset.delete_var/3
pred varset.delete_var/3

pred svvarset.delete_vars/3
pred varset.delete_vars/3

func bintree.depth/2
func stack.depth/2

pred deconstruct.det_arg/4
pred prolog.det_arg/3
func std_util.det_arg/3

pred rtti_implementation.det_dynamic_cast/2
pred string.det_dynamic_cast/2

func assoc_list.det_elem/3
func map.det_elem/3

pred bimap.det_insert/4
pred hash_table.det_insert/4
pred injection.det_insert/4
func map.det_insert/4
pred multi_map.det_insert/4
pred svbimap.det_insert/4
pred svmap.det_insert/4
pred svmulti_map.det_insert/4
pred version_hash_table.det_insert/4

pred bimap.det_insert_from_assoc_list/3
pred injection.det_insert_from_assoc_list/3
func map.det_insert_from_assoc_list/3
pred svmap.det_insert_from_assoc_list/3

pred bimap.det_insert_from_corresponding_lists/4
pred injection.det_insert_from_corresponding_lists/4
func map.det_insert_from_corresponding_lists/4
pred svmap.det_insert_from_corresponding_lists/4

func std_util.det_make_type/3
func type_desc.det_make_type/3

func bag.det_remove/3
pred map.det_remove/4
pred multi_map.det_remove/4
pred svbag.det_remove/3
pred svmap.det_remove/4
pred svmulti_map.det_remove/4

func bag.det_remove_list/3
pred svbag.det_remove_list/3

func bag.det_remove_set/3
pred svbag.det_remove_set/3

pred multi_map.det_replace/4
pred svmulti_map.det_replace/4

pred hash_table.det_update/4
pred injection.det_update/4
func map.det_update/4
pred multi_map.det_update/4
pred svmap.det_update/4
pred svmulti_map.det_update/4
pred version_hash_table.det_update/4

pred relation.dfs/2
pred relation.dfs/3
pred relation.dfs/5

pred relation.dfsrev/2
pred relation.dfsrev/3
pred relation.dfsrev/5

func bitmap.difference/3
func set.difference/3
func set_bbbtree.difference/3
func set_ctree234.difference/3
func set_ordlist.difference/3
func set_tree234.difference/3
func set_unordlist.difference/3
pred sparse_bitset.difference/3
func version_bitmap.difference/3

pred set_tree234.difference_2/3
pred set_unordlist.difference_2/3
func sparse_bitset.difference_2/3

func int.div/3
func integer.div/3

pred set.divide/4
pred set_ctree234.divide/4
pred set_ordlist.divide/4
pred set_tree234.divide/4
pred set_unordlist.divide/4

pred set_ordlist.divide_2/6
pred set_tree234.divide_2/6
pred set_unordlist.divide_2/6

pred set.divide_by_set/4
pred set_ctree234.divide_by_set/4
pred set_ordlist.divide_by_set/4
pred set_tree234.divide_by_set/4

pred io.do_write_univ/4
pred io.do_write_univ/5

func pprint.doc/2
func pprint.doc/3

pred float.domain_checks/0
pred int.domain_checks/0
pred math.domain_checks/0

pred hash_table.double_munge/6
pred version_hash_table.double_munge/6

func list.duplicate/3
func list.duplicate/4

pred hash_table.dynamic_cast_to_array/2
pred pprint.dynamic_cast_to_array/2
pred version_hash_table.dynamic_cast_to_array/2

func array.elem/3
func array2d.elem/4
func assoc_list.elem/3
func bt_array.elem/3
func hash_table.elem/3
func map.elem/3
func string.elem/3
func version_array.elem/3
func version_array2d.elem/4
func version_hash_table.elem/3
func version_store.elem/3

func array.elem :=/4
func array2d.elem :=/5
func bt_array.elem :=/4
func hash_table.elem :=/4
func map.elem :=/4
func robdd.elem :=/4
func version_array.elem :=/4
func version_array2d.elem :=/5
func version_hash_table.elem :=/4
func version_store.elem :=/4

func cord.empty/1
pred set.empty/1
pred set_bbbtree.empty/1
pred set_ctree234.empty/1
pred set_ordlist.empty/1
pred set_tree234.empty/1
pred set_unordlist.empty/1
pred sparse_bitset.empty/1
func version_array.empty/1

pred eqvclass.ensure_element/3
pred sveqvclass.ensure_element/3

pred eqvclass.ensure_equivalence/4
pred sveqvclass.ensure_equivalence/4

pred bintree_set.equal/2
pred cord.equal/2
pred queue.equal/2
pred set.equal/2
pred set_bbbtree.equal/2
pred set_ctree234.equal/2
pred set_ordlist.equal/2
pred set_tree234.equal/2
pred set_unordlist.equal/2
pred sparse_bitset.equal/2

pred parser.error/3
pred require.error/1

func dir.expand/2
func hash_table.expand/2
func version_hash_table.expand/2

func array.fetch_items/4
func bt_array.fetch_items/4

func list.filter/3
pred list.filter/4
func set.filter/3
func sparse_bitset.filter/3

func list.filter_map/3
pred list.filter_map/4
func set.filter_map/3
func set_bbbtree.filter_map/3
func set_ctree234.filter_map/3
func set_ordlist.filter_map/3
func set_tree234.filter_map/3
func set_unordlist.filter_map/3

pred set_ctree234.filter_map_func/4
pred set_tree234.filter_map_func/4

pred set_ctree234.filter_map_pred/4
pred set_tree234.filter_map_pred/4

func hash_table.find_slot/3
func version_hash_table.find_slot/3

func hash_table.find_slot_2/5
func version_hash_table.find_slot_2/5

pred set_ctree234.fix_2node_t0/5
pred set_tree234.fix_2node_t0/5
pred tree234.fix_2node_t0/6

pred set_ctree234.fix_2node_t1/5
pred set_tree234.fix_2node_t1/5
pred tree234.fix_2node_t1/6

pred set_ctree234.fix_3node_t0/7
pred set_tree234.fix_3node_t0/7
pred tree234.fix_3node_t0/9

pred set_ctree234.fix_3node_t1/7
pred set_tree234.fix_3node_t1/7
pred tree234.fix_3node_t1/9

pred set_ctree234.fix_3node_t2/7
pred set_tree234.fix_3node_t2/7
pred tree234.fix_3node_t2/9

pred set_ctree234.fix_4node_t0/9
pred set_tree234.fix_4node_t0/9
pred tree234.fix_4node_t0/12

pred set_ctree234.fix_4node_t1/9
pred set_tree234.fix_4node_t1/9
pred tree234.fix_4node_t1/12

pred set_ctree234.fix_4node_t2/9
pred set_tree234.fix_4node_t2/9
pred tree234.fix_4node_t2/12

pred set_ctree234.fix_4node_t3/9
pred set_tree234.fix_4node_t3/9
pred tree234.fix_4node_t3/12

pred bitmap.flip/3
pred version_bitmap.flip/3

func float.float/2
func integer.float/2

pred hash_table.float_double_hash/3
pred version_hash_table.float_double_hash/3

pred io.flush_binary_output/2
pred io.flush_binary_output/3

pred io.flush_output/2
pred io.flush_output/3

func hash_table.fold/4
pred set.fold/4
func set_bbbtree.fold/4
func set_ctree234.fold/4
func set_ordlist.fold/4
func set_tree234.fold/4
func set_unordlist.fold/4
func version_hash_table.fold/4

func array.foldl/4
pred bimap.foldl/4
func cord.foldl/4
func list.foldl/4
pred map.foldl/4
pred rbtree.foldl/4
pred sparse_bitset.foldl/4
pred string.foldl/4
pred tree234.foldl/4
func version_array.foldl/4

pred bimap.foldl2/6
pred dir.foldl2/6
pred list.foldl2/6
pred map.foldl2/6
pred rbtree.foldl2/6
pred sparse_bitset.foldl2/6
pred string.foldl2/6
pred tree234.foldl2/6

pred bimap.foldl3/8
pred list.foldl3/8
pred map.foldl3/8
pred rbtree.foldl3/8
pred tree234.foldl3/8

pred list.foldl4/10
pred map.foldl4/10
pred tree234.foldl4/10

func array.foldr/4
func cord.foldr/4
func list.foldr/4
pred sparse_bitset.foldr/4
pred string.foldr/4
func version_array.foldr/4

pred io.format/4
pred io.format/5
pred string.format/3

func term_io.format_constant/2
func term_io.format_constant/3

func mdbcomp.slice_and_dice.format_float/3
func string.format_float/5

func bimap.forward_map/2
pred injection.forward_map/2

pred bimap.forward_search/3
pred injection.forward_search/3

pred bimap.from_assoc_list/2
func hash_table.from_assoc_list/3
pred map.from_assoc_list/2
pred multi_map.from_assoc_list/2
func pqueue.from_assoc_list/2
func rbtree.from_assoc_list/2
pred relation.from_assoc_list/2

func assoc_list.from_corresponding_lists/3
pred bimap.from_corresponding_lists/3
func bintree.from_corresponding_lists/3
pred map.from_corresponding_lists/3
pred multi_map.from_corresponding_lists/3

pred bintree.from_corresponding_lists_2/4
pred multi_map.from_corresponding_lists_2/4

pred char.from_int/2
func enum.from_int/2
func string.from_int/2

func array.from_list/2
func bag.from_list/2
func bintree.from_list/2
func bt_array.from_list/3
func cord.from_list/2
func queue.from_list/2
func set.from_list/2
func set_bbbtree.from_list/2
func set_ordlist.from_list/2
func set_unordlist.from_list/2
func version_array.from_list/2

func bag.from_set/2
func sparse_bitset.from_set/2

pred map.from_sorted_assoc_list/2
pred multi_map.from_sorted_assoc_list/2

func bintree.from_sorted_list/2
func set.from_sorted_list/2
func set_bbbtree.from_sorted_list/2
func set_ordlist.from_sorted_list/2
func set_unordlist.from_sorted_list/2

pred deconstruct.functor/4
pred std_util.functor/3

pred gc.garbage_collect/0
pred gc.garbage_collect/2

pred hash_table.generic_double_hash/3
pred version_hash_table.generic_double_hash/3

func bitmap.get/3
pred queue.get/3
func robdd.get/3
pred svqueue.get/3
func version_bitmap.get/3

pred queue.get_from_back/3
pred svqueue.get_from_back/3

pred construct.get_functor/5
pred rtti_implementation.get_functor/5
pred std_util.get_functor/5

pred construct.get_functor_ordinal/3
pred std_util.get_functor_ordinal/3

pred construct.get_functor_with_names/6
pred rtti_implementation.get_functor_with_names/6
pred std_util.get_functor_with_names/6

pred io.get_line_number/3
pred io.get_line_number/4

pred std_util.get_mutvar/2
pred store.get_mutvar/4
pred version_store.get_mutvar/4

pred io.get_output_line_number/3
pred io.get_output_line_number/4

pred getopt.get_short_option_arg/6
pred getopt_io.get_short_option_arg/6

pred lexer.get_token/4
pred parser.get_token/3
pred parser.get_token/4

func group.group/3
func pprint.group/2

pred getopt.handle_long_option/13
pred getopt_io.handle_long_option/15

pred getopt.handle_short_options/10
pred getopt_io.handle_short_options/12

pred std_util.has_type/2
pred type_desc.has_type/2

func float.hash/2
pred string.hash/2

func integer.head/2
func list.head/2

pred cord.head_tail/3
func integer.head_tail/2

pred io.ignore_whitespace/3
pred io.ignore_whitespace/4

pred array.in_bounds/2
pred array2d.in_bounds/3
pred bt_array.in_bounds/2
pred version_array2d.in_bounds/3

pred bitmap.in_range/2
pred version_bitmap.in_range/2

func array.init/3
func bag.init/1
pred bimap.init/1
pred bintree.init/1
func bintree_set.init/1
func bt_array.init/4
func counter.init/2
pred eqvclass.init/1
func graph.init/1
func group.init/1
pred injection.init/1
func map.init/1
pred multi_map.init/1
pred pqueue.init/1
func queue.init/1
pred random.init/2
pred rbtree.init/1
pred relation.init/1
func set.init/1
func set_bbbtree.init/1
func set_ctree234.init/1
func set_ordlist.init/1
func set_tree234.init/1
func set_unordlist.init/1
pred sparse_bitset.init/1
func stack.init/1
pred tree234.init/1
pred varset.init/1
func version_array.init/3
func version_array2d.init/4

pred getopt.init_option_table/2
pred getopt_io.init_option_table/2

pred getopt.init_option_table_multi/2
pred getopt_io.init_option_table_multi/2

pred io.init_state/2
pred parser.init_state/4

func bitmap.initializer/2
func version_bitmap.initializer/2

pred io.input_stream_foldl/5
pred io.input_stream_foldl/6

pred io.input_stream_foldl2_io/5
pred io.input_stream_foldl2_io/6

pred io.input_stream_foldl2_io_maybe_stop/5
pred io.input_stream_foldl2_io_maybe_stop/6

pred io.input_stream_foldl_io/4
pred io.input_stream_foldl_io/5

pred io.input_stream_name/3
pred io.input_stream_name/4

func bag.insert/3
pred bimap.insert/4
pred bintree.insert/4
func bintree_set.insert/3
func group.insert/3
pred injection.insert/4
pred list.insert/3
func map.insert/4
pred multi_map.insert/4
pred pqueue.insert/4
pred rbtree.insert/4
func robdd.insert/3
func set.insert/3
func set_bbbtree.insert/3
func set_ctree234.insert/3
func set_ordlist.insert/3
func set_tree234.insert/3
func set_unordlist.insert/3
pred sparse_bitset.insert/3
pred svbag.insert/3
pred svbimap.insert/4
pred svmap.insert/4
pred svmulti_map.insert/4
pred svset.insert/3
pred tree234.insert/4

pred set_ctree234.insert2/4
pred set_tree234.insert2/3
pred tree234.insert2/4

pred set_ctree234.insert3/4
pred set_tree234.insert3/3
pred tree234.insert3/4

pred pqueue.insert_2/6
pred rbtree.insert_2/4
func sparse_bitset.insert_2/3

pred bimap.insert_from_assoc_list/3
pred injection.insert_from_assoc_list/3

pred array.insert_items/4
pred bt_array.insert_items/4

func bag.insert_list/3
func bintree_set.insert_list/3
func set.insert_list/3
func set_bbbtree.insert_list/3
func set_ctree234.insert_list/3
func set_ordlist.insert_list/3
func set_tree234.insert_list/3
func set_unordlist.insert_list/3
pred sparse_bitset.insert_list/3
pred svbag.insert_list/3
pred svset.insert_list/3

func bag.insert_set/3
pred svbag.insert_set/3

pred hash_table.int_double_hash/3
pred version_hash_table.int_double_hash/3

func bitmap.int_offset/2
func version_bitmap.int_offset/2

pred bag.intersect/2
func bag.intersect/3
func bintree_set.intersect/3
func bitmap.intersect/3
func map.intersect/4
func set.intersect/3
func set_bbbtree.intersect/3
func set_ctree234.intersect/3
func set_ordlist.intersect/3
func set_tree234.intersect/3
func set_unordlist.intersect/3
pred sparse_bitset.intersect/3
func version_bitmap.intersect/3

pred bag.intersect_2/4
pred map.intersect_2/5
pred set_tree234.intersect_2/4
pred set_unordlist.intersect_2/4
func sparse_bitset.intersect_2/3

func set.intersect_list/2
func set_bbbtree.intersect_list/2
func set_ctree234.intersect_list/2
func set_ordlist.intersect_list/2
func set_tree234.intersect_list/2
func set_unordlist.intersect_list/2

pred map.inverse_search/3
pred multi_map.inverse_search/3

pred char.is_alnum_or_underscore/1
pred string.is_alnum_or_underscore/1

pred char.is_alpha/1
pred string.is_alpha/1

pred char.is_alpha_or_underscore/1
pred string.is_alpha_or_underscore/1

pred bitmap.is_clear/2
pred version_bitmap.is_clear/2

pred bag.is_empty/1
pred bimap.is_empty/1
pred injection.is_empty/1
pred list.is_empty/1
pred map.is_empty/1
pred multi_map.is_empty/1
pred queue.is_empty/1
pred rbtree.is_empty/1
pred stack.is_empty/1
pred tree234.is_empty/1
pred varset.is_empty/1

pred queue.is_full/1
pred stack.is_full/1

pred term.is_ground/1
pred term.is_ground/2

pred term.is_ground_2/1
pred term.is_ground_2/2

pred bintree_set.is_member/2
pred eqvclass.is_member/2
pred set.is_member/3
pred set_bbbtree.is_member/3
func set_ctree234.is_member/3
pred set_ordlist.is_member/3
func set_tree234.is_member/3
pred set_unordlist.is_member/3

pred bitmap.is_set/2
pred version_bitmap.is_set/2

func assoc_list.keys/2
func bintree.keys/2
pred injection.keys/2
pred map.keys/2
pred multi_map.keys/2
pred rbtree.keys/2
pred tree234.keys/2

pred bintree.keys_2/3
pred tree234.keys_2/3

func io.lambda_array_opt_191/4
func pprint.lambda_array_opt_191/4
func string.lambda_array_opt_191/4
func term.lambda_array_opt_191/4

pred construct.lambda_list_opt_178/5
pred cord.lambda_list_opt_178/5
pred dir.lambda_list_opt_178/5
pred exception.lambda_list_opt_178/5
pred multi_map.lambda_list_opt_178/5
pred pprint.lambda_list_opt_178/5
pred relation.lambda_list_opt_178/5
pred robdd.lambda_list_opt_178/5
pred set.lambda_list_opt_178/5
pred set_bbbtree.lambda_list_opt_178/5
pred set_ordlist.lambda_list_opt_178/5
pred set_unordlist.lambda_list_opt_178/5
pred std_util.lambda_list_opt_178/5
pred string.lambda_list_opt_178/5
pred term.lambda_list_opt_178/5
pred term_to_xml.lambda_list_opt_178/5

pred cord.lambda_list_opt_283/6
pred multi_map.lambda_list_opt_283/6
pred relation.lambda_list_opt_283/6
pred robdd.lambda_list_opt_283/6
pred set.lambda_list_opt_283/6
pred set_bbbtree.lambda_list_opt_283/6
pred set_ordlist.lambda_list_opt_283/6
pred set_unordlist.lambda_list_opt_283/6
pred string.lambda_list_opt_283/6

pred set.lambda_list_opt_392/5
pred set_bbbtree.lambda_list_opt_392/5
pred set_ordlist.lambda_list_opt_392/5
pred set_unordlist.lambda_list_opt_392/5

pred bimap.lambda_map_opt_176/8
pred injection.lambda_map_opt_176/8
pred multi_map.lambda_map_opt_176/8
pred robdd.lambda_map_opt_176/8

func pprint.lambda_sparse_bitset_opt_118/4
func relation.lambda_sparse_bitset_opt_118/4
func robdd.lambda_sparse_bitset_opt_118/4

pred pprint.lambda_sparse_bitset_opt_227/6
pred relation.lambda_sparse_bitset_opt_227/6
pred robdd.lambda_sparse_bitset_opt_227/6

pred hash_table.lambda_string_opt_449/5
pred term_io.lambda_string_opt_449/5
pred version_hash_table.lambda_string_opt_449/5

pred getopt_io.lambda_string_opt_525/2
pred pprint.lambda_string_opt_525/2

pred getopt_io.lambda_string_opt_779/2
pred pprint.lambda_string_opt_779/2

func cord.length/2
func integer.length/2
func list.length/2
func queue.length/2
pred string.length/2

pred deconstruct.limited_deconstruct/6
pred std_util.limited_deconstruct/5

pred deconstruct.limited_deconstruct_cc/3
pred std_util.limited_deconstruct_cc/3

func cord.list/2
func version_array.list/2

func bintree_set.list_to_set/2
func set.list_to_set/2
func set_bbbtree.list_to_set/2
func set_ctree234.list_to_set/2
func set_ordlist.list_to_set/2
func set_tree234.list_to_set/2
func set_unordlist.list_to_set/2
pred sparse_bitset.list_to_set/2

pred set_tree234.list_to_set_2/3
func sparse_bitset.list_to_set_2/3

func array2d.lists/2
func version_array2d.lists/2

func array2d.lists_2/7
func version_array2d.lists_2/7

pred int.log2/2
func math.log2/2

pred int.log2_2/3
func math.log2_2/2

func array.lookup/3
pred bimap.lookup/3
func bintree.lookup/3
func bt_array.lookup/3
func hash_table.lookup/3
pred injection.lookup/3
func map.lookup/3
pred multi_map.lookup/3
pred rbtree.lookup/3
pred relation.lookup/3
pred tree234.lookup/3
func version_array.lookup/3
func version_hash_table.lookup/3
func version_store.lookup/3

func getopt.lookup_accumulating_option/3
func getopt_io.lookup_accumulating_option/3

func getopt.lookup_bool_option/3
func getopt_io.lookup_bool_option/3

func getopt.lookup_int_option/3
func getopt_io.lookup_int_option/3

func getopt.lookup_maybe_int_option/3
func getopt_io.lookup_maybe_int_option/3

func getopt.lookup_maybe_string_option/3
func getopt_io.lookup_maybe_string_option/3

pred varset.lookup_name/3
pred varset.lookup_name/4

func getopt.lookup_string_option/3
func getopt_io.lookup_string_option/3

pred bintree.lower_bound_lookup/4
pred map.lower_bound_lookup/4
pred rbtree.lower_bound_lookup/4
pred tree234.lower_bound_lookup/4

pred bintree.lower_bound_search/4
pred map.lower_bound_search/4
pred rbtree.lower_bound_search/4
pred tree234.lower_bound_search/4

func string.lstrip/2
func string.lstrip/3

func array.make_empty_array/1
func bt_array.make_empty_array/2

pred io.make_err_msg/4
pred io.make_err_msg/5

func set.make_singleton_set/2
func set_bbbtree.make_singleton_set/2
func set_ctree234.make_singleton_set/2
func set_ordlist.make_singleton_set/2
func set_tree234.make_singleton_set/2
func set_unordlist.make_singleton_set/2
func sparse_bitset.make_singleton_set/2

pred io.make_temp/3
pred io.make_temp/5

func std_util.make_type/3
func type_desc.make_type/3

func array.map/3
func cord.map/3
func list.map/3
func set.map/3
func set_bbbtree.map/3
func set_ctree234.map/3
func set_ordlist.map/3
func set_tree234.map/3
func set_unordlist.map/3

pred list.map_foldl/5
pred map.map_foldl/5
pred tree234.map_foldl/5

pred list.map_foldl2/7
pred map.map_foldl2/7
pred tree234.map_foldl2/7

pred set_ctree234.map_func/4
pred set_tree234.map_func/4

pred bimap.map_keys/3
pred injection.map_keys/3

pred set_ctree234.map_pred/4
pred set_tree234.map_pred/4

func assoc_list.map_values/3
pred bimap.map_values/3
pred injection.map_values/3
pred map.map_values/3
pred rbtree.map_values/3
pred tree234.map_values/3

func array.max/2
func bt_array.max/2
func float.max/1
func float.max/3
pred int.max/3
func version_array.max/2

func map.max_key/2
func tree234.max_key/2

pred bintree_set.member/2
pred cord.member/2
pred list.member/2
pred list.member/3
pred map.member/3
pred multi_map.member/3
pred rbtree.member/3
pred set.member/2
pred set_bbbtree.member/2
pred set_ordlist.member/2
pred set_tree234.member/2
pred set_unordlist.member/2
pred sparse_bitset.member/2
pred tree234.member/3

pred injection.merge/3
func list.merge/3
func list.merge/4
pred map.merge/3
pred multi_map.merge/3
pred varset.merge/5

func list.merge_and_remove_dups/3
func list.merge_and_remove_dups/4

pred varset.merge_subst/4
pred varset.merge_subst/5

func array.min/2
func bt_array.min/2
func float.min/1
func float.min/3
pred int.min/3

func map.min_key/2
func tree234.min_key/2

func int.mod/3
func integer.mod/3

func float.multiply_by_pow/4
func int.multiply_by_pow/4

func hash_table.munge/4
func version_hash_table.munge/4

func hash_table.munge_factor_a/1
func version_hash_table.munge_factor_a/1

func hash_table.munge_factor_b/1
func version_hash_table.munge_factor_b/1

pred svvarset.name_var/4
pred varset.name_var/4

pred getopt.need_arg/2
pred getopt_io.need_arg/2

func array2d.new/4
func bitmap.new/3
func hash_table.new/4
pred store.new/1
func version_array.new/3
func version_array2d.new/4
func version_bitmap.new/3
func version_hash_table.new/4
func version_store.new/1

pred store.new_cyclic_mutvar/4
pred version_store.new_cyclic_mutvar/4

func hash_table.new_default/2
func version_hash_table.new_default/2

pred eqvclass.new_element/3
pred sveqvclass.new_element/3

pred eqvclass.new_equivalence/4
pred sveqvclass.new_equivalence/4

pred svvarset.new_maybe_named_var/4
pred varset.new_maybe_named_var/4

pred std_util.new_mutvar/2
pred store.new_mutvar/4
pred version_store.new_mutvar/4

pred svvarset.new_named_var/4
pred varset.new_named_var/4

pred svvarset.new_uniquely_named_var/4
pred varset.new_uniquely_named_var/4

pred svvarset.new_var/3
pred varset.new_var/3

pred svvarset.new_vars/4
pred varset.new_vars/4

pred io.nl/2
pred io.nl/3

pred std_util.non_cc_call/4
pred std_util.non_cc_call/5

pred construct.null/1
pred rtti_implementation.null/1

func bitmap.num_bits/2
func version_bitmap.num_bits/2

func hash_table.num_buckets/2
func version_hash_table.num_buckets/2

func construct.num_functors/2
func rtti_implementation.num_functors/2
func std_util.num_functors/2

func bitmap.num_ints_required/2
func version_bitmap.num_ints_required/2

func hash_table.num_occupants/2
func version_hash_table.num_occupants/2

pred getopt.numeric_argument/3
pred getopt_io.numeric_argument/3

func integer.one/1
func rational.one/1
func robdd.one/1

pred map.optimize/2
pred multi_map.optimize/2

pred io.output_stream_name/3
pred io.output_stream_name/4

pred bimap.overlay/3
pred injection.overlay/3
pred map.overlay/3

pred bimap.overlay_2/3
pred map.overlay_2/3

func pprint.packed/3
func pprint.packed/4

func pprint.packed_cs/2
func pprint.packed_cs/3

pred parser.peek_token/3
pred parser.peek_token/4

func float.pow/3
pred int.pow/3
pred integer.pow/3
func math.pow/3
func std_util.pow/4

func set.power_intersect/2
func set_bbbtree.power_intersect/2
func set_ctree234.power_intersect/2
func set_ordlist.power_intersect/2
func set_tree234.power_intersect/2
func set_unordlist.power_intersect/2

func set.power_union/2
func set_bbbtree.power_union/2
func set_ctree234.power_union/2
func set_ordlist.power_union/2
func set_tree234.power_union/2
func set_unordlist.power_union/2

pred set_ordlist.power_union_2/3
pred set_tree234.power_union_2/3
pred set_unordlist.power_union_2/3

pred io.print/3
pred io.print/4
pred io.print/5

pred getopt.process_arguments/9
pred getopt_io.process_arguments/11

pred getopt.process_negated_option/7
pred getopt_io.process_negated_option/7

pred getopt.process_option/9
pred getopt_io.process_option/11

pred getopt.process_options/4
pred getopt.process_options/5
pred getopt_io.process_options/6
pred getopt_io.process_options/7

pred getopt.process_options_track/7
pred getopt_io.process_options_track/9

pred getopt.process_special/8
pred getopt_io.process_special/8

func queue.put/3
pred svqueue.put/3

func queue.put_list/3
pred svqueue.put_list/3

pred queue.put_list_on_front/3
pred svqueue.put_list_on_front/3

pred queue.put_on_front/3
pred svqueue.put_on_front/3

pred io.putback_byte/3
pred io.putback_byte/4

pred io.putback_char/3
pred io.putback_char/4

pred term_io.quote_atom/3
pred term_io.quote_atom/4

func term_io.quoted_atom/2
func term_io.quoted_atom/3

pred random.random/3
pred random.random/5

func rational.rational/2
func rational.rational/3

pred io.read/3
pred io.read/4

pred io.read_binary/3
pred io.read_binary/4

pred io.read_binary_file/3
pred io.read_binary_file/4

pred io.read_byte/3
pred io.read_byte/4

pred io.read_char/3
pred io.read_char/4

pred io.read_file/3
pred io.read_file/4

pred io.read_file_as_string/3
pred io.read_file_as_string/4

pred io.read_from_string/6
pred io.read_from_string/7

pred io.read_line/3
pred io.read_line/4

pred io.read_line_as_string/3
pred io.read_line_as_string/4

pred parser.read_term/3
pred parser.read_term/4
pred term_io.read_term/3

pred parser.read_term_from_string/4
pred parser.read_term_from_string/6

pred parser.read_term_from_string_with_op_table/5
pred parser.read_term_from_string_with_op_table/7

pred parser.read_term_with_op_table/4
pred parser.read_term_with_op_table/5
pred term_io.read_term_with_op_table/4

pred io.read_word/3
pred io.read_word/4

func int.rem/3
func integer.rem/3

pred assoc_list.remove/4
pred bag.remove/3
pred bintree.remove/4
pred bintree_set.remove/3
pred map.remove/4
pred multi_map.remove/4
pred pqueue.remove/4
pred rbtree.remove/3
pred rbtree.remove/4
pred relation.remove/4
pred set.remove/3
pred set_bbbtree.remove/3
pred set_ctree234.remove/3
pred set_ordlist.remove/3
pred set_tree234.remove/3
pred set_unordlist.remove/3
pred sparse_bitset.remove/3
pred svbag.remove/3
pred svmap.remove/4
pred svmulti_map.remove/4
pred svrelation.remove/4
pred svset.remove/3
pred tree234.remove/4

pred pqueue.remove_2/3
pred set_tree234.remove_2/4
pred tree234.remove_2/5

func list.remove_adjacent_dups/2
pred list.remove_adjacent_dups/3

pred list.remove_adjacent_dups_2/3
pred list.remove_adjacent_dups_2/4

pred bag.remove_all/3
pred svbag.remove_all/3

pred relation.remove_assoc_list/3
pred svrelation.remove_assoc_list/3

func eqvclass.remove_equivalent_elements/3
pred sveqvclass.remove_equivalent_elements/3

pred rbtree.remove_largest/4
pred set_bbbtree.remove_largest/3

pred set.remove_least/3
pred set_bbbtree.remove_least/3
pred set_ctree234.remove_least/3
pred set_ordlist.remove_least/3
pred set_tree234.remove_least/3
pred set_unordlist.remove_least/3
pred sparse_bitset.remove_least/3
pred svset.remove_least/3

pred bag.remove_list/3
pred bintree_set.remove_list/3
pred set.remove_list/3
pred set_bbbtree.remove_list/3
pred set_ctree234.remove_list/3
pred set_ordlist.remove_list/3
pred set_tree234.remove_list/3
pred set_unordlist.remove_list/3
pred sparse_bitset.remove_list/3
pred svbag.remove_list/3
pred svset.remove_list/3

pred bag.remove_set/3
pred svbag.remove_set/3

pred bag.remove_smallest/3
pred map.remove_smallest/4
pred multi_map.remove_smallest/4
pred rbtree.remove_smallest/4
pred svbag.remove_smallest/3
pred svmap.remove_smallest/4
pred svmulti_map.remove_smallest/4
pred tree234.remove_smallest/4

pred list.remove_suffix/3
pred string.remove_suffix/3

pred list.replace/4
pred string.replace/4

func list.replace_all/4
pred string.replace_all/4
func string.replace_all/7

pred benchmarking.report_full_memory_stats/0
pred io.report_full_memory_stats/2

pred require.report_lookup_error/2
pred require.report_lookup_error/3

pred benchmarking.report_stats/0
pred io.report_stats/2
pred io.report_stats/3

func array.resize/4
func bitmap.resize/4
func bt_array.resize/5
pred svarray.resize/4
pred version_array.resize/4
func version_array2d.resize/5
pred version_bitmap.resize/4
func version_store.resize/3

func robdd.restrict_filter/3
func robdd.restrict_filter/4

pred exception.rethrow/1
func exception.rethrow/2

pred bimap.reverse_lookup/3
pred injection.reverse_lookup/3
pred relation.reverse_lookup/3

func bimap.reverse_map/2
pred injection.reverse_map/2
func map.reverse_map/2

pred bimap.reverse_search/3
pred injection.reverse_search/3

pred robdd.robdd_to_dot/4
pred robdd.robdd_to_dot/5

func string.rstrip/2
func string.rstrip/3

pred io.same_array_elem_type/2
pred rtti_implementation.same_array_elem_type/2
pred string.same_array_elem_type/2

pred io.same_private_builtin_type/2
pred string.same_private_builtin_type/2

pred assoc_list.search/3
pred bimap.search/3
pred bintree.search/3
pred hash_table.search/3
pred injection.search/3
func map.search/3
pred multi_map.search/3
pred rbtree.search/3
pred tree234.search/3
pred version_hash_table.search/3

pred map.select/3
pred multi_map.select/3
pred svvarset.select/3
pred varset.select/3

pred array.semidet_lookup/3
pred bt_array.semidet_lookup/3

pred array.semidet_set/4
pred bt_array.semidet_set/4
pred svarray.semidet_set/4

pred array.semidet_slow_set/4
pred svarray.semidet_slow_set/4

func array.set/4
pred array2d.set/5
pred bimap.set/4
func bintree.set/4
pred bitmap.set/3
func bt_array.set/4
pred hash_table.set/4
pred injection.set/4
pred map.set/4
pred multi_map.set/4
pred rbtree.set/4
func set.set/2
pred svarray.set/4
pred svbimap.set/4
pred svmap.set/4
pred svmulti_map.set/4
pred tree234.set/4
pred version_array.set/4
pred version_array2d.set/5
pred version_bitmap.set/3
pred version_hash_table.set/4
func version_store.set/4

pred injection.set_2/6
pred rbtree.set_2/4

pred bimap.set_from_assoc_list/3
pred injection.set_from_assoc_list/3
func map.set_from_assoc_list/3
pred svmap.set_from_assoc_list/3

pred bimap.set_from_corresponding_lists/4
pred injection.set_from_corresponding_lists/4
func map.set_from_corresponding_lists/4
pred svmap.set_from_corresponding_lists/4

pred io.set_line_number/3
pred io.set_line_number/4

pred std_util.set_mutvar/2
pred store.set_mutvar/4
pred version_store.set_mutvar/4

pred io.set_output_line_number/3
pred io.set_output_line_number/4

func array.shrink/3
func bt_array.shrink/4
pred svarray.shrink/3

func integer.signum/2
func rational.signum/2

pred bintree_set.singleton_set/2
pred set.singleton_set/2
pred set_bbbtree.singleton_set/2
pred set_ctree234.singleton_set/2
pred set_ordlist.singleton_set/2
pred set_tree234.singleton_set/2
pred set_unordlist.singleton_set/2
pred sparse_bitset.singleton_set/2

func array.size/2
func bt_array.size/2
pred robdd.size/3
pred robdd.size/4
pred set_bbbtree.size/2
func version_array.size/2
func version_store.size/2

func array.slow_set/4
pred svarray.slow_set/4

func array.sort/2
func list.sort/2
func list.sort/3

func list.sort_and_remove_dups/2
pred list.sort_and_remove_dups/3

func bintree_set.sorted_list_to_set/2
func set.sorted_list_to_set/2
func set_bbbtree.sorted_list_to_set/2
func set_ctree234.sorted_list_to_set/2
func set_ordlist.sorted_list_to_set/2
func set_tree234.sorted_list_to_set/2
func set_unordlist.sorted_list_to_set/2
pred sparse_bitset.sorted_list_to_set/2

pred set_ctree234.split_four/4
pred set_tree234.split_four/4
pred tree234.split_four/5

func string.string/2
func string.string/3
pred string.string/4

pred hash_table.string_double_hash/3
pred version_hash_table.string_double_hash/3

pred lexer.string_get_token_list/4
pred lexer.string_get_token_list/5

pred string.sub_string_search/3
pred string.sub_string_search/4

pred bintree_set.subset/2
pred set.subset/2
pred set_bbbtree.subset/2
pred set_ctree234.subset/2
pred set_ordlist.subset/2
pred set_tree234.subset/2
pred set_unordlist.subset/2
pred sparse_bitset.subset/2

func bag.subtract/3
pred svbag.subtract/3

pred bintree_set.superset/2
pred set.superset/2
pred set_bbbtree.superset/2
pred set_ctree234.superset/2
pred set_ordlist.superset/2
pred set_tree234.superset/2
pred set_unordlist.superset/2
pred sparse_bitset.superset/2

func mdbcomp.prim_data.sym_name_to_string/2
func mdbcomp.prim_data.sym_name_to_string/3

func integer.tail/2
func list.tail/2

pred exception.throw/1
func exception.throw/2

func int.times/3
pred time.times/4

pred io.tmpnam/3
pred io.tmpnam/5

func bag.to_assoc_list/2
pred bimap.to_assoc_list/2
func hash_table.to_assoc_list/2
pred map.to_assoc_list/2
pred multi_map.to_assoc_list/2
pred pqueue.to_assoc_list/2
func rbtree.to_assoc_list/2
pred relation.to_assoc_list/2
func version_hash_table.to_assoc_list/2

func hash_table.to_assoc_list_2/4
pred relation.to_assoc_list_2/5

func pprint.to_doc/2
func pprint.to_doc/3
func pprint.to_doc/4

pred int.to_float/2
pred string.to_float/2

pred char.to_int/2
func enum.to_int/2
pred string.to_int/2

func array.to_list/2
func bag.to_list/2
func bintree.to_list/2
func bt_array.to_list/2
func queue.to_list/2
func version_array.to_list/2

pred bag.to_list_2/2
pred bintree.to_list_2/3

pred char.to_lower/2
pred string.to_lower/2

func bag.to_set/2
func group.to_set/2
func sparse_bitset.to_set/2

func bintree_set.to_sorted_list/2
func set.to_sorted_list/2
func set_bbbtree.to_sorted_list/2
func set_ctree234.to_sorted_list/2
func set_ordlist.to_sorted_list/2
func set_tree234.to_sorted_list/2
func set_unordlist.to_sorted_list/2
pred sparse_bitset.to_sorted_list/2

func integer.to_string/2
func pprint.to_string/3

pred char.to_upper/2
pred string.to_upper/2

pred map.transform_value/4
pred rbtree.transform_value/4
pred tree234.transform_value/4

pred exception.try/2
pred exception.try/3

pred exception.try_all/2
pred exception.try_all/3
pred exception.try_all/4

pred exception.try_io/4
pred exception.try_io/5

pred exception.try_store/4
pred exception.try_store/5

pred term.try_term_to_type/2
pred term.try_term_to_type/3

func std_util.type_args/2
func type_desc.type_args/2

func std_util.type_ctor/2
func type_desc.type_ctor/2

pred rtti_implementation.type_ctor_and_args/3
pred std_util.type_ctor_and_args/3
pred type_desc.type_ctor_and_args/3

func rtti_implementation.type_ctor_arity/2
func std_util.type_ctor_arity/2
func type_desc.type_ctor_arity/2

func rtti_implementation.type_ctor_module_name/2
func std_util.type_ctor_module_name/2
func type_desc.type_ctor_module_name/2

func rtti_implementation.type_ctor_name/2
func std_util.type_ctor_name/2
func type_desc.type_ctor_name/2

pred rtti_implementation.type_ctor_name_and_arity/4
pred std_util.type_ctor_name_and_arity/4
pred type_desc.type_ctor_name_and_arity/4

func std_util.type_name/2
func type_desc.type_name/2

func std_util.type_of/2
func type_desc.type_of/2

func float.unchecked_quotient/3
func int.unchecked_quotient/3

pred term.unify/4
pred term.unify/5

pred term.unify_list/4
pred term.unify_list/5

func bag.union/3
func bintree_set.union/3
func bitmap.union/3
pred map.union/4
func set.union/3
func set_bbbtree.union/3
func set_ctree234.union/3
func set_ordlist.union/3
func set_tree234.union/3
func set_unordlist.union/3
pred sparse_bitset.union/3
func version_bitmap.union/3

pred map.union_2/5
func sparse_bitset.union_2/3

func set.union_list/2
func set_bbbtree.union_list/2
func set_ctree234.union_list/2
func set_ordlist.union_list/2
func set_tree234.union_list/2
func set_unordlist.union_list/2

func array2d.unsafe_elem/4
func string.unsafe_elem/3

func rtti_implementation.unsafe_index/3
pred string.unsafe_index/3

pred version_array.unsafe_rewind/2
func version_array2d.unsafe_rewind/2
pred version_bitmap.unsafe_rewind/2
pred version_store.unsafe_rewind/2

pred array.unsafe_set/4
pred array2d.unsafe_set/5
pred bitmap.unsafe_set/3

pred bintree.update/4
pred injection.update/4
func map.update/4
pred multi_map.update/4
pred rbtree.update/4
pred svmap.update/4
pred svmulti_map.update/4
pred tree234.update/4

pred bintree.upper_bound_lookup/4
pred map.upper_bound_lookup/4
pred rbtree.upper_bound_lookup/4
pred tree234.upper_bound_lookup/4

pred bintree.upper_bound_search/4
pred map.upper_bound_search/4
pred rbtree.upper_bound_search/4
pred tree234.upper_bound_search/4

pred string.value_to_revstrings/5
pred string.value_to_revstrings/6

func assoc_list.values/2
func bintree.values/2
pred injection.values/2
pred map.values/2
pred multi_map.values/2
pred rbtree.values/2
pred tree234.values/2

pred bintree.values_2/3
pred tree234.values_2/3

pred term.vars/2
pred varset.vars/2

pred term.vars_2/3
func varset.vars_2/4

pred library.version/1
pred mdbcomp.version/1

func string.word_wrap/3
func string.word_wrap/4

func string.words/2
func string.words/3

pred io.write/3
pred io.write/4
pred io.write/5
pred pprint.write/4
pred pprint.write/5

pred io.write_binary/3
pred io.write_binary/4

pred io.write_byte/3
pred io.write_byte/4

pred io.write_bytes/3
pred io.write_bytes/4

pred io.write_char/3
pred io.write_char/4

pred term_io.write_constant/3
pred term_io.write_constant/4

pred term_to_xml.write_dtd/5
pred term_to_xml.write_dtd/6

pred term_to_xml.write_dtd_from_type/5
pred term_to_xml.write_dtd_from_type/6

pred io.write_float/3
pred io.write_float/4

pred io.write_int/3
pred io.write_int/4

pred io.write_list/5
pred io.write_list/6

pred io.write_list_tail/4
pred term_io.write_list_tail/8

pred io.write_many/3
pred io.write_many/4

pred io.write_string/3
pred io.write_string/4

pred io.write_strings/3
pred io.write_strings/4

pred io.write_term_args/4
pred term_io.write_term_args/8

pred io.write_univ/3
pred io.write_univ/4
pred io.write_univ/5

pred term_to_xml.write_xml_doc/3
pred term_to_xml.write_xml_doc/4
pred term_to_xml.write_xml_doc/5
pred term_to_xml.write_xml_doc/6
pred term_to_xml.write_xml_doc/7
pred term_to_xml.write_xml_doc/8

pred term_to_xml.write_xml_doc_cc/7
pred term_to_xml.write_xml_doc_cc/8

pred term_to_xml.write_xml_element/4
pred term_to_xml.write_xml_element/5
pred term_to_xml.write_xml_element/6

pred term_to_xml.write_xml_header/3
pred term_to_xml.write_xml_header/4

func bool.xor/3
func int.xor/3
func integer.xor/3

func integer.zero/1
func rational.zero/1
func robdd.zero/1

func bitmap.zip/5
func list.zip/3
func version_bitmap.zip/5

Ambiguous type names:

graph.arc/0
graph.arc/1

mdb.debugger_interface.arity/0
mdb.name_mangle.arity/0

assoc_list.assoc_list/1
assoc_list.assoc_list/2

exception.determinism/0
mdb.debugger_interface.determinism/0

mdb.debugger_interface.event_number/0
mdb.declarative_execution.event_number/0

graph.graph/1
graph.graph/2

hash_table.hash_pred/1
version_hash_table.hash_pred/1

std_util.maybe_error/0
std_util.maybe_error/1

getopt.maybe_option_table/1
getopt_io.maybe_option_table/1

mdb.name_mangle.module_name/0
mdbcomp.prim_data.module_name/0

private_builtin.mutvar/1
std_util.mutvar/1
version_store.mutvar/2

graph.node/1
mdb.help.node/0

getopt.option_data/0
getopt_io.option_data/0

getopt.option_ops/1
getopt_io.option_ops/1

getopt.option_ops_internal/1
getopt_io.option_ops_internal/1

getopt.option_ops_special/1
getopt_io.option_ops_special/1

getopt.option_ops_track/1
getopt_io.option_ops_track/1

getopt.option_table/1
getopt_io.option_table/1

std_util.pair/1
std_util.pair/2

mdb.help.path/0
mdb.parse.path/0

io.poly_type/0
string.poly_type/0

mdbcomp.rtti_access.proc_layout/0
profiling_builtin.proc_layout/0

term_io.read_term/0
term_io.read_term/1

io.res/0
io.res/1
mdb.help.res/0

io.result/0
io.result/1
mdb.dl.result/0
mdb.dl.result/1

robdd.robdd/0
robdd.robdd/1

set_ctree234.set_tree234/1
set_tree234.set_tree234/1

getopt.special_data/0
getopt_io.special_data/0

ops.specifier/0
string.specifier/0

io.state/0
parser.state/2

dir.stream/0
io.stream/0

term.substitution/0
term.substitution/1

mdb.name_mangle.sym_name/0
mdbcomp.prim_data.sym_name/0

term.term/0
term.term/1

term.term_to_type_result/1
term.term_to_type_result/2

builtin.ticket/0
private_builtin.ticket/0

lexer.token/0
mdb.parse.token/0

std_util.type_ctor_desc/0
type_desc.type_ctor_desc/0

private_builtin.type_ctor_info/0
rtti_implementation.type_ctor_info/0
std_util.type_ctor_info/0

std_util.type_desc/0
type_desc.type_desc/0

private_builtin.type_info/0
rtti_implementation.type_info/0
std_util.type_info/0

std_util.unit/0
std_util.unit/1

term.var/0
term.var/1

varset.varset/0
varset.varset/1

cvs diff: Diffing .
cvs diff: Diffing analysis
cvs diff: Diffing bindist
cvs diff: Diffing boehm_gc
cvs diff: Diffing boehm_gc/Mac_files
cvs diff: Diffing boehm_gc/cord
cvs diff: Diffing boehm_gc/cord/private
cvs diff: Diffing boehm_gc/doc
cvs diff: Diffing boehm_gc/include
cvs diff: Diffing boehm_gc/include/private
cvs diff: Diffing boehm_gc/tests
cvs diff: Diffing browser
cvs diff: Diffing bytecode
cvs diff: Diffing compiler
cvs diff: Diffing compiler/notes
cvs diff: Diffing debian
cvs diff: Diffing debian/patches
cvs diff: Diffing deep_profiler
cvs diff: Diffing deep_profiler/notes
cvs diff: Diffing doc
Index: doc/mdb_categories
===================================================================
RCS file: /home/mercury/mercury1/repository/mercury/doc/mdb_categories,v
retrieving revision 1.28
diff -u -b -r1.28 mdb_categories
--- doc/mdb_categories	1 Aug 2005 02:40:05 -0000	1.28
+++ doc/mdb_categories	25 Oct 2005 03:50:13 -0000
@@ -27,7 +27,8 @@
 browsing   - Commands that let users explore the state of the computation.
              The browsing commands are `vars', `held_vars', `print', `browse',
              `stack', `up', `down', `level', `current', `view', `hold',
-             `diff' and `save_to_file'.
+             `diff', `save_to_file', `list', `push_list_dir' and
+             `pop_list_dir'.
 
 end
 document_category 500 breakpoint
@@ -44,8 +45,8 @@
 document_category 700 parameter
 parameter  - Commands that let users access debugger parameters.
              The parameter commands are `set', `printlevel', `echo', `context',
-             `goal_paths' `scroll', `mmc_options', `scope', `alias' and
-             `unalias'.
+             `goal_paths' `scroll', `mmc_options', `scope', `alias',
+             `unalias', and `stack_default_limit'.
 
 end
 document_category 800 help
@@ -84,6 +85,7 @@
              `pneg_stack', `mm_stacks', `nondet_stack', `stack_regs',
              `all_regs', `debug_vars', `stats', `print_optionals',
              `unhide_events', `dd_dd', `table', `type_ctor', `class_decl',
-             `all_type_ctors' and `all_class_decls'.
+             `all_type_ctors', `all_class_decls', `all_procedures' and
+             `ambiguity'.
 
 end
Index: doc/user_guide.texi
===================================================================
RCS file: /home/mercury/mercury1/repository/mercury/doc/user_guide.texi,v
retrieving revision 1.455
diff -u -b -r1.455 user_guide.texi
--- doc/user_guide.texi	24 Oct 2005 02:02:17 -0000	1.455
+++ doc/user_guide.texi	24 Oct 2005 14:27:01 -0000
@@ -4003,6 +4003,18 @@
 the list will include the procedures of
 compiler generated unify, compare, index and initialization predicates.
 Normally, the list includes the procedures of only user defined predicates.
+ at sp 1
+ at item ambiguity [@var{filename}]
+ at kindex ambiguity (mdb command)
+Print all ambiguous predicate, function and type names,
+to the named file if a filename is given,
+and to standard output otherwise.
+A predicate or function name is ambiguous
+if a predicate or function is defined with that name
+in more than one module or with more than one arity.
+A type name is ambiguous
+if a type is defined with that name
+in more than one module or with more than one arity.
 @end table
 
 @node Declarative debugging
cvs diff: Diffing extras
cvs diff: Diffing extras/aditi
cvs diff: Diffing extras/cgi
cvs diff: Diffing extras/complex_numbers
cvs diff: Diffing extras/complex_numbers/samples
cvs diff: Diffing extras/complex_numbers/tests
cvs diff: Diffing extras/concurrency
cvs diff: Diffing extras/curs
cvs diff: Diffing extras/curs/samples
cvs diff: Diffing extras/curses
cvs diff: Diffing extras/curses/sample
cvs diff: Diffing extras/dynamic_linking
cvs diff: Diffing extras/error
cvs diff: Diffing extras/graphics
cvs diff: Diffing extras/graphics/easyx
cvs diff: Diffing extras/graphics/easyx/samples
cvs diff: Diffing extras/graphics/mercury_glut
cvs diff: Diffing extras/graphics/mercury_opengl
cvs diff: Diffing extras/graphics/mercury_tcltk
cvs diff: Diffing extras/graphics/samples
cvs diff: Diffing extras/graphics/samples/calc
cvs diff: Diffing extras/graphics/samples/gears
cvs diff: Diffing extras/graphics/samples/maze
cvs diff: Diffing extras/graphics/samples/pent
cvs diff: Diffing extras/lazy_evaluation
cvs diff: Diffing extras/lex
cvs diff: Diffing extras/lex/samples
cvs diff: Diffing extras/lex/tests
cvs diff: Diffing extras/logged_output
cvs diff: Diffing extras/moose
cvs diff: Diffing extras/moose/samples
cvs diff: Diffing extras/moose/tests
cvs diff: Diffing extras/morphine
cvs diff: Diffing extras/morphine/non-regression-tests
cvs diff: Diffing extras/morphine/scripts
cvs diff: Diffing extras/morphine/source
cvs diff: Diffing extras/odbc
cvs diff: Diffing extras/posix
cvs diff: Diffing extras/quickcheck
cvs diff: Diffing extras/quickcheck/tutes
cvs diff: Diffing extras/references
cvs diff: Diffing extras/references/samples
cvs diff: Diffing extras/references/tests
cvs diff: Diffing extras/solver_types
cvs diff: Diffing extras/solver_types/library
cvs diff: Diffing extras/stream
cvs diff: Diffing extras/trailed_update
cvs diff: Diffing extras/trailed_update/samples
cvs diff: Diffing extras/trailed_update/tests
cvs diff: Diffing extras/xml
cvs diff: Diffing extras/xml/samples
cvs diff: Diffing extras/xml_stylesheets
cvs diff: Diffing java
cvs diff: Diffing java/runtime
cvs diff: Diffing library
cvs diff: Diffing mdbcomp
cvs diff: Diffing profiler
cvs diff: Diffing robdd
cvs diff: Diffing runtime
Index: runtime/mercury_layout_util.c
===================================================================
RCS file: /home/mercury/mercury1/repository/mercury/runtime/mercury_layout_util.c,v
retrieving revision 1.36
diff -u -b -r1.36 mercury_layout_util.c
--- runtime/mercury_layout_util.c	7 Jul 2004 07:11:12 -0000	1.36
+++ runtime/mercury_layout_util.c	24 Oct 2005 12:03:04 -0000
@@ -1,4 +1,7 @@
 /*
+** vim: ts=4 sw=4 expandtab
+*/
+/*
 ** Copyright (C) 1998-2004 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.
@@ -92,18 +95,13 @@
 		int			i;
 
 		count = tvar_locns->MR_tp_param_count;
-		type_params = (MR_TypeInfoParams)
-			MR_NEW_ARRAY(MR_Word, count + 1);
+        type_params = (MR_TypeInfoParams) MR_NEW_ARRAY(MR_Word, count + 1);
 
 		for (i = 0; i < count; i++) {
-			if (tvar_locns->MR_tp_param_locns[i] != 0)
-			{
+            if (tvar_locns->MR_tp_param_locns[i] != 0) {
 				type_params[i + 1] = (MR_TypeInfo)
-					MR_lookup_long_lval_base(
-						tvar_locns->
-							MR_tp_param_locns[i],
-						saved_regs, base_sp, base_curfr,
-						&succeeded);
+                    MR_lookup_long_lval_base(tvar_locns->MR_tp_param_locns[i],
+                        saved_regs, base_sp, base_curfr, &succeeded);
 				if (! succeeded) {
 					MR_fatal_error("missing type param in "
 					    "MR_materialize_type_params_base");
@@ -135,13 +133,10 @@
 			MR_NEW_ARRAY(MR_Word, count + 1);
 
 		for (i = 0; i < count; i++) {
-			if (tvar_locns->MR_tp_param_locns[i] != 0)
-			{
+            if (tvar_locns->MR_tp_param_locns[i] != 0) {
 				type_params[i + 1] = (MR_TypeInfo)
 					MR_lookup_closure_long_lval(
-						tvar_locns->
-							MR_tp_param_locns[i],
-						closure, &succeeded);
+                        tvar_locns->MR_tp_param_locns[i], closure, &succeeded);
 				if (! succeeded) {
 					MR_fatal_error("missing type param in "
 					  "MR_materialize_closure_type_params");
@@ -177,8 +172,7 @@
 			{
 				type_params[i + 1] = (MR_TypeInfo)
 					MR_lookup_typeclass_info_long_lval(
-						tvar_locns->
-							MR_tp_param_locns[i],
+                        tvar_locns->MR_tp_param_locns[i],
 						typeclass_info, &succeeded);
 				if (! succeeded) {
 					MR_fatal_error("missing type param in "
@@ -208,14 +202,11 @@
 			MR_NEW_ARRAY(MR_Word, count + 1);
 
 		for (i = 0; i < count; i++) {
-			if (tvar_locns->MR_tp_param_locns[i] != 0)
-			{
+            if (tvar_locns->MR_tp_param_locns[i] != 0) {
 				type_params[i + 1] = (MR_TypeInfo)
 					MR_lookup_answer_block_long_lval(
-						tvar_locns->
-							MR_tp_param_locns[i],
-						answer_block, block_size,
-						&succeeded);
+                        tvar_locns->MR_tp_param_locns[i], answer_block,
+                        block_size, &succeeded);
 				if (! succeeded) {
 					MR_fatal_error("missing type param in "
 				     "MR_materialize_answer_block_type_params");
@@ -259,8 +250,7 @@
 MR_lookup_long_lval(MR_Long_Lval locn, MR_Word *saved_regs, MR_bool *succeeded)
 {
 	return MR_lookup_long_lval_base(locn, saved_regs,
-		MR_saved_sp(saved_regs), MR_saved_curfr(saved_regs),
-		succeeded);
+        MR_saved_sp(saved_regs), MR_saved_curfr(saved_regs), succeeded);
 }
 
 static MR_Word
@@ -283,8 +273,7 @@
 				printf("closure r%d\n", locn_num);
 			}
 			if (locn_num <= closure->MR_closure_num_hidden_args) {
-				value = closure->
-					MR_closure_hidden_args(locn_num);
+                value = closure->MR_closure_hidden_args(locn_num);
 				*succeeded = MR_TRUE;
 			}
 			break;
@@ -343,13 +332,12 @@
 			if (MR_print_locn) {
 				printf("closure offset %d from ", offset);
 			}
-			baseaddr = MR_lookup_closure_long_lval(sublocn,
-					closure, succeeded);
+            baseaddr = MR_lookup_closure_long_lval(sublocn, closure,
+                succeeded);
 			if (! *succeeded) {
 				break;
 			}
-			value = MR_typeclass_info_param_type_info(baseaddr,
-				offset);
+            value = MR_typeclass_info_param_type_info(baseaddr, offset);
 			*succeeded = MR_TRUE;
 			break;
 
@@ -389,11 +377,10 @@
 				printf("typeclassinfo r%d\n", locn_num);
 			}
 			if (locn_num <= 
-				MR_typeclass_info_num_extra_instance_args(
-					typeclass_info))
+                MR_typeclass_info_num_extra_instance_args(typeclass_info))
 			{
-				value = MR_typeclass_info_arg_typeclass_info(
-					typeclass_info, locn_num);
+                value = MR_typeclass_info_arg_typeclass_info(typeclass_info,
+                    locn_num);
 				*succeeded = MR_TRUE;
 			}
 			break;
@@ -457,8 +444,7 @@
 			if (! *succeeded) {
 				break;
 			}
-			value = MR_typeclass_info_param_type_info(baseaddr,
-				offset);
+            value = MR_typeclass_info_param_type_info(baseaddr, offset);
 			*succeeded = MR_TRUE;
 			break;
 
@@ -557,13 +543,12 @@
 			if (MR_print_locn) {
 				printf("answer_block offset %d from ", offset);
 			}
-			baseaddr = MR_lookup_answer_block_long_lval(sublocn,
-					answer_block, block_size, succeeded);
+            baseaddr = MR_lookup_answer_block_long_lval(sublocn, answer_block,
+                block_size, succeeded);
 			if (! *succeeded) {
 				break;
 			}
-			value = MR_typeclass_info_param_type_info(baseaddr,
-				offset);
+            value = MR_typeclass_info_param_type_info(baseaddr, offset);
 			*succeeded = MR_TRUE;
 			break;
 
@@ -603,8 +588,7 @@
 				printf("long r%d\n", locn_num);
 			}
 			if (saved_regs != NULL) {
-				value = MR_saved_reg_value(saved_regs,
-					locn_num);
+                value = MR_saved_reg_value(saved_regs, locn_num);
 				*succeeded = MR_TRUE;
 			}
 			break;
@@ -667,14 +651,12 @@
 			if (MR_print_locn) {
 				printf("long offset %d from ", offset);
 			}
-			baseaddr = MR_lookup_long_lval_base(sublocn,
-					saved_regs, base_sp, base_curfr,
-					succeeded);
+            baseaddr = MR_lookup_long_lval_base(sublocn, saved_regs,
+                base_sp, base_curfr, succeeded);
 			if (! *succeeded) {
 				break;
 			}
-			value = MR_typeclass_info_param_type_info(baseaddr,
-				offset);
+            value = MR_typeclass_info_param_type_info(baseaddr, offset);
 			*succeeded = MR_TRUE;
 			break;
 
@@ -699,8 +681,7 @@
 			MR_bool *succeeded)
 {
 	return MR_lookup_short_lval_base(locn, saved_regs,
-		MR_saved_sp(saved_regs), MR_saved_curfr(saved_regs),
-		succeeded);
+        MR_saved_sp(saved_regs), MR_saved_curfr(saved_regs), succeeded);
 }
 
 MR_Word
@@ -720,8 +701,7 @@
 				printf("short r%d\n", locn_num);
 			}
 			if (saved_regs != NULL) {
-				value = MR_saved_reg_value(saved_regs,
-					locn_num);
+                value = MR_saved_reg_value(saved_regs, locn_num);
 				*succeeded = MR_TRUE;
 			}
 			break;
@@ -873,19 +853,17 @@
 			*arity_ptr = 3;
 		} else if (MR_streq(*proc_name_ptr, "__Index__")) {
 			*arity_ptr = 2;
+        } else if (MR_streq(*proc_name_ptr, "__Initialise__")) {
+            *arity_ptr = 1;
 		} else {
 			MR_fatal_error("MR_generate_proc_name_from_layout: "
 				"bad MR_comp_pred_name");
 		}
 		*is_func_ptr = MR_BOOL_NO;
 	} else {
-		*proc_name_ptr = proc_layout->MR_sle_proc_id.
-			MR_proc_user.MR_user_name;
-		*arity_ptr = proc_layout->MR_sle_proc_id.
-			MR_proc_user.MR_user_arity;
-		if (proc_layout->MR_sle_proc_id.MR_proc_user.
-				MR_user_pred_or_func == MR_FUNCTION)
-		{
+        *proc_name_ptr = proc_layout->MR_sle_proc_id.MR_proc_user.MR_user_name;
+        *arity_ptr = proc_layout->MR_sle_proc_id. MR_proc_user.MR_user_arity;
+        if (proc_layout->MR_sle_user.MR_user_pred_or_func == MR_FUNCTION) {
 			*is_func_ptr = MR_BOOL_YES;
 		} else {
 			*is_func_ptr = MR_BOOL_NO;
@@ -902,9 +880,10 @@
 		** MR_comp_type_arity is the arity of the type constructor.
 		** Each argument of the type constructor adds a typeinfo
 		** argument to the headvars for all predicates, unify, compare
-		** and index. (The index predicate doesn't need these
-		** typeinfos, but it has them anyway.)
+        ** and index. (The index predicate doesn't need these typeinfos,
+        ** but it has them anyway.)
 		*/
+
 		*num_added_args_ptr = proc->MR_sle_uci.MR_uci_type_arity;
 		*arity_ptr = proc->MR_sle_num_head_vars - *num_added_args_ptr;
 		*pred_or_func_ptr = MR_PREDICATE;
Index: runtime/mercury_type_tables.c
===================================================================
RCS file: /home/mercury/mercury1/repository/mercury/runtime/mercury_type_tables.c,v
retrieving revision 1.10
diff -u -b -r1.10 mercury_type_tables.c
--- runtime/mercury_type_tables.c	24 Feb 2004 08:49:55 -0000	1.10
+++ runtime/mercury_type_tables.c	24 Oct 2005 12:29:30 -0000
@@ -1,4 +1,7 @@
 /*
+** vim: ts=4 sw=4 expandtab
+*/
+/*
 ** Copyright (C) 2000,2002-2004 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.
@@ -45,6 +48,8 @@
 static	MR_TableNode	MR_type_class_decl_info_table = { 0 };
 static	MR_Dlist	*MR_type_ctor_list = NULL;
 static	MR_Dlist	*MR_type_class_decl_info_list = NULL;
+static  int             MR_num_type_ctors = 0;
+static  int             MR_num_type_class_decls = 0;
 
 static	MR_TypeClassDeclInfo	*MR_do_register_type_class_decl(
 					MR_TypeClassDecl type_class_decl);
@@ -83,11 +88,9 @@
 			MR_type_ctor_name(type_ctor_info));
 
 	MR_for_dlist (element_ptr, slot->MR_type_table) {
-		cur_type_ctor_info =
-			(MR_TypeCtorInfo) MR_dlist_data(element_ptr);
+        cur_type_ctor_info = (MR_TypeCtorInfo) MR_dlist_data(element_ptr);
 
-		if (type_names_match_ctor(type_ctor_info, cur_type_ctor_info))
-		{
+        if (type_names_match_ctor(type_ctor_info, cur_type_ctor_info)) {
 			if (cur_type_ctor_info == type_ctor_info) {
 				/* type_ctor_info has been registered before */
 				return;
@@ -102,6 +105,7 @@
 		type_ctor_info);
 	MR_type_ctor_list = MR_dlist_addtail(MR_type_ctor_list,
 		type_ctor_info);
+    MR_num_type_ctors++;
 }
 
 static MR_TypeClassDeclInfo *
@@ -124,8 +128,7 @@
 	MR_for_dlist (element_ptr, slot->MR_type_table) {
 		cur_type_class_decl_info =
 			(MR_TypeClassDeclInfo *) MR_dlist_data(element_ptr);
-		cur_type_class_decl = cur_type_class_decl_info->
-			MR_tcd_info_decl;
+        cur_type_class_decl = cur_type_class_decl_info->MR_tcd_info_decl;
 		cur_type_class_id = cur_type_class_decl->MR_tc_decl_id;
 
 		if (class_names_match_id(type_class_id, cur_type_class_id)) {
@@ -133,8 +136,7 @@
 				/* type_ctor_info has been registered before */
 				return cur_type_class_decl_info;
 			} else {
-				MR_fatal_error(
-					"MR_do_register_type_class_decl: "
+                MR_fatal_error("MR_do_register_type_class_decl: "
 					"ambiguous type class decl");
 			}
 		}
@@ -147,6 +149,7 @@
 		type_class_decl_info);
 	MR_type_class_decl_info_list = MR_dlist_addtail(
 		MR_type_class_decl_info_list, type_class_decl_info);
+    MR_num_type_class_decls++;
 	return type_class_decl_info;
 }
 
@@ -193,8 +196,7 @@
 	slot = MR_string_hash_lookup_or_add(&MR_type_ctor_table, type_name);
 
 	MR_for_dlist (element_ptr, slot->MR_type_table) {
-		cur_type_ctor_info =
-			(MR_TypeCtorInfo) MR_dlist_data(element_ptr);
+        cur_type_ctor_info = (MR_TypeCtorInfo) MR_dlist_data(element_ptr);
 
 		if (type_names_match(cur_type_ctor_info, module_name,
 			type_name, arity))
@@ -222,8 +224,7 @@
 	MR_for_dlist (element_ptr, slot->MR_type_table) {
 		cur_type_class_decl_info =
 			(MR_TypeClassDeclInfo *) MR_dlist_data(element_ptr);
-		cur_type_class_decl = cur_type_class_decl_info->
-			MR_tcd_info_decl;
+        cur_type_class_decl = cur_type_class_decl_info->MR_tcd_info_decl;
 		cur_type_class_id = cur_type_class_decl->MR_tc_decl_id;
 
 		if (class_names_match(cur_type_class_id, module_name,
@@ -269,13 +270,21 @@
 }
 
 MR_Dlist *
-MR_all_type_ctor_infos(void)
+MR_all_type_ctor_infos(int *num_ptr)
 {
+    if (num_ptr != NULL) {
+        *num_ptr = MR_num_type_ctors;
+    }
+
 	return MR_type_ctor_list;
 }
 
 MR_Dlist *
-MR_all_type_class_decl_infos(void)
+MR_all_type_class_decl_infos(int *num_ptr)
 {
+    if (num_ptr != NULL) {
+        *num_ptr = MR_num_type_class_decls;
+    }
+
 	return MR_type_class_decl_info_list;
 }
Index: runtime/mercury_type_tables.h
===================================================================
RCS file: /home/mercury/mercury1/repository/mercury/runtime/mercury_type_tables.h,v
retrieving revision 1.2
diff -u -b -r1.2 mercury_type_tables.h
--- runtime/mercury_type_tables.h	23 Oct 2003 02:02:31 -0000	1.2
+++ runtime/mercury_type_tables.h	24 Oct 2005 12:26:21 -0000
@@ -134,20 +134,21 @@
 					const char *class_name, int arity);
 
 /*
-** Return a list of all the type constructors registered so far. The list
-** elements are of type MR_TypeCtorInfo. The caller must not modify anything
-** reachable from the returned list.
+** Return a list of all the type constructors registered so far, and return
+** their number in *num_ptr if num_ptr is not NULL. The list elements are
+** of type MR_TypeCtorInfo. The caller must not modify anything reachable
+** from the returned list.
 */
 
-extern	MR_Dlist		*MR_all_type_ctor_infos(void);
+extern	MR_Dlist		*MR_all_type_ctor_infos(int *num_ptr);
 
 /*
-** Return a list of all the type classes registered so far. The list
-** elements are of type MR_TypeClassDeclInfo.
-** The caller must not modify anything reachable from the returned
-** list.
+** Return a list of all the type classes registered so far, and return their
+** number in *num_ptr if num_ptr is not NULL. The list elements are of type
+** MR_TypeClassDeclInfo. The caller must not modify anything reachable
+** from the returned list.
 */
 
-extern	MR_Dlist		*MR_all_type_class_decl_infos(void);
+extern	MR_Dlist		*MR_all_type_class_decl_infos(int *num_ptr);
 
 #endif /* not MERCURY_TYPE_TABLES */
Index: runtime/mercury_wrapper.c
===================================================================
RCS file: /home/mercury/mercury1/repository/mercury/runtime/mercury_wrapper.c,v
retrieving revision 1.157
diff -u -b -r1.157 mercury_wrapper.c
--- runtime/mercury_wrapper.c	11 Oct 2005 04:45:52 -0000	1.157
+++ runtime/mercury_wrapper.c	24 Oct 2005 12:23:26 -0000
@@ -1,4 +1,7 @@
 /*
+** vim: ts=4 sw=4 expandtab
+*/
+/*
 INIT mercury_sys_init_wrapper
 ENDINIT
 */
@@ -82,6 +85,7 @@
 ** changing MR_heap_zone_size and/or the MR_heap_margin_size, which are
 ** defined below.
 */
+
 #ifdef MR_DEBUG_AGC_SMALL_HEAP
   size_t	MR_heap_size =			  13 * sizeof(MR_Word);
 #else
@@ -150,6 +154,7 @@
 ** Like the sizes above, it is measured in kilobytes
 ** (but we later multiply by 1024 to convert to bytes).
 */
+
 #ifdef MR_DEBUG_AGC_SMALL_HEAP
   size_t	MR_heap_margin_size =		   4 * sizeof(MR_Word);
 #else
@@ -216,8 +221,7 @@
 */
 
 MR_Word		*MR_watch_addr = NULL;
-MR_CallSiteDynamic
-		*MR_watch_csd_addr = NULL;
+MR_CallSiteDynamic  *MR_watch_csd_addr = NULL;
 MR_bool		MR_watch_csd_started = MR_FALSE;
 const char	*MR_watch_csd_start_name = "";	/* must not be NULL */
 
@@ -252,7 +256,7 @@
 
 static	int	MR_num_output_args = 0;
 
-unsigned	MR_num_threads = 1;
+unsigned int        MR_num_threads = 1;
 
 static	MR_bool	MR_print_table_statistics = MR_FALSE;
 
@@ -358,8 +362,7 @@
 
 char	*(*MR_address_of_trace_getline)(const char *, FILE *, FILE *);
 char	*(*MR_address_of_trace_get_command)(const char *, FILE *, FILE *);
-const char *
-	(*MR_address_of_trace_browse_all_on_level)(FILE *,
+const char  *(*MR_address_of_trace_browse_all_on_level)(FILE *,
 		const MR_Label_Layout *, MR_Word *, MR_Word *, int, MR_bool);
 
 #ifdef	MR_USE_EXTERNAL_DEBUGGER
@@ -400,7 +403,8 @@
 		MR_String, MR_String, MR_Integer, MR_Integer, MR_Integer,
 		MR_Word, MR_String, MR_Word);
 		/* normally ML_DI_found_match (output_current/12) */
-void	(*MR_DI_read_request_from_socket)(MR_Word, MR_Word *, MR_Integer *);
+void        (*MR_DI_read_request_from_socket)(MR_Word, MR_Word *,
+                MR_Integer *);
 
 MR_Code	*(*MR_exec_trace_func_ptr)(const MR_Label_Layout *);
 
@@ -645,15 +649,14 @@
 		/* MR_debug_enabled overrides MR_trace_count_enabled */
 		MR_trace_count_enabled = MR_FALSE;
 	} else if (MR_trace_count_enabled) {
-		MR_register_module_layout =
-			MR_insert_module_info_into_module_table;
+        MR_register_module_layout = MR_insert_module_info_into_module_table;
 		MR_selected_trace_func_ptr = MR_trace_count;
 		/*
 		** In case the program terminates with an exception,
 		** we still want the trace count to be written out.
 		*/
-		MR_register_exception_cleanup(
-			MR_trace_write_label_exec_counts_to_file, NULL);
+        MR_register_exception_cleanup(MR_trace_write_label_exec_counts_to_file,
+            NULL);
 	}
 
 	/*
@@ -821,7 +824,7 @@
 	
 	/*
 	** First do a pass over the string to count how much space we need to
-	** allocate
+    ** allocate.
 	*/
 
 	for (;;) {
@@ -848,24 +851,26 @@
 					*argc_ptr = argc;
 					return "unterminated quoted string";
 				}
-				if (*s == '\\')
+                if (*s == '\\') {
 					s++;
+                }
 				args_len++; s++;
 			}
 			s++;
 		} else {
 			/* ordinary white-space delimited arg */
 			while(*s != '\0' && !MR_isspace(*s)) {
-				if (*s == '\\')
+                if (*s == '\\') {
 					s++;
+                }
 				args_len++; s++;
 			}
 		}
 		args_len++;
-	} /* end for */
+    }
 
 	/*
-	** Allocate the space
+    ** Allocate the space.
 	*/
 	args = MR_GC_NEW_ARRAY(char, args_len);
 	argv = MR_GC_NEW_ARRAY(char *, argc + 1);
@@ -895,27 +900,29 @@
 			s++;
 			/* "double quoted" arg - scan until next double quote */
 			while (*s != '"') {
-				if (*s == '\\')
+                if (*s == '\\') {
 					s++;
+                }
 				*d++ = *s++;
 			}
 			s++;
 		} else {
 			/* ordinary white-space delimited arg */
 			while(*s != '\0' && !MR_isspace(*s)) {
-				if (*s == '\\')
+                if (*s == '\\') {
 					s++;
+                }
 				*d++ = *s++;
 			}
 		}
 		*d++ = '\0';
-	} /* end for */
+    }
 
 	*args_ptr = args;
 	*argv_ptr = argv;
 	*argc_ptr = argc;
 	return NULL; /* success */
-} /* end MR_make_argv() */
+}
 
 /*  
 **  process_args() is a function that sets some global variables from the
@@ -956,26 +963,23 @@
 		int		runtime_flags_len;
 
 		/*
-		** getopt() expects the options to start in argv[1],
-		** not argv[0], so we need to insert a dummy program
-		** name (we use "mercury_runtime") at the start of the
-		** options before passing them to MR_make_argv() and then
-		** to getopt().
+        ** getopt() expects the options to start in argv[1], not argv[0],
+        ** so we need to insert a dummy program name (we use "mercury_runtime")
+        ** at the start of the options before passing them to MR_make_argv()
+        ** and then to getopt().
 		*/
 		cmd = "mercury_runtime ";
 		cmd_len = strlen(cmd);
 		runtime_flags_len = strlen(MR_runtime_flags);
 		dummy_command_line = MR_GC_NEW_ARRAY(char,
-					cmd_len + runtime_flags_len + 1 +
-					strlen(env_options) + 1);
+            cmd_len + runtime_flags_len + 1 + strlen(env_options) + 1);
 		strcpy(dummy_command_line, cmd);
 		strcpy(dummy_command_line + cmd_len, MR_runtime_flags);
 		dummy_command_line[cmd_len + runtime_flags_len] = ' ';
 		strcpy(dummy_command_line + cmd_len + runtime_flags_len + 1,
 				env_options);
 		
-		error_msg = MR_make_argv(dummy_command_line,
-			&arg_str, &argv, &argc);
+        error_msg = MR_make_argv(dummy_command_line, &arg_str, &argv, &argc);
 		if (error_msg != NULL) {
 			MR_fatal_error("error parsing the MERCURY_OPTIONS "
 				"environment variable:\n%s\n", error_msg);
@@ -1116,7 +1120,6 @@
 	{
 		switch (c)
 		{
-
 		case MR_HEAP_SIZE:
 			if (sscanf(MR_optarg, "%lu", &size) != 1) {
 				usage();
@@ -1294,9 +1297,7 @@
 			break;
 
 		case MR_HEAP_EXPANSION_FACTOR:
-			if (sscanf(MR_optarg, "%lf",
-				&MR_heap_expansion_factor) != 1)
-			{
+                if (sscanf(MR_optarg, "%lf", &MR_heap_expansion_factor) != 1) {
 				usage();
 			}
 			break;
@@ -1460,10 +1461,9 @@
 		case MR_FORCE_READLINE:
 			MR_force_readline = MR_TRUE;
 #ifdef MR_NO_USE_READLINE
-			printf(
-"Mercury runtime: `--force-readline' is specified in MERCURY_OPTIONS\n");
-			printf(
-"but readline() is not available.\n");	
+                printf("Mercury runtime: `--force-readline' is specified "
+                    "in MERCURY_OPTIONS\n");
+                printf("but readline() is not available.\n");  
 			fflush(stdout);
 			exit(1);
 #endif
@@ -1510,7 +1510,6 @@
 			}
 
 			MR_pcache_size = size * 1024;
-
 			break;
 
 		case 'd':	
@@ -1532,9 +1531,7 @@
 			} else if (MR_streq(MR_optarg, "b")) {
 				MR_nondstackdebug = MR_TRUE;
 			} else if (MR_streq(MR_optarg, "B")) {
-				if (sscanf(MR_optarg+1, "%u",
-					&MR_lld_start_block) != 1)
-				{
+                    if (sscanf(MR_optarg+1, "%u", &MR_lld_start_block) != 1) {
 					usage();
 				}
 			} else if (MR_streq(MR_optarg, "c")) {
@@ -1560,10 +1557,8 @@
 			} else if (MR_streq(MR_optarg, "H")) {
 				MR_hashdebug    = MR_TRUE;
 			} else if (MR_optarg[0] == 'i') {
-				MR_lld_print_more_min_max =
-					strdup(MR_optarg + 1);
-				MR_setup_call_intervals(
-					&MR_lld_print_more_min_max,
+                    MR_lld_print_more_min_max = strdup(MR_optarg + 1);
+                    MR_setup_call_intervals(&MR_lld_print_more_min_max,
 					&MR_lld_print_min, &MR_lld_print_max);
 			} else if (MR_optarg[0] == 'I') {
 				MR_watch_csd_start_name = strdup(MR_optarg+1);
@@ -1593,21 +1588,15 @@
 				MR_tabledebug   = MR_TRUE;
 			} else if (MR_streq(MR_optarg, "u")) {
 				MR_unbufdebug   = MR_TRUE;
-			} else if (MR_optarg[0] == 'w' || MR_optarg[0] == 'W')
-			{
+                } else if (MR_optarg[0] == 'w' || MR_optarg[0] == 'W') {
 				long	addr;
 
-				if (MR_optarg[1] == '0' && MR_optarg[2] == 'x')
-				{
-					if (sscanf(MR_optarg+3, "%lx", &addr)
-						!= 1)
-					{
+                    if (MR_optarg[1] == '0' && MR_optarg[2] == 'x') {
+                        if (sscanf(MR_optarg+3, "%lx", &addr) != 1) {
 						usage();
 					}
 				} else {
-					if (sscanf(MR_optarg+1, "%lu", &addr)
-						!= 1)
-					{
+                        if (sscanf(MR_optarg+1, "%lu", &addr) != 1) {
 						usage();
 					}
 				}
@@ -1616,8 +1605,7 @@
 				if (MR_optarg[0] == 'w') {
 					MR_watch_addr = (MR_Word *) addr;
 				} else {
-					MR_watch_csd_addr =
-						(MR_CallSiteDynamic *) addr;
+                        MR_watch_csd_addr = (MR_CallSiteDynamic *) addr;
 				}
 
 				/*
@@ -1698,8 +1686,7 @@
 			} else if (MR_streq(MR_optarg, "v")) {
 				MR_time_profile_method = MR_profile_user_time;
 			} else if (MR_streq(MR_optarg, "p")) {
-				MR_time_profile_method =
-					MR_profile_user_plus_system_time;
+                    MR_time_profile_method = MR_profile_user_plus_system_time;
 			} else {
 				usage();
 			}
@@ -1720,8 +1707,8 @@
 		default:	
 			usage();
 
-		} /* end switch */
-	} /* end while */
+        }
+    }
 
 	if (MR_lld_print_min > 0 || MR_lld_start_name != NULL) {
 		MR_lld_print_enabled = 0;
@@ -1737,7 +1724,7 @@
 		fflush(stdout);
 		exit(1);
 	}
-} /* end process_options() */
+}
 
 static void 
 usage(void)
@@ -1748,7 +1735,7 @@
 		"the Mercury\nUser's Guide for details.\n");
 	fflush(stdout);
 	exit(1);
-} /* end usage() */
+}
 
 /*
 ** Get the next interval from *more_str_ptr, which should point to a string
@@ -1944,8 +1931,7 @@
 
         if (use_own_timer) {
 		printf("%8.3fu ",
-			((double) (MR_time_at_finish - MR_time_at_start))
-				/ 1000);
+            ((double) (MR_time_at_finish - MR_time_at_start)) / 1000);
 	}
 
 #ifdef	MR_TYPE_CTOR_STATS
@@ -2046,8 +2032,7 @@
 	for (i = 0; i < (int) MR_TYPECTOR_REP_UNKNOWN; i++) {
 		if (type_stat->type_ctor_reps[i] > 0) {
 			fprintf(fp, "%s %s %ld\n", op,
-				MR_ctor_rep_name[i],
-				type_stat->type_ctor_reps[i]);
+                MR_ctor_rep_name[i], type_stat->type_ctor_reps[i]);
 		}
 	}
 
@@ -2088,31 +2073,32 @@
 		MR_Word outputs[4];
 		typedef void MR_CALL (*EntryPoint1)(MR_Word *);
 		typedef void MR_CALL (*EntryPoint2)(MR_Word *, MR_Word *);
-		typedef void MR_CALL (*EntryPoint3)(MR_Word *, MR_Word *,
+        typedef void MR_CALL (*EntryPoint3)(MR_Word *, MR_Word *, MR_Word *);
+        typedef void MR_CALL (*EntryPoint4)(MR_Word *, MR_Word *, MR_Word *,
 					MR_Word *);
-		typedef void MR_CALL (*EntryPoint4)(MR_Word *, MR_Word *,
-					MR_Word *, MR_Word *);
 		switch (MR_num_output_args) {
 			case 0:
 				(*MR_program_entry_point)();
 				break;
+
 			case 1:
-				(*(EntryPoint1)MR_program_entry_point)(
-					&outputs[0]);
+                (*(EntryPoint1)MR_program_entry_point)(&outputs[0]);
 				break;
+
 			case 2:
-				(*(EntryPoint2)MR_program_entry_point)(
-					&outputs[0], &outputs[1]);
+                (*(EntryPoint2)MR_program_entry_point)(&outputs[0],
+                    &outputs[1]);
 				break;
 			case 3:
-				(*(EntryPoint3)MR_program_entry_point)(
-					&outputs[0], &outputs[1], &outputs[2]);
+                (*(EntryPoint3)MR_program_entry_point)(&outputs[0],
+                    &outputs[1], &outputs[2]);
 				break;
+
 			case 4:
-				(*(EntryPoint4)MR_program_entry_point)(
-					&outputs[0], &outputs[1], &outputs[2],
-					&outputs[3]);
+                (*(EntryPoint4)MR_program_entry_point)(&outputs[0],
+                    &outputs[1], &outputs[2], &outputs[3]);
 				break;
+
 			default:
 				MR_fatal_error("sorry, not implemented: "
 					"--num-output-args > 4");
@@ -2330,23 +2316,15 @@
 		if (fp != NULL) {
 			struct rusage	rusage;
 
-			fprintf(fp, "io actions        %10d\n",
-				MR_io_tabling_counter_hwm);
+            fprintf(fp, "io actions        %10d\n", MR_io_tabling_counter_hwm);
 			if (getrusage(RUSAGE_SELF, &rusage) == 0) {
-				fprintf(fp, "max resident      %10ld\n",
-					rusage.ru_maxrss);
-				fprintf(fp, "integral shared   %10ld\n",
-					rusage.ru_ixrss);
-				fprintf(fp, "integral unshared %10ld\n",
-					rusage.ru_idrss);
-				fprintf(fp, "integral stack    %10ld\n",
-					rusage.ru_isrss);
-				fprintf(fp, "page reclaims     %10ld\n",
-					rusage.ru_minflt);
-				fprintf(fp, "page faults       %10ld\n",
-					rusage.ru_majflt);
-				fprintf(fp, "swaps             %10ld\n",
-					rusage.ru_nswap);
+                fprintf(fp, "max resident      %10ld\n", rusage.ru_maxrss);
+                fprintf(fp, "integral shared   %10ld\n", rusage.ru_ixrss);
+                fprintf(fp, "integral unshared %10ld\n", rusage.ru_idrss);
+                fprintf(fp, "integral stack    %10ld\n", rusage.ru_isrss);
+                fprintf(fp, "page reclaims     %10ld\n", rusage.ru_minflt);
+                fprintf(fp, "page faults       %10ld\n", rusage.ru_majflt);
+                fprintf(fp, "swaps             %10ld\n", rusage.ru_nswap);
 			}
 
 			(void) fclose(fp);
cvs diff: Diffing runtime/GETOPT
cvs diff: Diffing runtime/machdeps
cvs diff: Diffing samples
cvs diff: Diffing samples/c_interface
cvs diff: Diffing samples/c_interface/c_calls_mercury
cvs diff: Diffing samples/c_interface/cplusplus_calls_mercury
cvs diff: Diffing samples/c_interface/mercury_calls_c
cvs diff: Diffing samples/c_interface/mercury_calls_cplusplus
cvs diff: Diffing samples/c_interface/mercury_calls_fortran
cvs diff: Diffing samples/c_interface/simpler_c_calls_mercury
cvs diff: Diffing samples/c_interface/simpler_cplusplus_calls_mercury
cvs diff: Diffing samples/diff
cvs diff: Diffing samples/muz
cvs diff: Diffing samples/rot13
cvs diff: Diffing samples/solutions
cvs diff: Diffing samples/tests
cvs diff: Diffing samples/tests/c_interface
cvs diff: Diffing samples/tests/c_interface/c_calls_mercury
cvs diff: Diffing samples/tests/c_interface/cplusplus_calls_mercury
cvs diff: Diffing samples/tests/c_interface/mercury_calls_c
cvs diff: Diffing samples/tests/c_interface/mercury_calls_cplusplus
cvs diff: Diffing samples/tests/c_interface/mercury_calls_fortran
cvs diff: Diffing samples/tests/c_interface/simpler_c_calls_mercury
cvs diff: Diffing samples/tests/c_interface/simpler_cplusplus_calls_mercury
cvs diff: Diffing samples/tests/diff
cvs diff: Diffing samples/tests/muz
cvs diff: Diffing samples/tests/rot13
cvs diff: Diffing samples/tests/solutions
cvs diff: Diffing samples/tests/toplevel
cvs diff: Diffing scripts
cvs diff: Diffing slice
cvs diff: Diffing tests
cvs diff: Diffing tests/benchmarks
cvs diff: Diffing tests/debugger
Index: tests/debugger/completion.exp
===================================================================
RCS file: /home/mercury/mercury1/repository/tests/debugger/completion.exp,v
retrieving revision 1.30
diff -u -b -r1.30 completion.exp
--- tests/debugger/completion.exp	10 Aug 2005 11:35:25 -0000	1.30
+++ tests/debugger/completion.exp	25 Oct 2005 03:39:25 -0000
@@ -3,39 +3,41 @@
 Command echo enabled.
 mdb> register --quiet
 mdb> 
-?                    enable               query
-P                    exception            quit
-alias                excp                 r
-all_class_decls      f                    register
-all_procedures       finish               retry
-all_regs             flag                 return
-all_type_ctors       forward              s
-b                    g                    save
-break                gen_stack            save_to_file
-break_print          goal_paths           scope
-browse               goto                 scroll
-c                    h                    set
-cc_query             held_vars            source
-class_decl           help                 stack
-clear_histogram      histogram_all        stack_default_limit
-condition            histogram_exp        stack_regs
-consumer             hold                 stats
-context              ignore               step
-continue             io_query             subgoal
-current              level                table
-cut_stack            maxdepth             table_io
-d                    mindepth             term_size
-dd                   mm_stacks            trust
-debug_vars           mmc_options          trusted
-delete               modules              type_ctor
-dice                 next                 unalias
-diff                 nondet_stack         unhide_events
-disable              p                    untrust
-document             pneg_stack           up
-document_category    print                v
-down                 print_optionals      var_details
-e                    printlevel           vars
-echo                 procedures           view
+?                    exception            query
+P                    excp                 quit
+alias                f                    r
+all_class_decls      finish               register
+all_procedures       flag                 retry
+all_regs             forward              return
+all_type_ctors       g                    s
+ambiguity            gen_stack            save
+b                    goal_paths           save_to_file
+break                goto                 scope
+break_print          h                    scroll
+browse               held_vars            set
+c                    help                 source
+cc_query             histogram_all        stack
+class_decl           histogram_exp        stack_default_limit
+clear_histogram      hold                 stack_regs
+condition            ignore               stats
+consumer             io_query             step
+context              level                subgoal
+continue             list                 table
+current              maxdepth             table_io
+cut_stack            mindepth             term_size
+d                    mm_stacks            trust
+dd                   mmc_options          trusted
+debug_vars           modules              type_ctor
+delete               next                 unalias
+dice                 nondet_stack         unhide_events
+diff                 p                    untrust
+disable              pneg_stack           up
+document             pop_list_dir         v
+document_category    print                var_details
+down                 print_optionals      vars
+e                    printlevel           view
+echo                 procedures           
+enable               push_list_dir        
 h              help           histogram_exp  
 held_vars      histogram_all  hold           
 var_details  vars         view         
Index: tests/debugger/mdb_command_test.inp
===================================================================
RCS file: /home/mercury/mercury1/repository/tests/debugger/mdb_command_test.inp,v
retrieving revision 1.46
diff -u -b -r1.46 mdb_command_test.inp
--- tests/debugger/mdb_command_test.inp	19 Aug 2005 16:08:28 -0000	1.46
+++ tests/debugger/mdb_command_test.inp	24 Oct 2005 20:00:15 -0000
@@ -39,6 +39,9 @@
 hold                 xyzzy xyzzy xyzzy xyzzy xyzzy
 diff                 xyzzy xyzzy xyzzy xyzzy xyzzy
 save_to_file         xyzzy xyzzy xyzzy xyzzy xyzzy
+list                 xyzzy xyzzy xyzzy xyzzy xyzzy
+push_list_dir        xyzzy xyzzy xyzzy xyzzy xyzzy
+pop_list_dir         xyzzy xyzzy xyzzy xyzzy xyzzy
 break                xyzzy xyzzy xyzzy xyzzy xyzzy
 condition            xyzzy xyzzy xyzzy xyzzy xyzzy
 ignore               xyzzy xyzzy xyzzy xyzzy xyzzy
@@ -92,3 +95,4 @@
 class_decl           xyzzy xyzzy xyzzy xyzzy xyzzy
 all_class_decls      xyzzy xyzzy xyzzy xyzzy xyzzy
 all_procedures       xyzzy xyzzy xyzzy xyzzy xyzzy
+ambiguity            xyzzy xyzzy xyzzy xyzzy xyzzy
cvs diff: Diffing tests/debugger/declarative
cvs diff: Diffing tests/dppd
cvs diff: Diffing tests/general
cvs diff: Diffing tests/general/accumulator
cvs diff: Diffing tests/general/string_format
cvs diff: Diffing tests/general/structure_reuse
cvs diff: Diffing tests/grade_subdirs
cvs diff: Diffing tests/hard_coded
cvs diff: Diffing tests/hard_coded/exceptions
cvs diff: Diffing tests/hard_coded/purity
cvs diff: Diffing tests/hard_coded/sub-modules
cvs diff: Diffing tests/hard_coded/typeclasses
cvs diff: Diffing tests/invalid
cvs diff: Diffing tests/invalid/purity
cvs diff: Diffing tests/misc_tests
cvs diff: Diffing tests/mmc_make
cvs diff: Diffing tests/mmc_make/lib
cvs diff: Diffing tests/recompilation
cvs diff: Diffing tests/tabling
cvs diff: Diffing tests/term
cvs diff: Diffing tests/valid
cvs diff: Diffing tests/warnings
cvs diff: Diffing tools
cvs diff: Diffing trace
Index: trace/mercury_trace_internal.c
===================================================================
RCS file: /home/mercury/mercury1/repository/mercury/trace/mercury_trace_internal.c,v
retrieving revision 1.216
diff -u -b -r1.216 mercury_trace_internal.c
--- trace/mercury_trace_internal.c	24 Oct 2005 02:02:17 -0000	1.216
+++ trace/mercury_trace_internal.c	24 Oct 2005 12:51:24 -0000
@@ -536,6 +536,7 @@
 static  MR_TraceCmdFunc MR_trace_cmd_all_type_ctors;
 static  MR_TraceCmdFunc MR_trace_cmd_all_class_decls;
 static  MR_TraceCmdFunc MR_trace_cmd_all_procedures;
+static  MR_TraceCmdFunc MR_trace_cmd_ambiguity;
 static  MR_TraceCmdFunc MR_trace_cmd_save;
 static  MR_TraceCmdFunc MR_trace_cmd_quit;
 static  MR_TraceCmdFunc MR_trace_cmd_dd;
@@ -637,6 +638,9 @@
 static  MR_bool     MR_trace_options_all_procedures(MR_bool *separate,
                         MR_bool *uci, char **module, char ***words,
                         int *word_count, const char *cat, const char *item);
+static  MR_bool     MR_trace_options_ambiguity(MR_bool *separate,
+                        MR_bool *uci, char **module, char ***words,
+                        int *word_count, const char *cat, const char *item);
 static  MR_bool     MR_trace_options_diff(int *start, int *max,
                         char ***words, int *word_count, const char *cat,
                         const char *item);
@@ -5508,7 +5512,7 @@
             module_name = NULL;
         }
 
-        list = MR_all_type_ctor_infos();
+        list = MR_all_type_ctor_infos(NULL);
         count = 0;
         MR_for_dlist(element_ptr, list) {
             type_ctor_info = (MR_TypeCtorInfo) MR_dlist_data(element_ptr);
@@ -5533,7 +5537,7 @@
             fprintf(MR_mdb_out, "in module %s: %d\n", module_name, count);
         }
     } else {
-        MR_trace_usage("developer", "class_decl");
+        MR_trace_usage("developer", "all_type_ctors");
     }
 
     return KEEP_INTERACTING;
@@ -5566,7 +5570,7 @@
         } else {
             module_name = NULL;
         }
-        list = MR_all_type_class_decl_infos();
+        list = MR_all_type_class_decl_infos(NULL);
         count = 0;
         MR_for_dlist(element_ptr, list) {
             type_class_decl_info = (MR_TypeClassDeclInfo *)
@@ -5593,7 +5597,7 @@
             fprintf(MR_mdb_out, "in module %s: %d\n", module_name, count);
         }
     } else {
-        MR_trace_usage("developer", "class_decl");
+        MR_trace_usage("developer", "all_class_decls");
     }
 
     return KEEP_INTERACTING;
@@ -5638,7 +5642,44 @@
             fprintf(MR_mdb_out, "mdb: wrote table to `%s'.\n", filename);
         }
     } else {
+        MR_trace_usage("developer", "all_procedures");
+    }
+
+    return KEEP_INTERACTING;
+}
+
+static MR_Next
+MR_trace_cmd_ambiguity(char **words, int word_count,
+    MR_Trace_Cmd_Info *cmd, MR_Event_Info *event_info,
+    MR_Event_Details *event_details, MR_Code **jumpaddr)
+{
+    const char      *filename;
+    FILE            *fp;
+
+    MR_register_all_modules_and_procs(MR_mdb_out, MR_TRUE);
+
+    if (word_count == 1) {
+        filename = NULL;
+        fp = MR_mdb_out;
+    } else if (word_count == 2) {
+        filename = words[1];
+        fp = fopen(filename, "w");
+        if (fp == NULL) {
+            fflush(MR_mdb_out);
+            fprintf(MR_mdb_err, "mdb: error opening `%s': %s.\n",
+                filename, strerror(errno));
+            return KEEP_INTERACTING;
+        }
+    } else {
         MR_trace_usage("developer", "class_decl");
+        return KEEP_INTERACTING;
+    }
+
+    MR_print_ambiguities(fp);
+
+    if (filename != NULL) {
+        fprintf(MR_mdb_out, "mdb: wrote report to `%s'.\n", filename);
+        fclose(fp);
     }
 
     return KEEP_INTERACTING;
@@ -8642,6 +8683,8 @@
     { "developer", "all_class_decls", MR_trace_cmd_all_class_decls,
         NULL, MR_trace_null_completer },
     { "developer", "all_procedures", MR_trace_cmd_all_procedures,
+        NULL, MR_trace_filename_completer },
+    { "developer", "ambiguity", MR_trace_cmd_ambiguity,
         NULL, MR_trace_filename_completer },
 
     /* End of doc/mdb_command_list. */
Index: trace/mercury_trace_tables.c
===================================================================
RCS file: /home/mercury/mercury1/repository/mercury/trace/mercury_trace_tables.c,v
retrieving revision 1.38
diff -u -b -r1.38 mercury_trace_tables.c
--- trace/mercury_trace_tables.c	1 Sep 2005 07:37:26 -0000	1.38
+++ trace/mercury_trace_tables.c	24 Oct 2005 14:18:33 -0000
@@ -25,6 +25,7 @@
 #include "mercury_trace.h"
 
 #include <stdio.h>
+#include <stdlib.h>
 #include <string.h>
 #include <ctype.h>
 
@@ -369,6 +370,279 @@
             MR_print_proc_id_and_nl(fp, module->MR_ml_procs[i]);
         }
     }
+}
+
+#define MR_proc_compare_name(proc1, proc2)                              \
+    strcmp(proc1->MR_sle_user.MR_user_name,                             \
+        proc2->MR_sle_user.MR_user_name)
+
+#define MR_proc_compare_module_name(proc1, proc2)                       \
+    strcmp(proc1->MR_sle_user.MR_user_decl_module,                      \
+        proc2->MR_sle_user.MR_user_decl_module)
+
+#define MR_proc_compare_arity(proc1, proc2)                              \
+    (proc1->MR_sle_user.MR_user_arity - proc2->MR_sle_user.MR_user_arity)
+
+#define MR_proc_compare_mode(proc1, proc2)                               \
+    (proc1->MR_sle_user.MR_user_mode - proc2->MR_sle_user.MR_user_mode)
+
+#define MR_proc_same_name(proc1, proc2)                                  \
+    (MR_proc_compare_name(proc1, proc2) == 0)
+
+#define MR_proc_same_module_name(proc1, proc2)                           \
+    (MR_proc_compare_module_name(proc1, proc2) == 0)
+
+#define MR_proc_same_arity(proc1, proc2)                                 \
+    (MR_proc_compare_arity(proc1, proc2) == 0)
+
+#define MR_proc_same_name_module_arity(proc1, proc2)                     \
+    (MR_proc_same_name(proc1, proc2) &&                                  \
+    MR_proc_same_module_name(proc1, proc2) &&                            \
+    MR_proc_same_arity(proc1, proc2))
+
+static int
+MR_compare_proc_layout_by_name(const void *ptr1, const void *ptr2)
+{
+    const MR_Proc_Layout    **proc_addr1;
+    const MR_Proc_Layout    **proc_addr2;
+    const MR_Proc_Layout    *proc1;
+    const MR_Proc_Layout    *proc2;
+    int                     result;
+
+    proc_addr1 = (const MR_Proc_Layout **) ptr1;
+    proc_addr2 = (const MR_Proc_Layout **) ptr2;
+    proc1 = *proc_addr1;
+    proc2 = *proc_addr2;
+    result = MR_proc_compare_name(proc1, proc2);
+    if (result != 0) {
+        return result;
+    }
+
+    /*
+    ** Return equal only if the module name and the arity are the same as well,
+    ** in order to group all procedures of a predicate together.
+    */
+
+    result = MR_proc_compare_module_name(proc1, proc2);
+    if (result != 0) {
+        return result;
+    }
+
+    result = MR_proc_compare_arity(proc1, proc2);
+    if (result != 0) {
+        return result;
+    }
+
+    return MR_proc_compare_mode(proc1, proc2);
+}
+
+#define MR_type_compare_name(type1, type2)                              \
+    strcmp(type1->MR_type_ctor_name,                                    \
+        type2->MR_type_ctor_name)
+
+#define MR_type_compare_module_name(type1, type2)                       \
+    strcmp(type1->MR_type_ctor_module_name,                             \
+        type2->MR_type_ctor_module_name)
+
+#define MR_type_compare_arity(type1, type2)                              \
+    (type1->MR_type_ctor_arity - type2->MR_type_ctor_arity)
+
+#define MR_type_same_name(type1, type2)                                  \
+    (MR_type_compare_name(type1, type2) == 0)
+
+#define MR_type_same_module_name(type1, type2)                           \
+    (MR_type_compare_module_name(type1, type2) == 0)
+
+static int
+MR_compare_type_ctor_by_name(const void *ptr1, const void *ptr2)
+{
+    const MR_TypeCtorInfo   *type_ctor_addr1;
+    const MR_TypeCtorInfo   *type_ctor_addr2;
+    MR_TypeCtorInfo         type_ctor1;
+    MR_TypeCtorInfo         type_ctor2;
+    int                     result;
+
+    type_ctor_addr1 = (const MR_TypeCtorInfo *) ptr1;
+    type_ctor_addr2 = (const MR_TypeCtorInfo *) ptr2;
+    type_ctor1 = *type_ctor_addr1;
+    type_ctor2 = *type_ctor_addr2;
+    result = MR_type_compare_name(type_ctor1, type_ctor2);
+    if (result != 0) {
+        return result;
+    }
+
+    result = MR_type_compare_module_name(type_ctor1, type_ctor2);
+    if (result != 0) {
+        return result;
+    }
+
+    return MR_type_compare_arity(type_ctor1, type_ctor2);
+}
+
+void
+MR_print_ambiguities(FILE *fp)
+{
+    int                     module_num;
+    int                     proc_num;
+    int                     type_num;
+    int                     end_proc_num;
+    int                     end_type_num;
+    int                     num_procs;
+    int                     num_types;
+    int                     next_proc_num;
+    int                     procs_in_module;
+    const MR_Module_Layout  *module;
+    const MR_Proc_Layout    **procs;
+    const MR_Proc_Layout    *cur_proc;
+    MR_TypeCtorInfo         *type_ctors;
+    MR_TypeCtorInfo         type_ctor_info;
+    MR_Dlist                *type_ctor_list;
+    MR_Dlist                *element_ptr;
+    MR_bool                 *report;
+    int                     num_distinct;
+    int                     num_ambiguous;
+    int                     i;
+
+    num_procs = 0;
+    for (module_num = 0; module_num < MR_module_info_next; module_num++) {
+        num_procs += MR_module_infos[module_num]->MR_ml_proc_count;
+    }
+
+    /*
+    ** num_procs is an conservative estimate of the number of user-defined
+    ** procs.
+    */
+
+    procs = malloc(sizeof(const MR_Proc_Layout *) * num_procs);
+    if (procs == NULL) {
+        fprintf(MR_mdb_err, "Error: could not allocate sufficient memory\n");
+        return;
+    }
+
+    report = malloc(sizeof(MR_bool) * num_procs);
+    if (report == NULL) {
+        fprintf(MR_mdb_err, "Error: could not allocate sufficient memory\n");
+        return;
+    }
+
+    next_proc_num = 0;
+    for (module_num = 0; module_num < MR_module_info_next; module_num++) {
+        module = MR_module_infos[module_num];
+        procs_in_module = MR_module_infos[module_num]->MR_ml_proc_count;
+        for (proc_num = 0; proc_num < procs_in_module; proc_num++) {
+            cur_proc = module->MR_ml_procs[proc_num];
+            if (! MR_PROC_LAYOUT_IS_UCI(cur_proc)) {
+                procs[next_proc_num] = cur_proc;
+                next_proc_num++;
+            }
+        }
+    }
+
+    num_procs = next_proc_num;
+    qsort(procs, num_procs, sizeof(const MR_Proc_Layout *),
+        MR_compare_proc_layout_by_name);
+
+    fprintf(fp, "Ambiguous predicate and function names:\n");
+    num_ambiguous = 0;
+
+    proc_num = 0;
+    while (proc_num < num_procs) {
+        end_proc_num = proc_num + 1;
+        while (end_proc_num < num_procs &&
+            MR_proc_same_name(procs[proc_num], procs[end_proc_num]))
+        {
+            end_proc_num++;
+        }
+
+        if (end_proc_num > proc_num + 1) {
+            report[proc_num] = MR_TRUE;
+            num_distinct = 1;
+
+            for (i = proc_num + 1; i < end_proc_num; i++) {
+                if (MR_proc_same_name_module_arity(procs[i-1], procs[i])) {
+                    report[i] = MR_FALSE;
+                } else {
+                    report[i] = MR_TRUE;
+                    num_distinct++;
+                }
+            }
+
+            if (num_distinct > 1) {
+                num_ambiguous++;
+                fprintf(fp, "\n");
+
+                for (i = proc_num; i < end_proc_num; i++) {
+                    if (report[i]) {
+                        fprintf(fp, "%s %s.%s/%d\n",
+                            (procs[i]->MR_sle_user.MR_user_pred_or_func
+                                == MR_PREDICATE ? "pred" : "func"),
+                            procs[i]->MR_sle_user.MR_user_decl_module,
+                            procs[i]->MR_sle_user.MR_user_name,
+                            procs[i]->MR_sle_user.MR_user_arity);
+                    }
+                }
+            }
+        }
+
+        proc_num = end_proc_num;
+    }
+
+    if (num_ambiguous == 0) {
+        fprintf(fp, "\nNone\n");
+    }
+
+    free(procs);
+    free(report);
+
+    type_ctor_list = MR_all_type_ctor_infos(&num_types);
+    type_ctors = malloc(sizeof(MR_TypeCtorInfo) * num_types);
+    if (type_ctors == NULL) {
+        fprintf(MR_mdb_err, "Error: could not allocate sufficient memory\n");
+        return;
+    }
+
+    type_num = 0;
+    MR_for_dlist (element_ptr, type_ctor_list) {
+        type_ctor_info = (MR_TypeCtorInfo) MR_dlist_data(element_ptr);
+        type_ctors[type_num] = type_ctor_info;
+        type_num++;
+    }
+
+    qsort(type_ctors, num_types, sizeof(MR_TypeCtorInfo),
+        MR_compare_type_ctor_by_name);
+
+    fprintf(fp, "\nAmbiguous type names:\n");
+    num_ambiguous = 0;
+
+    type_num = 0;
+    while (type_num < num_types) {
+        end_type_num = type_num + 1;
+        while (end_type_num < num_types &&
+            MR_type_same_name(type_ctors[type_num], type_ctors[end_type_num]))
+        {
+            end_type_num++;
+        }
+
+        if (end_type_num > type_num + 1) {
+            num_ambiguous++;
+            fprintf(fp, "\n");
+
+            for (i = type_num; i < end_type_num; i++) {
+                fprintf(fp, "%s.%s/%d\n",
+                    type_ctors[i]->MR_type_ctor_module_name,
+                    type_ctors[i]->MR_type_ctor_name,
+                    type_ctors[i]->MR_type_ctor_arity);
+            }
+        }
+
+        type_num = end_type_num;
+    }
+
+    if (num_ambiguous == 0) {
+        fprintf(fp, "\nNone\n");
+    }
+
+    free(type_ctors);
 }
 
 MR_bool
Index: trace/mercury_trace_tables.h
===================================================================
RCS file: /home/mercury/mercury1/repository/mercury/trace/mercury_trace_tables.h,v
retrieving revision 1.20
diff -u -b -r1.20 mercury_trace_tables.h
--- trace/mercury_trace_tables.h	14 Aug 2005 03:20:59 -0000	1.20
+++ trace/mercury_trace_tables.h	24 Oct 2005 05:13:22 -0000
@@ -74,6 +74,14 @@
 extern	void		MR_dump_module_procs(FILE *fp, const char *name);
 
 /*
+** Print the names of ambiguous predicates, functions and types. The ambiguity
+** may exist because a predicate, function or type with that name is defined
+** with more than one arity or in more than one module.
+*/
+
+extern	void		MR_print_ambiguities(FILE *fp);
+
+/*
 ** A procedure specification has several components, the meaning of which
 ** depends on whether the procedure is from a user defined procedure (user)
 ** or from a unify, compare, index or init procedure (uci).
cvs diff: Diffing util
cvs diff: Diffing vim
cvs diff: Diffing vim/after
cvs diff: Diffing vim/ftplugin
cvs diff: Diffing vim/syntax
--------------------------------------------------------------------------
mercury-reviews mailing list
post:  mercury-reviews at cs.mu.oz.au
administrative address: owner-mercury-reviews at cs.mu.oz.au
unsubscribe: Address: mercury-reviews-request at cs.mu.oz.au Message: unsubscribe
subscribe:   Address: mercury-reviews-request at cs.mu.oz.au Message: subscribe
--------------------------------------------------------------------------



More information about the reviews mailing list