[m-rev.] diff: enable termination2_info pragmas
Julien Fischer
juliensf at cs.mu.OZ.AU
Thu Jun 2 19:07:04 AEST 2005
Estimated hours taken: 1
Branches: main
Enable the support for writing out termination2_info pragmas
in the .opt and .trans_opt files.
Test both termination analyses when running the test suite.
compiler/term_constr_main.m:
compiler/trans_opt.m:
Uncomment the code that causes termination2_info pragmas
to be written out the .opt and .trans_opt files.
tests/term/Mmakefile:
Run the new termination analyser on these tests as well.
tests/term/*.trans_opt_exp:
Include the expected termination2_info pragmas.
Julien.
Workspace:/home/swordfish/juliensf/ws-term2-intermod
Index: compiler/term_constr_main.m
===================================================================
RCS file: /home/mercury1/repository/mercury/compiler/term_constr_main.m,v
retrieving revision 1.1
diff -u -r1.1 term_constr_main.m
--- compiler/term_constr_main.m 7 Apr 2005 06:32:15 -0000 1.1
+++ compiler/term_constr_main.m 1 Jun 2005 07:35:40 -0000
@@ -509,38 +509,33 @@
:- pred make_opt_int(list(pred_id)::in, module_info::in, io::di, io::uo) is det.
-make_opt_int(_PredIds, _ModuleInfo, !IO).
-
-% XXX The code for writing .opt files is currently disabled.
-% NOTE: in order to enable this you also need to uncomment the relevant
-% code in trans_opt.m.
-%
-% module_info_name(ModuleInfo, ModuleName),
-% module_name_to_file_name(ModuleName, ".opt.tmp", no, OptFileName, !IO),
-% globals.io_lookup_bool_option(verbose, Verbose, !IO),
-% maybe_write_string(Verbose,
-% "% Appending termination2_info pragmas to `", !IO),
-% maybe_write_string(Verbose, OptFileName, !IO),
-% maybe_write_string(Verbose, "'...", !IO),
-% maybe_flush_output(Verbose, !IO),
-% io.open_append(OptFileName, OptFileRes, !IO),
-% (
-% OptFileRes = ok(OptFile),
-% io.set_output_stream(OptFile, OldStream, !IO),
-% list.foldl(output_pred_termination2_info(ModuleInfo), PredIds,
-% !IO),
-% io.set_output_stream(OldStream, _, !IO),
-% io.close_output(OptFile, !IO),
-% maybe_write_string(Verbose, " done.\n", !IO)
-% ;
-% OptFileRes = error(IOError),
-% % failed to open the .opt file for processing
-% maybe_write_string(Verbose, " failed!\n", !IO),
-% io.error_message(IOError, IOErrorMessage),
-% io.write_strings(["Error opening file `",
-% OptFileName, "' for output: ", IOErrorMessage], !IO),
-% io.set_exit_status(1, !IO)
-% ).
+make_opt_int(PredIds, ModuleInfo, !IO) :-
+ module_info_name(ModuleInfo, ModuleName),
+ module_name_to_file_name(ModuleName, ".opt.tmp", no, OptFileName, !IO),
+ globals.io_lookup_bool_option(verbose, Verbose, !IO),
+ maybe_write_string(Verbose,
+ "% Appending termination2_info pragmas to `", !IO),
+ maybe_write_string(Verbose, OptFileName, !IO),
+ maybe_write_string(Verbose, "'...", !IO),
+ maybe_flush_output(Verbose, !IO),
+ io.open_append(OptFileName, OptFileRes, !IO),
+ (
+ OptFileRes = ok(OptFile),
+ io.set_output_stream(OptFile, OldStream, !IO),
+ list.foldl(output_pred_termination2_info(ModuleInfo), PredIds,
+ !IO),
+ io.set_output_stream(OldStream, _, !IO),
+ io.close_output(OptFile, !IO),
+ maybe_write_string(Verbose, " done.\n", !IO)
+ ;
+ OptFileRes = error(IOError),
+ % failed to open the .opt file for processing
+ maybe_write_string(Verbose, " failed!\n", !IO),
+ io.error_message(IOError, IOErrorMessage),
+ io.write_strings(["Error opening file `",
+ OptFileName, "' for output: ", IOErrorMessage], !IO),
+ io.set_exit_status(1, !IO)
+ ).
output_pred_termination2_info(ModuleInfo, PredId, !IO) :-
%
Index: compiler/trans_opt.m
===================================================================
RCS file: /home/mercury1/repository/mercury/compiler/trans_opt.m,v
retrieving revision 1.28
diff -u -r1.28 trans_opt.m
--- compiler/trans_opt.m 7 Apr 2005 06:32:17 -0000 1.28
+++ compiler/trans_opt.m 1 Jun 2005 07:35:54 -0000
@@ -133,10 +133,8 @@
module_info_predids(Module, PredIds),
list__foldl(termination__write_pred_termination_info(Module),
PredIds, !IO),
-% XXX Writing termination2_info pragma to .trans_opt files is currently
-% disabled. (The code in term_constr_main also needs to be uncommented).
-% list__foldl(term_constr_main.output_pred_termination2_info(Module),
-% PredIds, !IO),
+ list__foldl(term_constr_main.output_pred_termination2_info(Module),
+ PredIds, !IO),
module_info_exception_info(Module, ExceptionInfo),
list__foldl(
Index: tests/term/Mmakefile
===================================================================
RCS file: /home/mercury1/repository/tests/term/Mmakefile,v
retrieving revision 1.26
diff -u -r1.26 Mmakefile
--- tests/term/Mmakefile 10 Dec 2004 07:03:44 -0000 1.26
+++ tests/term/Mmakefile 1 Jun 2005 07:56:17 -0000
@@ -96,7 +96,7 @@
#-----------------------------------------------------------------------------#
-MCTERMFLAGS = --enable-termination --term-single-arg 5
+MCTERMFLAGS = --enable-termination --term-single-arg 5 --enable-termination2
MCOPTFLAGS = --no-inlining --no-optimize-unused-args --no-deforestation \
--no-optimize-higher-order
MCTRANSOPTFLAGS = $(MCTERMFLAGS) $(MCOPTFLAGS)
Index: tests/term/ack.trans_opt_exp
===================================================================
RCS file: /home/mercury1/repository/tests/term/ack.trans_opt_exp,v
retrieving revision 1.4
diff -u -r1.4 ack.trans_opt_exp
--- tests/term/ack.trans_opt_exp 17 Jan 2003 05:57:15 -0000 1.4
+++ tests/term/ack.trans_opt_exp 2 Jun 2005 08:49:21 -0000
@@ -1,2 +1,3 @@
:- module ack.
:- pragma termination_info(ack.ack((builtin.in), (builtin.in), (builtin.out)), infinite, can_loop).
+:- pragma termination2_info(ack.ack((builtin.in), (builtin.in), (builtin.out)), [1, 2, 3], constraints([le([term(2, r(-1, 1))], r(0, 1)), le([term(1, r(-1, 1)), term(3, r(-1, 1))], r(-1, 1))]), not_set, can_loop).
Index: tests/term/append.trans_opt_exp
===================================================================
RCS file: /home/mercury1/repository/tests/term/append.trans_opt_exp,v
retrieving revision 1.4
diff -u -r1.4 append.trans_opt_exp
--- tests/term/append.trans_opt_exp 17 Jan 2003 05:57:15 -0000 1.4
+++ tests/term/append.trans_opt_exp 2 Jun 2005 08:49:21 -0000
@@ -1,2 +1,3 @@
:- module append.
:- pragma termination_info(append.app((builtin.out), (builtin.out), (builtin.in)), finite(0, [no, no, no, yes]), cannot_loop).
+:- pragma termination2_info(append.app((builtin.out), (builtin.out), (builtin.in)), [7, 1, 2, 3], constraints([eq([term(1, r(1, 1)), term(2, r(1, 1)), term(3, r(-1, 1))], r(0, 1)), le([term(2, r(-1, 1))], r(0, 1))]), not_set, cannot_loop).
Index: tests/term/arit_exp.trans_opt_exp
===================================================================
RCS file: /home/mercury1/repository/tests/term/arit_exp.trans_opt_exp,v
retrieving revision 1.6
diff -u -r1.6 arit_exp.trans_opt_exp
--- tests/term/arit_exp.trans_opt_exp 17 Jan 2003 05:57:15 -0000 1.6
+++ tests/term/arit_exp.trans_opt_exp 2 Jun 2005 08:49:21 -0000
@@ -1,2 +1,3 @@
:- module arit_exp.
:- pragma termination_info(arit_exp.e((builtin.in)), finite(0, [no]), cannot_loop).
+:- pragma termination2_info(arit_exp.e((builtin.in)), [1], constraints([le([term(1, r(-1, 1))], r(-1, 1))]), not_set, cannot_loop).
Index: tests/term/associative.trans_opt_exp
===================================================================
RCS file: /home/mercury1/repository/tests/term/associative.trans_opt_exp,v
retrieving revision 1.9
diff -u -r1.9 associative.trans_opt_exp
--- tests/term/associative.trans_opt_exp 17 Jan 2003 05:57:15 -0000 1.9
+++ tests/term/associative.trans_opt_exp 2 Jun 2005 08:49:21 -0000
@@ -1,3 +1,5 @@
:- module associative.
:- pragma termination_info(associative.normal_form((builtin.in), (builtin.out)), finite(0, [yes, no]), can_loop).
:- pragma termination_info(associative.rewrite((builtin.in), (builtin.out)), finite(0, [yes, no]), cannot_loop).
+:- pragma termination2_info(associative.normal_form((builtin.in), (builtin.out)), [1, 2], constraints([eq([term(1, r(1, 1)), term(2, r(-1, 1))], r(0, 1))]), not_set, can_loop).
+:- pragma termination2_info(associative.rewrite((builtin.in), (builtin.out)), [1, 2], constraints([le([term(2, r(-1, 1))], r(-4, 1)), eq([term(1, r(1, 1)), term(2, r(-1, 1))], r(0, 1))]), not_set, cannot_loop).
Index: tests/term/dds1_2.trans_opt_exp
===================================================================
RCS file: /home/mercury1/repository/tests/term/dds1_2.trans_opt_exp,v
retrieving revision 1.5
diff -u -r1.5 dds1_2.trans_opt_exp
--- tests/term/dds1_2.trans_opt_exp 8 Dec 2003 03:37:45 -0000 1.5
+++ tests/term/dds1_2.trans_opt_exp 2 Jun 2005 08:49:21 -0000
@@ -1,2 +1,3 @@
:- module dds1_2.
:- pragma termination_info(dds1_2.permute((builtin.in), (builtin.out)), finite(0, [no, yes, no]), cannot_loop).
+:- pragma termination2_info(dds1_2.permute((builtin.in), (builtin.out)), [6, 1, 2], constraints([eq([term(1, r(1, 1)), term(2, r(-1, 1))], r(0, 1)), le([term(2, r(-1, 1))], r(0, 1))]), not_set, cannot_loop).
Index: tests/term/dds3_13.trans_opt_exp
===================================================================
RCS file: /home/mercury1/repository/tests/term/dds3_13.trans_opt_exp,v
retrieving revision 1.5
diff -u -r1.5 dds3_13.trans_opt_exp
--- tests/term/dds3_13.trans_opt_exp 8 Dec 2003 03:37:45 -0000 1.5
+++ tests/term/dds3_13.trans_opt_exp 2 Jun 2005 08:49:21 -0000
@@ -1,2 +1,3 @@
:- module dds3_13.
:- pragma termination_info(dds3_13.duplicate((builtin.in), (builtin.out)), infinite, cannot_loop).
+:- pragma termination2_info(dds3_13.duplicate((builtin.in), (builtin.out)), [7, 1, 2], constraints([le([term(1, r(-1, 1))], r(0, 1)), eq([term(1, r(1, 1)), term(2, r(-1, 2))], r(0, 1))]), not_set, cannot_loop).
Index: tests/term/dds3_14.trans_opt_exp
===================================================================
RCS file: /home/mercury1/repository/tests/term/dds3_14.trans_opt_exp,v
retrieving revision 1.5
diff -u -r1.5 dds3_14.trans_opt_exp
--- tests/term/dds3_14.trans_opt_exp 8 Dec 2003 03:37:45 -0000 1.5
+++ tests/term/dds3_14.trans_opt_exp 2 Jun 2005 08:49:21 -0000
@@ -1,2 +1,3 @@
:- module dds3_14.
:- pragma termination_info(dds3_14.sum((builtin.in), (builtin.in), (builtin.out)), infinite, cannot_loop).
+:- pragma termination2_info(dds3_14.sum((builtin.in), (builtin.in), (builtin.out)), [1, 2, 3], constraints([eq([term(1, r(1, 1)), term(3, r(-1, 1))], r(0, 1)), eq([term(2, r(1, 1)), term(3, r(-1, 1))], r(0, 1))]), not_set, cannot_loop).
Index: tests/term/dds3_15.trans_opt_exp
===================================================================
RCS file: /home/mercury1/repository/tests/term/dds3_15.trans_opt_exp,v
retrieving revision 1.5
diff -u -r1.5 dds3_15.trans_opt_exp
--- tests/term/dds3_15.trans_opt_exp 8 Dec 2003 03:37:45 -0000 1.5
+++ tests/term/dds3_15.trans_opt_exp 2 Jun 2005 08:49:21 -0000
@@ -1,2 +1,3 @@
:- module dds3_15.
:- pragma termination_info(dds3_15.merge((builtin.in), (builtin.in), (builtin.out)), finite(0, [yes, yes, no]), cannot_loop).
+:- pragma termination2_info(dds3_15.merge((builtin.in), (builtin.in), (builtin.out)), [1, 2, 3], constraints([le([term(3, r(-1, 1))], r(0, 1))]), not_set, cannot_loop).
Index: tests/term/dds3_17.trans_opt_exp
===================================================================
RCS file: /home/mercury1/repository/tests/term/dds3_17.trans_opt_exp,v
retrieving revision 1.5
diff -u -r1.5 dds3_17.trans_opt_exp
--- tests/term/dds3_17.trans_opt_exp 8 Dec 2003 03:37:45 -0000 1.5
+++ tests/term/dds3_17.trans_opt_exp 2 Jun 2005 08:49:21 -0000
@@ -1,3 +1,5 @@
:- module dds3_17.
:- pragma termination_info(dds3_17.dis((builtin.in)), finite(0, [no]), cannot_loop).
:- pragma termination_info(dds3_17.con((builtin.in)), finite(0, [no]), cannot_loop).
+:- pragma termination2_info(dds3_17.dis((builtin.in)), [1], constraints([]), not_set, cannot_loop).
+:- pragma termination2_info(dds3_17.con((builtin.in)), [4], constraints([]), not_set, cannot_loop).
Index: tests/term/dds3_8.trans_opt_exp
===================================================================
RCS file: /home/mercury1/repository/tests/term/dds3_8.trans_opt_exp,v
retrieving revision 1.5
diff -u -r1.5 dds3_8.trans_opt_exp
--- tests/term/dds3_8.trans_opt_exp 8 Dec 2003 03:37:45 -0000 1.5
+++ tests/term/dds3_8.trans_opt_exp 2 Jun 2005 08:49:21 -0000
@@ -1,2 +1,3 @@
:- module dds3_8.
:- pragma termination_info(dds3_8.reverse((builtin.in), (builtin.out), (builtin.in)), finite(0, [no, yes, no, yes]), cannot_loop).
+:- pragma termination2_info(dds3_8.reverse((builtin.in), (builtin.out), (builtin.in)), [7, 1, 2, 3], constraints([eq([term(1, r(1, 1)), term(2, r(-1, 1)), term(3, r(1, 1))], r(0, 1))]), not_set, can_loop).
Index: tests/term/exception_analysis_test.trans_opt_exp
===================================================================
RCS file: /home/mercury1/repository/tests/term/exception_analysis_test.trans_opt_exp,v
retrieving revision 1.1
diff -u -r1.1 exception_analysis_test.trans_opt_exp
--- tests/term/exception_analysis_test.trans_opt_exp 16 Oct 2004 15:08:55 -0000 1.1
+++ tests/term/exception_analysis_test.trans_opt_exp 2 Jun 2005 08:49:21 -0000
@@ -6,6 +6,13 @@
:- pragma termination_info(exception_analysis_test.mutual_test1((builtin.in), (builtin.in)), finite(0, [no, no, no]), can_loop).
:- pragma termination_info(exception_analysis_test.mutual_test2((builtin.in), (builtin.in)), finite(0, [no, no]), can_loop).
:- pragma termination_info(exception_analysis_test.wrap_equals((builtin.in), (builtin.in)), infinite, cannot_loop).
+:- pragma termination2_info(exception_analysis_test.test1((builtin.in)), [3, 1], constraints([]), not_set, can_loop).
+:- pragma termination2_info(exception_analysis_test.test2((builtin.in), (builtin.in)), [5, 1, 2], constraints([eq([term(1, r(1, 1)), term(2, r(-1, 1))], r(0, 1))]), not_set, can_loop).
+:- pragma termination2_info(exception_analysis_test.test3((builtin.in), (builtin.in)), [3, 1, 2], constraints([eq([term(1, r(1, 1)), term(2, r(-1, 1))], r(0, 1))]), not_set, can_loop).
+:- pragma termination2_info(exception_analysis_test.test4((builtin.in), (builtin.in)), [4, 1, 2], constraints([eq([term(1, r(1, 1)), term(2, r(-1, 1))], r(0, 1))]), not_set, can_loop).
+:- pragma termination2_info(exception_analysis_test.mutual_test1((builtin.in), (builtin.in)), [7, 1, 2], constraints([]), not_set, can_loop).
+:- pragma termination2_info(exception_analysis_test.mutual_test2((builtin.in), (builtin.in)), [9, 10], constraints([]), not_set, can_loop).
+:- pragma termination2_info(exception_analysis_test.wrap_equals((builtin.in), (builtin.in)), [2, 3, 4], constraints([]), not_set, can_loop).
:- pragma exceptions(predicate, (exception_analysis_test.test1), 1, 0, will_not_throw).
:- pragma exceptions(predicate, (exception_analysis_test.test2), 2, 0, may_throw(type_exception)).
:- pragma exceptions(predicate, (exception_analysis_test.test3), 2, 0, conditional).
Index: tests/term/existential_error1.trans_opt_exp
===================================================================
RCS file: /home/mercury1/repository/tests/term/existential_error1.trans_opt_exp,v
retrieving revision 1.1
diff -u -r1.1 existential_error1.trans_opt_exp
--- tests/term/existential_error1.trans_opt_exp 8 Oct 2003 05:12:40 -0000 1.1
+++ tests/term/existential_error1.trans_opt_exp 2 Jun 2005 08:49:21 -0000
@@ -1,2 +1,3 @@
:- module existential_error1.
:- pragma termination_info(existential_error1.deconstruct_univ((builtin.in), (builtin.out)), infinite, can_loop).
+:- pragma termination2_info(existential_error1.deconstruct_univ((builtin.in), (builtin.out)), [4, 1, 2], constraints([le([term(1, r(-1, 1))], r(-1, 1))]), not_set, can_loop).
Index: tests/term/existential_error2.trans_opt_exp
===================================================================
RCS file: /home/mercury1/repository/tests/term/existential_error2.trans_opt_exp,v
retrieving revision 1.1
diff -u -r1.1 existential_error2.trans_opt_exp
--- tests/term/existential_error2.trans_opt_exp 8 Oct 2003 05:12:40 -0000 1.1
+++ tests/term/existential_error2.trans_opt_exp 2 Jun 2005 08:49:21 -0000
@@ -1,2 +1,3 @@
:- module existential_error2.
:- pragma termination_info(existential_error2.construct_list_of_any((builtin.out)), finite(1, [no]), cannot_loop).
+:- pragma termination2_info(existential_error2.construct_list_of_any((builtin.out)), [1], constraints([eq([term(1, r(1, 1))], r(2, 1))]), not_set, cannot_loop).
Index: tests/term/existential_error3.trans_opt_exp
===================================================================
RCS file: /home/mercury1/repository/tests/term/existential_error3.trans_opt_exp,v
retrieving revision 1.1
diff -u -r1.1 existential_error3.trans_opt_exp
--- tests/term/existential_error3.trans_opt_exp 8 Dec 2003 03:37:45 -0000 1.1
+++ tests/term/existential_error3.trans_opt_exp 2 Jun 2005 08:49:21 -0000
@@ -1,2 +1,3 @@
:- module existential_error3.
:- pragma termination_info(existential_error3.test((builtin.in)), finite(0, [no]), cannot_loop).
+:- pragma termination2_info(existential_error3.test((builtin.in)), [1], constraints([le([term(1, r(-1, 1))], r(-2, 1))]), not_set, cannot_loop).
Index: tests/term/fold.trans_opt_exp
===================================================================
RCS file: /home/mercury1/repository/tests/term/fold.trans_opt_exp,v
retrieving revision 1.4
diff -u -r1.4 fold.trans_opt_exp
--- tests/term/fold.trans_opt_exp 17 Jan 2003 05:57:16 -0000 1.4
+++ tests/term/fold.trans_opt_exp 2 Jun 2005 08:49:21 -0000
@@ -1,2 +1,3 @@
:- module fold.
:- pragma termination_info(fold.fold((builtin.in), (builtin.in), (builtin.out)), finite(0, [yes, no, no]), cannot_loop).
+:- pragma termination2_info(fold.fold((builtin.in), (builtin.in), (builtin.out)), [1, 2, 3], constraints([le([term(2, r(-1, 1))], r(0, 1))]), not_set, cannot_loop).
Index: tests/term/foreign_valid.trans_opt_exp
===================================================================
RCS file: /home/mercury1/repository/tests/term/foreign_valid.trans_opt_exp,v
retrieving revision 1.1
diff -u -r1.1 foreign_valid.trans_opt_exp
--- tests/term/foreign_valid.trans_opt_exp 12 Feb 2004 03:36:17 -0000 1.1
+++ tests/term/foreign_valid.trans_opt_exp 2 Jun 2005 08:49:21 -0000
@@ -9,3 +9,13 @@
:- pragma termination_info(foreign_valid.test8((builtin.out)), infinite, can_loop).
:- pragma termination_info(foreign_valid.test9((builtin.out)), infinite, cannot_loop).
:- pragma termination_info(foreign_valid.test10((builtin.out)), infinite, can_loop).
+:- pragma termination2_info(foreign_valid.test1((builtin.out)), [1], constraints([]), not_set, cannot_loop).
+:- pragma termination2_info(foreign_valid.test2((builtin.out)), [1], constraints([]), not_set, can_loop).
+:- pragma termination2_info(foreign_valid.test3((builtin.out)), [1], constraints([]), not_set, can_loop).
+:- pragma termination2_info(foreign_valid.test4((builtin.out)), [1], constraints([]), not_set, cannot_loop).
+:- pragma termination2_info(foreign_valid.test5((builtin.out)), [1], constraints([]), not_set, cannot_loop).
+:- pragma termination2_info(foreign_valid.test6((builtin.out)), [1], constraints([]), not_set, can_loop).
+:- pragma termination2_info(foreign_valid.test7((builtin.out)), [1], constraints([]), not_set, cannot_loop).
+:- pragma termination2_info(foreign_valid.test8((builtin.out)), [1], constraints([]), not_set, can_loop).
+:- pragma termination2_info(foreign_valid.test9((builtin.out)), [1], constraints([]), not_set, cannot_loop).
+:- pragma termination2_info(foreign_valid.test10((builtin.out)), [1], constraints([]), not_set, can_loop).
Index: tests/term/inf_const_bug.trans_opt_exp
===================================================================
RCS file: /home/mercury1/repository/tests/term/inf_const_bug.trans_opt_exp,v
retrieving revision 1.1
diff -u -r1.1 inf_const_bug.trans_opt_exp
--- tests/term/inf_const_bug.trans_opt_exp 15 Dec 2003 07:11:06 -0000 1.1
+++ tests/term/inf_const_bug.trans_opt_exp 2 Jun 2005 08:49:21 -0000
@@ -4,3 +4,8 @@
:- pragma termination_info(inf_const_bug.square((builtin.in)) = (builtin.out), infinite, cannot_loop).
:- pragma termination_info(inf_const_bug.multiply((builtin.in), (builtin.in)) = (builtin.out), infinite, cannot_loop).
:- pragma termination_info(inf_const_bug.map((builtin.in), (builtin.in)) = (builtin.out), infinite, can_loop).
+:- pragma termination2_info(inf_const_bug.foo((builtin.in)) = (builtin.out), [1, 2], constraints([le([term(2, r(-1, 1))], r(-3, 1)), le([term(1, r(-1, 1))], r(-3, 1))]), not_set, can_loop).
+:- pragma termination2_info(inf_const_bug.bar((builtin.in)) = (builtin.out), [1, 2], constraints([le([term(2, r(-1, 1))], r(-1, 1)), le([term(1, r(-1, 1))], r(-1, 1))]), not_set, can_loop).
+:- pragma termination2_info(inf_const_bug.square((builtin.in)) = (builtin.out), [2, 1], constraints([le([term(2, r(-1, 1))], r(0, 1))]), not_set, cannot_loop).
+:- pragma termination2_info(inf_const_bug.multiply((builtin.in), (builtin.in)) = (builtin.out), [1, 2, 3], constraints([le([term(1, r(-1, 1))], r(0, 1))]), not_set, cannot_loop).
+:- pragma termination2_info(inf_const_bug.map((builtin.in), (builtin.in)) = (builtin.out), [8, 9, 1, 2, 3], constraints([]), not_set, can_loop).
Index: tests/term/lte.trans_opt_exp
===================================================================
RCS file: /home/mercury1/repository/tests/term/lte.trans_opt_exp,v
retrieving revision 1.3
diff -u -r1.3 lte.trans_opt_exp
--- tests/term/lte.trans_opt_exp 17 Jan 2003 05:57:16 -0000 1.3
+++ tests/term/lte.trans_opt_exp 2 Jun 2005 08:49:21 -0000
@@ -1,2 +1,3 @@
:- module lte.
:- pragma termination_info((lte.goal), finite(0, []), cannot_loop).
+:- pragma termination2_info((lte.goal), [], constraints([]), not_set, cannot_loop).
Index: tests/term/member.trans_opt_exp
===================================================================
RCS file: /home/mercury1/repository/tests/term/member.trans_opt_exp,v
retrieving revision 1.4
diff -u -r1.4 member.trans_opt_exp
--- tests/term/member.trans_opt_exp 17 Jan 2003 05:57:16 -0000 1.4
+++ tests/term/member.trans_opt_exp 2 Jun 2005 08:49:21 -0000
@@ -1,2 +1,3 @@
:- module member.
:- pragma termination_info(member.member((builtin.out), (builtin.in)), finite(-1, [no, no, yes]), cannot_loop).
+:- pragma termination2_info(member.member((builtin.out), (builtin.in)), [3, 1, 2], constraints([le([term(2, r(-1, 1))], r(-2, 1)), le([term(1, r(-1, 1))], r(0, 1))]), not_set, cannot_loop).
Index: tests/term/mergesort.trans_opt_exp
===================================================================
RCS file: /home/mercury1/repository/tests/term/mergesort.trans_opt_exp,v
retrieving revision 1.4
diff -u -r1.4 mergesort.trans_opt_exp
--- tests/term/mergesort.trans_opt_exp 17 Jan 2003 05:57:16 -0000 1.4
+++ tests/term/mergesort.trans_opt_exp 2 Jun 2005 08:49:21 -0000
@@ -1,2 +1,3 @@
:- module mergesort.
:- pragma termination_info(mergesort.mergesort((builtin.in), (builtin.out)), finite(0, [yes, no]), can_loop).
+:- pragma termination2_info(mergesort.mergesort((builtin.in), (builtin.out)), [1, 2], constraints([le([term(1, r(-1, 1))], r(0, 1))]), not_set, can_loop).
Index: tests/term/mergesort_ap.trans_opt_exp
===================================================================
RCS file: /home/mercury1/repository/tests/term/mergesort_ap.trans_opt_exp,v
retrieving revision 1.4
diff -u -r1.4 mergesort_ap.trans_opt_exp
--- tests/term/mergesort_ap.trans_opt_exp 17 Jan 2003 05:57:16 -0000 1.4
+++ tests/term/mergesort_ap.trans_opt_exp 2 Jun 2005 08:49:21 -0000
@@ -1,2 +1,3 @@
:- module mergesort_ap.
:- pragma termination_info(mergesort_ap.mergesort((builtin.in), (builtin.out), (builtin.in)), finite(0, [yes, no, no]), cannot_loop).
+:- pragma termination2_info(mergesort_ap.mergesort((builtin.in), (builtin.out), (builtin.in)), [1, 2, 3], constraints([le([term(1, r(-1, 1))], r(0, 1))]), not_set, cannot_loop).
Index: tests/term/mergesort_t.trans_opt_exp
===================================================================
RCS file: /home/mercury1/repository/tests/term/mergesort_t.trans_opt_exp,v
retrieving revision 1.4
diff -u -r1.4 mergesort_t.trans_opt_exp
--- tests/term/mergesort_t.trans_opt_exp 17 Jan 2003 05:57:16 -0000 1.4
+++ tests/term/mergesort_t.trans_opt_exp 2 Jun 2005 08:49:21 -0000
@@ -1,2 +1,3 @@
:- module mergesort_t.
:- pragma termination_info(mergesort_t.mergesort((builtin.in), (builtin.out)), infinite, can_loop).
+:- pragma termination2_info(mergesort_t.mergesort((builtin.in), (builtin.out)), [1, 2], constraints([le([term(1, r(-1, 1))], r(0, 1))]), not_set, cannot_loop).
Index: tests/term/mmatrix.trans_opt_exp
===================================================================
RCS file: /home/mercury1/repository/tests/term/mmatrix.trans_opt_exp,v
retrieving revision 1.4
diff -u -r1.4 mmatrix.trans_opt_exp
--- tests/term/mmatrix.trans_opt_exp 17 Jan 2003 05:57:16 -0000 1.4
+++ tests/term/mmatrix.trans_opt_exp 2 Jun 2005 08:49:21 -0000
@@ -1,2 +1,3 @@
:- module mmatrix.
:- pragma termination_info(mmatrix.mmultiply((builtin.in), (builtin.in), (builtin.out)), infinite, cannot_loop).
+:- pragma termination2_info(mmatrix.mmultiply((builtin.in), (builtin.in), (builtin.out)), [1, 2, 3], constraints([le([term(3, r(-1, 1))], r(0, 1))]), not_set, cannot_loop).
Index: tests/term/money.trans_opt_exp
===================================================================
RCS file: /home/mercury1/repository/tests/term/money.trans_opt_exp,v
retrieving revision 1.4
diff -u -r1.4 money.trans_opt_exp
--- tests/term/money.trans_opt_exp 17 Jan 2003 05:57:16 -0000 1.4
+++ tests/term/money.trans_opt_exp 2 Jun 2005 08:49:21 -0000
@@ -1,2 +1,3 @@
:- module money.
:- pragma termination_info(money.solve((builtin.out)), finite(10, [no]), cannot_loop).
+:- pragma termination2_info(money.solve((builtin.out)), [1], constraints([eq([term(1, r(1, 1))], r(16, 1))]), not_set, cannot_loop).
Index: tests/term/my_list.trans_opt_exp
===================================================================
RCS file: /home/mercury1/repository/tests/term/my_list.trans_opt_exp,v
retrieving revision 1.5
diff -u -r1.5 my_list.trans_opt_exp
--- tests/term/my_list.trans_opt_exp 17 Jan 2003 05:57:16 -0000 1.5
+++ tests/term/my_list.trans_opt_exp 2 Jun 2005 08:49:21 -0000
@@ -1,2 +1,3 @@
:- module my_list.
:- pragma termination_info(my_list.list((builtin.in)), finite(0, [no, no]), cannot_loop).
+:- pragma termination2_info(my_list.list((builtin.in)), [4, 1], constraints([le([term(1, r(-1, 1))], r(0, 1))]), not_set, cannot_loop).
Index: tests/term/my_map.trans_opt_exp
===================================================================
RCS file: /home/mercury1/repository/tests/term/my_map.trans_opt_exp,v
retrieving revision 1.5
diff -u -r1.5 my_map.trans_opt_exp
--- tests/term/my_map.trans_opt_exp 17 Jan 2003 05:57:16 -0000 1.5
+++ tests/term/my_map.trans_opt_exp 2 Jun 2005 08:49:21 -0000
@@ -1,2 +1,3 @@
:- module my_map.
:- pragma termination_info(my_map.map((builtin.in), (builtin.out)), infinite, cannot_loop).
+:- pragma termination2_info(my_map.map((builtin.in), (builtin.out)), [1, 2], constraints([eq([term(1, r(1, 1)), term(2, r(-1, 1))], r(0, 1))]), not_set, cannot_loop).
Index: tests/term/naive_rev.trans_opt_exp
===================================================================
RCS file: /home/mercury1/repository/tests/term/naive_rev.trans_opt_exp,v
retrieving revision 1.4
diff -u -r1.4 naive_rev.trans_opt_exp
--- tests/term/naive_rev.trans_opt_exp 17 Jan 2003 05:57:16 -0000 1.4
+++ tests/term/naive_rev.trans_opt_exp 2 Jun 2005 08:49:21 -0000
@@ -1,2 +1,3 @@
:- module naive_rev.
:- pragma termination_info(naive_rev.reverse((builtin.in), (builtin.out)), finite(0, [no, yes, no]), cannot_loop).
+:- pragma termination2_info(naive_rev.reverse((builtin.in), (builtin.out)), [8, 1, 2], constraints([eq([term(1, r(1, 1)), term(2, r(-1, 1))], r(0, 1))]), not_set, cannot_loop).
Index: tests/term/occur.trans_opt_exp
===================================================================
RCS file: /home/mercury1/repository/tests/term/occur.trans_opt_exp,v
retrieving revision 1.4
diff -u -r1.4 occur.trans_opt_exp
--- tests/term/occur.trans_opt_exp 17 Jan 2003 05:57:16 -0000 1.4
+++ tests/term/occur.trans_opt_exp 2 Jun 2005 08:49:21 -0000
@@ -1,2 +1,3 @@
:- module occur.
:- pragma termination_info(occur.occurall((builtin.in), (builtin.in), (builtin.out)), infinite, cannot_loop).
+:- pragma termination2_info(occur.occurall((builtin.in), (builtin.in), (builtin.out)), [1, 2, 3], constraints([eq([term(1, r(1, 1)), term(3, r(-1, 3))], r(0, 1)), le([term(1, r(-1, 1)), term(3, r(2, 9))], r(0, 1))]), not_set, cannot_loop).
Index: tests/term/ordered.trans_opt_exp
===================================================================
RCS file: /home/mercury1/repository/tests/term/ordered.trans_opt_exp,v
retrieving revision 1.4
diff -u -r1.4 ordered.trans_opt_exp
--- tests/term/ordered.trans_opt_exp 17 Jan 2003 05:57:16 -0000 1.4
+++ tests/term/ordered.trans_opt_exp 2 Jun 2005 08:49:21 -0000
@@ -1,2 +1,3 @@
:- module ordered.
:- pragma termination_info(ordered.ordered((builtin.in)), finite(0, [no]), cannot_loop).
+:- pragma termination2_info(ordered.ordered((builtin.in)), [1], constraints([le([term(1, r(-1, 1))], r(0, 1))]), not_set, cannot_loop).
Index: tests/term/overlap.trans_opt_exp
===================================================================
RCS file: /home/mercury1/repository/tests/term/overlap.trans_opt_exp,v
retrieving revision 1.4
diff -u -r1.4 overlap.trans_opt_exp
--- tests/term/overlap.trans_opt_exp 17 Jan 2003 05:57:16 -0000 1.4
+++ tests/term/overlap.trans_opt_exp 2 Jun 2005 08:49:21 -0000
@@ -1,2 +1,3 @@
:- module overlap.
:- pragma termination_info(overlap.overlap((builtin.in), (builtin.in)), finite(0, [no, no, no]), cannot_loop).
+:- pragma termination2_info(overlap.overlap((builtin.in), (builtin.in)), [4, 1, 2], constraints([le([term(1, r(-1, 1))], r(-2, 1)), le([term(2, r(-1, 1))], r(-2, 1))]), not_set, cannot_loop).
Index: tests/term/permutation.trans_opt_exp
===================================================================
RCS file: /home/mercury1/repository/tests/term/permutation.trans_opt_exp,v
retrieving revision 1.4
diff -u -r1.4 permutation.trans_opt_exp
--- tests/term/permutation.trans_opt_exp 17 Jan 2003 05:57:16 -0000 1.4
+++ tests/term/permutation.trans_opt_exp 2 Jun 2005 08:49:21 -0000
@@ -1,2 +1,3 @@
:- module permutation.
:- pragma termination_info(permutation.perm((builtin.in), (builtin.out)), finite(0, [no, yes, no]), cannot_loop).
+:- pragma termination2_info(permutation.perm((builtin.in), (builtin.out)), [9, 1, 2], constraints([eq([term(1, r(1, 1)), term(2, r(-1, 1))], r(0, 1))]), not_set, cannot_loop).
Index: tests/term/pl1_1.trans_opt_exp
===================================================================
RCS file: /home/mercury1/repository/tests/term/pl1_1.trans_opt_exp,v
retrieving revision 1.5
diff -u -r1.5 pl1_1.trans_opt_exp
--- tests/term/pl1_1.trans_opt_exp 8 Dec 2003 03:42:15 -0000 1.5
+++ tests/term/pl1_1.trans_opt_exp 2 Jun 2005 08:49:21 -0000
@@ -1,3 +1,5 @@
:- module pl1_1.
:- pragma termination_info(pl1_1.append((builtin.in), (builtin.in), (builtin.out)), finite(0, [no, yes, yes, no]), cannot_loop).
:- pragma termination_info(pl1_1.append((builtin.out), (builtin.out), (builtin.in)), finite(0, [no, no, no, yes]), cannot_loop).
+:- pragma termination2_info(pl1_1.append((builtin.in), (builtin.in), (builtin.out)), [7, 1, 2, 3], constraints([eq([term(1, r(1, 1)), term(2, r(1, 1)), term(3, r(-1, 1))], r(0, 1))]), not_set, cannot_loop).
+:- pragma termination2_info(pl1_1.append((builtin.out), (builtin.out), (builtin.in)), [7, 1, 2, 3], constraints([eq([term(1, r(1, 1)), term(2, r(1, 1)), term(3, r(-1, 1))], r(0, 1))]), not_set, cannot_loop).
Index: tests/term/pl1_2.trans_opt_exp
===================================================================
RCS file: /home/mercury1/repository/tests/term/pl1_2.trans_opt_exp,v
retrieving revision 1.5
diff -u -r1.5 pl1_2.trans_opt_exp
--- tests/term/pl1_2.trans_opt_exp 8 Dec 2003 03:42:15 -0000 1.5
+++ tests/term/pl1_2.trans_opt_exp 2 Jun 2005 08:49:21 -0000
@@ -1,2 +1,3 @@
:- module pl1_2.
:- pragma termination_info(pl1_2.perm((builtin.in), (builtin.out)), finite(0, [no, yes, no]), cannot_loop).
+:- pragma termination2_info(pl1_2.perm((builtin.in), (builtin.out)), [9, 1, 2], constraints([eq([term(1, r(1, 1)), term(2, r(-1, 1))], r(0, 1))]), not_set, cannot_loop).
Index: tests/term/pl2_3_1.trans_opt_exp
===================================================================
RCS file: /home/mercury1/repository/tests/term/pl2_3_1.trans_opt_exp,v
retrieving revision 1.5
diff -u -r1.5 pl2_3_1.trans_opt_exp
--- tests/term/pl2_3_1.trans_opt_exp 8 Dec 2003 03:42:15 -0000 1.5
+++ tests/term/pl2_3_1.trans_opt_exp 2 Jun 2005 08:49:21 -0000
@@ -1,2 +1,3 @@
:- module pl2_3_1.
:- pragma termination_info(pl2_3_1.p((builtin.in), (builtin.out)), finite(0, [yes, no]), can_loop).
+:- pragma termination2_info(pl2_3_1.p((builtin.in), (builtin.out)), [1, 2], constraints([]), not_set, can_loop).
Index: tests/term/pl3_1_1.trans_opt_exp
===================================================================
RCS file: /home/mercury1/repository/tests/term/pl3_1_1.trans_opt_exp,v
retrieving revision 1.3
diff -u -r1.3 pl3_1_1.trans_opt_exp
--- tests/term/pl3_1_1.trans_opt_exp 8 Dec 2003 03:42:15 -0000 1.3
+++ tests/term/pl3_1_1.trans_opt_exp 2 Jun 2005 08:49:21 -0000
@@ -6,3 +6,10 @@
:- pragma termination_info((pl3_1_1.e), finite(0, []), can_loop).
:- pragma termination_info((pl3_1_1.f), finite(0, []), can_loop).
:- pragma termination_info((pl3_1_1.g), finite(0, []), can_loop).
+:- pragma termination2_info((pl3_1_1.a), [], constraints([]), not_set, can_loop).
+:- pragma termination2_info((pl3_1_1.b), [], constraints([]), not_set, can_loop).
+:- pragma termination2_info((pl3_1_1.c), [], constraints([]), not_set, can_loop).
+:- pragma termination2_info((pl3_1_1.d), [], constraints([]), not_set, can_loop).
+:- pragma termination2_info((pl3_1_1.e), [], constraints([]), not_set, can_loop).
+:- pragma termination2_info((pl3_1_1.f), [], constraints([]), not_set, can_loop).
+:- pragma termination2_info((pl3_1_1.g), [], constraints([]), not_set, can_loop).
Index: tests/term/pl3_5_6.trans_opt_exp
===================================================================
RCS file: /home/mercury1/repository/tests/term/pl3_5_6.trans_opt_exp,v
retrieving revision 1.5
diff -u -r1.5 pl3_5_6.trans_opt_exp
--- tests/term/pl3_5_6.trans_opt_exp 8 Dec 2003 03:42:15 -0000 1.5
+++ tests/term/pl3_5_6.trans_opt_exp 2 Jun 2005 08:49:21 -0000
@@ -1,2 +1,3 @@
:- module pl3_5_6.
:- pragma termination_info(pl3_5_6.p((builtin.out)), infinite, can_loop).
+:- pragma termination2_info(pl3_5_6.p((builtin.out)), [1], constraints([le([term(1, r(-1, 1))], r(-2, 1))]), not_set, can_loop).
Index: tests/term/pl3_5_6a.trans_opt_exp
===================================================================
RCS file: /home/mercury1/repository/tests/term/pl3_5_6a.trans_opt_exp,v
retrieving revision 1.4
diff -u -r1.4 pl3_5_6a.trans_opt_exp
--- tests/term/pl3_5_6a.trans_opt_exp 17 Jan 2003 05:57:16 -0000 1.4
+++ tests/term/pl3_5_6a.trans_opt_exp 2 Jun 2005 08:49:21 -0000
@@ -1,2 +1,3 @@
:- module pl3_5_6a.
:- pragma termination_info(pl3_5_6a.p((builtin.out)), infinite, can_loop).
+:- pragma termination2_info(pl3_5_6a.p((builtin.out)), [1], constraints([eq([term(1, r(1, 1))], r(2, 1))]), not_set, can_loop).
Index: tests/term/pl4_01.trans_opt_exp
===================================================================
RCS file: /home/mercury1/repository/tests/term/pl4_01.trans_opt_exp,v
retrieving revision 1.5
diff -u -r1.5 pl4_01.trans_opt_exp
--- tests/term/pl4_01.trans_opt_exp 8 Dec 2003 03:42:15 -0000 1.5
+++ tests/term/pl4_01.trans_opt_exp 2 Jun 2005 08:49:21 -0000
@@ -1,3 +1,5 @@
:- module pl4_01.
:- pragma termination_info(pl4_01.append3((builtin.in), (builtin.in), (builtin.in), (builtin.out)), finite(0, [no, yes, yes, yes, no]), cannot_loop).
:- pragma termination_info(pl4_01.append3((builtin.out), (builtin.out), (builtin.out), (builtin.in)), finite(0, [no, no, no, no, yes]), cannot_loop).
+:- pragma termination2_info(pl4_01.append3((builtin.in), (builtin.in), (builtin.in), (builtin.out)), [6, 1, 2, 3, 4], constraints([eq([term(1, r(1, 1)), term(2, r(1, 1)), term(3, r(1, 1)), term(4, r(-1, 1))], r(0, 1))]), not_set, cannot_loop).
+:- pragma termination2_info(pl4_01.append3((builtin.out), (builtin.out), (builtin.out), (builtin.in)), [6, 1, 2, 3, 4], constraints([eq([term(1, r(1, 1)), term(2, r(1, 1)), term(3, r(1, 1)), term(4, r(-1, 1))], r(0, 1))]), not_set, cannot_loop).
Index: tests/term/pl4_4_3.trans_opt_exp
===================================================================
RCS file: /home/mercury1/repository/tests/term/pl4_4_3.trans_opt_exp,v
retrieving revision 1.5
diff -u -r1.5 pl4_4_3.trans_opt_exp
--- tests/term/pl4_4_3.trans_opt_exp 8 Dec 2003 03:42:15 -0000 1.5
+++ tests/term/pl4_4_3.trans_opt_exp 2 Jun 2005 08:49:21 -0000
@@ -1,2 +1,3 @@
:- module pl4_4_3.
:- pragma termination_info(pl4_4_3.merge((builtin.in), (builtin.in), (builtin.out)), finite(0, [yes, yes, no]), cannot_loop).
+:- pragma termination2_info(pl4_4_3.merge((builtin.in), (builtin.in), (builtin.out)), [1, 2, 3], constraints([le([term(3, r(-1, 1))], r(0, 1))]), not_set, cannot_loop).
Index: tests/term/pl4_4_6a.trans_opt_exp
===================================================================
RCS file: /home/mercury1/repository/tests/term/pl4_4_6a.trans_opt_exp,v
retrieving revision 1.4
diff -u -r1.4 pl4_4_6a.trans_opt_exp
--- tests/term/pl4_4_6a.trans_opt_exp 17 Jan 2003 05:57:16 -0000 1.4
+++ tests/term/pl4_4_6a.trans_opt_exp 2 Jun 2005 08:49:21 -0000
@@ -1,2 +1,3 @@
:- module pl4_4_6a.
:- pragma termination_info(pl4_4_6a.perm((builtin.in), (builtin.out)), finite(0, [no, yes, no]), cannot_loop).
+:- pragma termination2_info(pl4_4_6a.perm((builtin.in), (builtin.out)), [6, 1, 2], constraints([eq([term(1, r(1, 1)), term(2, r(-1, 1))], r(0, 1)), le([term(2, r(-1, 1))], r(0, 1))]), not_set, cannot_loop).
Index: tests/term/pl4_5_2.trans_opt_exp
===================================================================
RCS file: /home/mercury1/repository/tests/term/pl4_5_2.trans_opt_exp,v
retrieving revision 1.5
diff -u -r1.5 pl4_5_2.trans_opt_exp
--- tests/term/pl4_5_2.trans_opt_exp 8 Dec 2003 03:42:16 -0000 1.5
+++ tests/term/pl4_5_2.trans_opt_exp 2 Jun 2005 08:49:21 -0000
@@ -1,2 +1,3 @@
:- module pl4_5_2.
:- pragma termination_info(pl4_5_2.s((builtin.in), (builtin.out)), infinite, can_loop).
+:- pragma termination2_info(pl4_5_2.s((builtin.in), (builtin.out)), [1, 2], constraints([le([term(1, r(-1, 1))], r(-2, 1))]), not_set, can_loop).
Index: tests/term/pl4_5_3a.trans_opt_exp
===================================================================
RCS file: /home/mercury1/repository/tests/term/pl4_5_3a.trans_opt_exp,v
retrieving revision 1.4
diff -u -r1.4 pl4_5_3a.trans_opt_exp
--- tests/term/pl4_5_3a.trans_opt_exp 17 Jan 2003 05:57:16 -0000 1.4
+++ tests/term/pl4_5_3a.trans_opt_exp 2 Jun 2005 08:49:21 -0000
@@ -1,3 +1,5 @@
:- module pl4_5_3a.
:- pragma termination_info(pl4_5_3a.p((builtin.in)), finite(0, [no]), can_loop).
:- pragma termination_info(pl4_5_3a.p((builtin.out)), finite(0, [no]), can_loop).
+:- pragma termination2_info(pl4_5_3a.p((builtin.in)), [1], constraints([]), not_set, can_loop).
+:- pragma termination2_info(pl4_5_3a.p((builtin.out)), [1], constraints([]), not_set, can_loop).
Index: tests/term/pl5_2_2.trans_opt_exp
===================================================================
RCS file: /home/mercury1/repository/tests/term/pl5_2_2.trans_opt_exp,v
retrieving revision 1.7
diff -u -r1.7 pl5_2_2.trans_opt_exp
--- tests/term/pl5_2_2.trans_opt_exp 8 Dec 2003 03:42:16 -0000 1.7
+++ tests/term/pl5_2_2.trans_opt_exp 2 Jun 2005 08:49:21 -0000
@@ -1,2 +1,3 @@
:- module pl5_2_2.
:- pragma termination_info(pl5_2_2.turing((builtin.in), (builtin.in), (builtin.in), (builtin.out)), infinite, can_loop).
+:- pragma termination2_info(pl5_2_2.turing((builtin.in), (builtin.in), (builtin.in), (builtin.out)), [1, 2, 3, 4], constraints([le([term(1, r(-1, 1))], r(-3, 1)), le([term(3, r(-1, 1))], r(-2, 1))]), not_set, can_loop).
Index: tests/term/pl6_1_1.trans_opt_exp
===================================================================
RCS file: /home/mercury1/repository/tests/term/pl6_1_1.trans_opt_exp,v
retrieving revision 1.5
diff -u -r1.5 pl6_1_1.trans_opt_exp
--- tests/term/pl6_1_1.trans_opt_exp 8 Dec 2003 03:42:16 -0000 1.5
+++ tests/term/pl6_1_1.trans_opt_exp 2 Jun 2005 08:49:21 -0000
@@ -1,2 +1,3 @@
:- module pl6_1_1.
:- pragma termination_info(pl6_1_1.qsort((builtin.in), (builtin.out)), finite(0, [yes, no]), cannot_loop).
+:- pragma termination2_info(pl6_1_1.qsort((builtin.in), (builtin.out)), [1, 2], constraints([eq([term(1, r(1, 1)), term(2, r(-1, 1))], r(0, 1)), le([term(2, r(-1, 1))], r(0, 1))]), not_set, cannot_loop).
Index: tests/term/pl7_2_9.trans_opt_exp
===================================================================
RCS file: /home/mercury1/repository/tests/term/pl7_2_9.trans_opt_exp,v
retrieving revision 1.5
diff -u -r1.5 pl7_2_9.trans_opt_exp
--- tests/term/pl7_2_9.trans_opt_exp 8 Dec 2003 03:42:16 -0000 1.5
+++ tests/term/pl7_2_9.trans_opt_exp 2 Jun 2005 08:49:21 -0000
@@ -1,2 +1,3 @@
:- module pl7_2_9.
:- pragma termination_info(pl7_2_9.mult((builtin.in), (builtin.in), (builtin.out)), infinite, cannot_loop).
+:- pragma termination2_info(pl7_2_9.mult((builtin.in), (builtin.in), (builtin.out)), [1, 2, 3], constraints([le([term(1, r(-1, 1))], r(0, 1))]), not_set, cannot_loop).
Index: tests/term/pl7_6_2a.trans_opt_exp
===================================================================
RCS file: /home/mercury1/repository/tests/term/pl7_6_2a.trans_opt_exp,v
retrieving revision 1.4
diff -u -r1.4 pl7_6_2a.trans_opt_exp
--- tests/term/pl7_6_2a.trans_opt_exp 17 Jan 2003 05:57:17 -0000 1.4
+++ tests/term/pl7_6_2a.trans_opt_exp 2 Jun 2005 08:49:21 -0000
@@ -1,2 +1,3 @@
:- module pl7_6_2a.
:- pragma termination_info(pl7_6_2a.reach((builtin.in), (builtin.in), (builtin.in)), finite(0, [no, no, no, no]), can_loop).
+:- pragma termination2_info(pl7_6_2a.reach((builtin.in), (builtin.in), (builtin.in)), [11, 1, 2, 3], constraints([le([term(3, r(-1, 1))], r(-2, 1))]), not_set, can_loop).
Index: tests/term/pl7_6_2b.trans_opt_exp
===================================================================
RCS file: /home/mercury1/repository/tests/term/pl7_6_2b.trans_opt_exp,v
retrieving revision 1.4
diff -u -r1.4 pl7_6_2b.trans_opt_exp
--- tests/term/pl7_6_2b.trans_opt_exp 17 Jan 2003 05:57:17 -0000 1.4
+++ tests/term/pl7_6_2b.trans_opt_exp 2 Jun 2005 08:49:21 -0000
@@ -1,2 +1,3 @@
:- module pl7_6_2b.
:- pragma termination_info(pl7_6_2b.reach((builtin.in), (builtin.in), (builtin.in), (builtin.in)), finite(0, [no, no, no, no, no]), can_loop).
+:- pragma termination2_info(pl7_6_2b.reach((builtin.in), (builtin.in), (builtin.in), (builtin.in)), [13, 1, 2, 3, 4], constraints([le([term(3, r(-1, 1))], r(-2, 1)), le([term(1, r(-1, 1))], r(0, 1))]), not_set, can_loop).
Index: tests/term/pl7_6_2c.trans_opt_exp
===================================================================
RCS file: /home/mercury1/repository/tests/term/pl7_6_2c.trans_opt_exp,v
retrieving revision 1.4
diff -u -r1.4 pl7_6_2c.trans_opt_exp
--- tests/term/pl7_6_2c.trans_opt_exp 17 Jan 2003 05:57:17 -0000 1.4
+++ tests/term/pl7_6_2c.trans_opt_exp 2 Jun 2005 08:49:21 -0000
@@ -1,2 +1,3 @@
:- module pl7_6_2c.
:- pragma termination_info(pl7_6_2c.reach((builtin.in), (builtin.in), (builtin.in), (builtin.in)), finite(0, [no, no, no, no, no]), cannot_loop).
+:- pragma termination2_info(pl7_6_2c.reach((builtin.in), (builtin.in), (builtin.in), (builtin.in)), [13, 1, 2, 3, 4], constraints([le([term(2, r(-1, 1))], r(0, 1)), le([term(3, r(-1, 1))], r(-2, 1))]), not_set, cannot_loop).
Index: tests/term/pl8_2_1.trans_opt_exp
===================================================================
RCS file: /home/mercury1/repository/tests/term/pl8_2_1.trans_opt_exp,v
retrieving revision 1.5
diff -u -r1.5 pl8_2_1.trans_opt_exp
--- tests/term/pl8_2_1.trans_opt_exp 8 Dec 2003 03:42:16 -0000 1.5
+++ tests/term/pl8_2_1.trans_opt_exp 2 Jun 2005 08:49:21 -0000
@@ -1,2 +1,3 @@
:- module pl8_2_1.
:- pragma termination_info(pl8_2_1.mergesort((builtin.in), (builtin.out)), finite(0, [yes, no]), can_loop).
+:- pragma termination2_info(pl8_2_1.mergesort((builtin.in), (builtin.out)), [1, 2], constraints([le([term(1, r(-1, 1))], r(0, 1))]), not_set, can_loop).
Index: tests/term/pl8_2_1a.trans_opt_exp
===================================================================
RCS file: /home/mercury1/repository/tests/term/pl8_2_1a.trans_opt_exp,v
retrieving revision 1.4
diff -u -r1.4 pl8_2_1a.trans_opt_exp
--- tests/term/pl8_2_1a.trans_opt_exp 17 Jan 2003 05:57:17 -0000 1.4
+++ tests/term/pl8_2_1a.trans_opt_exp 2 Jun 2005 08:49:21 -0000
@@ -1,2 +1,3 @@
:- module pl8_2_1a.
:- pragma termination_info(pl8_2_1a.mergesort((builtin.in), (builtin.out)), finite(0, [yes, no]), cannot_loop).
+:- pragma termination2_info(pl8_2_1a.mergesort((builtin.in), (builtin.out)), [1, 2], constraints([le([term(1, r(-1, 1))], r(0, 1))]), not_set, cannot_loop).
Index: tests/term/pl8_3_1.trans_opt_exp
===================================================================
RCS file: /home/mercury1/repository/tests/term/pl8_3_1.trans_opt_exp,v
retrieving revision 1.5
diff -u -r1.5 pl8_3_1.trans_opt_exp
--- tests/term/pl8_3_1.trans_opt_exp 8 Dec 2003 03:42:16 -0000 1.5
+++ tests/term/pl8_3_1.trans_opt_exp 2 Jun 2005 08:49:21 -0000
@@ -1,2 +1,3 @@
:- module pl8_3_1.
:- pragma termination_info(pl8_3_1.xminsort((builtin.in), (builtin.out)), infinite, can_loop).
+:- pragma termination2_info(pl8_3_1.xminsort((builtin.in), (builtin.out)), [1, 2], constraints([]), not_set, can_loop).
Index: tests/term/pl8_3_1a.trans_opt_exp
===================================================================
RCS file: /home/mercury1/repository/tests/term/pl8_3_1a.trans_opt_exp,v
retrieving revision 1.4
diff -u -r1.4 pl8_3_1a.trans_opt_exp
--- tests/term/pl8_3_1a.trans_opt_exp 17 Jan 2003 05:57:17 -0000 1.4
+++ tests/term/pl8_3_1a.trans_opt_exp 2 Jun 2005 08:49:21 -0000
@@ -1,2 +1,3 @@
:- module pl8_3_1a.
:- pragma termination_info(pl8_3_1a.xminsort((builtin.in), (builtin.out)), infinite, cannot_loop).
+:- pragma termination2_info(pl8_3_1a.xminsort((builtin.in), (builtin.out)), [1, 2], constraints([eq([term(1, r(1, 1)), term(2, r(-1, 1))], r(0, 1))]), not_set, cannot_loop).
Index: tests/term/pl8_4_1.trans_opt_exp
===================================================================
RCS file: /home/mercury1/repository/tests/term/pl8_4_1.trans_opt_exp,v
retrieving revision 1.5
diff -u -r1.5 pl8_4_1.trans_opt_exp
--- tests/term/pl8_4_1.trans_opt_exp 8 Dec 2003 03:42:16 -0000 1.5
+++ tests/term/pl8_4_1.trans_opt_exp 2 Jun 2005 08:49:21 -0000
@@ -1,3 +1,5 @@
:- module pl8_4_1.
:- pragma termination_info(pl8_4_1.even((builtin.in)), finite(0, [no]), cannot_loop).
:- pragma termination_info(pl8_4_1.odd((builtin.in)), finite(0, [no]), cannot_loop).
+:- pragma termination2_info(pl8_4_1.even((builtin.in)), [1], constraints([le([term(1, r(-1, 1))], r(0, 1))]), not_set, cannot_loop).
+:- pragma termination2_info(pl8_4_1.odd((builtin.in)), [3], constraints([le([term(3, r(-1, 1))], r(-1, 1))]), not_set, cannot_loop).
Index: tests/term/pl8_4_2.trans_opt_exp
===================================================================
RCS file: /home/mercury1/repository/tests/term/pl8_4_2.trans_opt_exp,v
retrieving revision 1.5
diff -u -r1.5 pl8_4_2.trans_opt_exp
--- tests/term/pl8_4_2.trans_opt_exp 8 Dec 2003 03:42:16 -0000 1.5
+++ tests/term/pl8_4_2.trans_opt_exp 2 Jun 2005 08:49:21 -0000
@@ -1,2 +1,3 @@
:- module pl8_4_2.
:- pragma termination_info(pl8_4_2.e((builtin.in), (builtin.out)), finite(-1, [yes, no]), cannot_loop).
+:- pragma termination2_info(pl8_4_2.e((builtin.in), (builtin.out)), [1, 2], constraints([le([term(1, r(-1, 1)), term(2, r(1, 1))], r(-2, 1)), le([term(2, r(-1, 1))], r(0, 1))]), not_set, cannot_loop).
Index: tests/term/pragma_non_term.trans_opt_exp
===================================================================
RCS file: /home/mercury1/repository/tests/term/pragma_non_term.trans_opt_exp,v
retrieving revision 1.1
diff -u -r1.1 pragma_non_term.trans_opt_exp
--- tests/term/pragma_non_term.trans_opt_exp 25 Jun 2003 06:57:34 -0000 1.1
+++ tests/term/pragma_non_term.trans_opt_exp 2 Jun 2005 08:49:21 -0000
@@ -1,2 +1,3 @@
:- module pragma_non_term.
:- pragma termination_info((pragma_non_term.a), finite(0, []), can_loop).
+:- pragma termination2_info((pragma_non_term.a), [], constraints([]), not_set, can_loop).
Index: tests/term/pragma_term.trans_opt_exp
===================================================================
RCS file: /home/mercury1/repository/tests/term/pragma_term.trans_opt_exp,v
retrieving revision 1.1
diff -u -r1.1 pragma_term.trans_opt_exp
--- tests/term/pragma_term.trans_opt_exp 25 Jun 2003 06:57:34 -0000 1.1
+++ tests/term/pragma_term.trans_opt_exp 2 Jun 2005 08:49:21 -0000
@@ -1,2 +1,3 @@
:- module pragma_term.
:- pragma termination_info((pragma_term.a), finite(0, []), cannot_loop).
+:- pragma termination2_info((pragma_term.a), [], constraints([]), not_set, cannot_loop).
Index: tests/term/promise_will_not_throw.trans_opt_exp
===================================================================
RCS file: /home/mercury1/repository/tests/term/promise_will_not_throw.trans_opt_exp,v
retrieving revision 1.1
diff -u -r1.1 promise_will_not_throw.trans_opt_exp
--- tests/term/promise_will_not_throw.trans_opt_exp 10 Dec 2004 07:03:44 -0000 1.1
+++ tests/term/promise_will_not_throw.trans_opt_exp 2 Jun 2005 08:49:21 -0000
@@ -3,6 +3,10 @@
:- pragma termination_info(promise_will_not_throw.bar((builtin.in), (builtin.out)), infinite, can_loop).
:- pragma termination_info(promise_will_not_throw.baz((builtin.in), (builtin.out)), infinite, cannot_loop).
:- pragma termination_info(promise_will_not_throw.quux((builtin.in), (builtin.out)), infinite, cannot_loop).
+:- pragma termination2_info(promise_will_not_throw.foo((builtin.in), (builtin.out)), [1, 2], constraints([]), not_set, can_loop).
+:- pragma termination2_info(promise_will_not_throw.bar((builtin.in), (builtin.out)), [1, 2], constraints([]), not_set, can_loop).
+:- pragma termination2_info(promise_will_not_throw.baz((builtin.in), (builtin.out)), [1, 2], constraints([]), not_set, cannot_loop).
+:- pragma termination2_info(promise_will_not_throw.quux((builtin.in), (builtin.out)), [1, 2], constraints([]), not_set, cannot_loop).
:- pragma exceptions(predicate, (promise_will_not_throw.foo), 2, 0, will_not_throw).
:- pragma exceptions(predicate, (promise_will_not_throw.bar), 2, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (promise_will_not_throw.baz), 2, 0, will_not_throw).
Index: tests/term/queens.trans_opt_exp
===================================================================
RCS file: /home/mercury1/repository/tests/term/queens.trans_opt_exp,v
retrieving revision 1.4
diff -u -r1.4 queens.trans_opt_exp
--- tests/term/queens.trans_opt_exp 17 Jan 2003 05:57:17 -0000 1.4
+++ tests/term/queens.trans_opt_exp 2 Jun 2005 08:49:21 -0000
@@ -1,2 +1,3 @@
:- module queens.
:- pragma termination_info(queens.queens((builtin.in), (builtin.out)), finite(0, [yes, no]), cannot_loop).
+:- pragma termination2_info(queens.queens((builtin.in), (builtin.out)), [1, 2], constraints([eq([term(1, r(1, 1)), term(2, r(-1, 1))], r(0, 1)), le([term(2, r(-1, 1))], r(0, 1))]), not_set, cannot_loop).
Index: tests/term/quicksort.trans_opt_exp
===================================================================
RCS file: /home/mercury1/repository/tests/term/quicksort.trans_opt_exp,v
retrieving revision 1.4
diff -u -r1.4 quicksort.trans_opt_exp
--- tests/term/quicksort.trans_opt_exp 17 Jan 2003 05:57:17 -0000 1.4
+++ tests/term/quicksort.trans_opt_exp 2 Jun 2005 08:49:21 -0000
@@ -1,2 +1,3 @@
:- module quicksort.
:- pragma termination_info(quicksort.qs((builtin.in), (builtin.out)), finite(0, [yes, no]), cannot_loop).
+:- pragma termination2_info(quicksort.qs((builtin.in), (builtin.out)), [1, 2], constraints([eq([term(1, r(1, 1)), term(2, r(-1, 1))], r(0, 1))]), not_set, cannot_loop).
Index: tests/term/select.trans_opt_exp
===================================================================
RCS file: /home/mercury1/repository/tests/term/select.trans_opt_exp,v
retrieving revision 1.4
diff -u -r1.4 select.trans_opt_exp
--- tests/term/select.trans_opt_exp 17 Jan 2003 05:57:17 -0000 1.4
+++ tests/term/select.trans_opt_exp 2 Jun 2005 08:49:21 -0000
@@ -1,2 +1,3 @@
:- module select.
:- pragma termination_info(select.select((builtin.out), (builtin.in), (builtin.out)), finite(-1, [no, no, yes, no]), cannot_loop).
+:- pragma termination2_info(select.select((builtin.out), (builtin.in), (builtin.out)), [5, 1, 2, 3], constraints([eq([term(1, r(1, 1)), term(2, r(-1, 1)), term(3, r(1, 1))], r(-2, 1)), le([term(3, r(-1, 1))], r(0, 1)), le([term(2, r(-1, 1))], r(0, 1))]), not_set, cannot_loop).
Index: tests/term/subset.trans_opt_exp
===================================================================
RCS file: /home/mercury1/repository/tests/term/subset.trans_opt_exp,v
retrieving revision 1.4
diff -u -r1.4 subset.trans_opt_exp
--- tests/term/subset.trans_opt_exp 17 Jan 2003 05:57:17 -0000 1.4
+++ tests/term/subset.trans_opt_exp 2 Jun 2005 08:49:21 -0000
@@ -1,3 +1,5 @@
:- module subset.
:- pragma termination_info(subset.subset((builtin.in), (builtin.in)), finite(0, [no, no, no]), cannot_loop).
:- pragma termination_info(subset.subset((builtin.out), (builtin.in)), infinite, can_loop).
+:- pragma termination2_info(subset.subset((builtin.in), (builtin.in)), [5, 1, 2], constraints([le([term(1, r(-1, 1))], r(0, 1))]), not_set, cannot_loop).
+:- pragma termination2_info(subset.subset((builtin.out), (builtin.in)), [5, 1, 2], constraints([le([term(1, r(-1, 1))], r(0, 1))]), not_set, can_loop).
Index: tests/term/sum.trans_opt_exp
===================================================================
RCS file: /home/mercury1/repository/tests/term/sum.trans_opt_exp,v
retrieving revision 1.4
diff -u -r1.4 sum.trans_opt_exp
--- tests/term/sum.trans_opt_exp 17 Jan 2003 05:57:17 -0000 1.4
+++ tests/term/sum.trans_opt_exp 2 Jun 2005 08:49:21 -0000
@@ -1,2 +1,3 @@
:- module sum.
:- pragma termination_info(sum.sum((builtin.out), (builtin.out), (builtin.in)), finite(0, [no, no, yes]), cannot_loop).
+:- pragma termination2_info(sum.sum((builtin.out), (builtin.out), (builtin.in)), [1, 2, 3], constraints([eq([term(1, r(1, 1)), term(2, r(1, 1)), term(3, r(-1, 1))], r(0, 1)), le([term(1, r(-1, 1))], r(0, 1))]), not_set, cannot_loop).
Index: tests/term/vangelder.trans_opt_exp
===================================================================
RCS file: /home/mercury1/repository/tests/term/vangelder.trans_opt_exp,v
retrieving revision 1.6
diff -u -r1.6 vangelder.trans_opt_exp
--- tests/term/vangelder.trans_opt_exp 17 Jan 2003 05:57:17 -0000 1.6
+++ tests/term/vangelder.trans_opt_exp 2 Jun 2005 08:49:21 -0000
@@ -1,2 +1,3 @@
:- module vangelder.
:- pragma termination_info(vangelder.q((builtin.in), (builtin.in)), finite(0, [no, no]), can_loop).
+:- pragma termination2_info(vangelder.q((builtin.in), (builtin.in)), [1, 2], constraints([eq([term(1, r(1, 1))], r(0, 1)), le([term(2, r(-1, 1))], r(0, 1))]), not_set, can_loop).
--------------------------------------------------------------------------
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