Files
mercury/tests/hard_coded/quantifier.m
Fergus Henderson c5f103392a Fix a problem reported by Dante Baldan <dba@info.fundp.ac.be>,
Estimated hours taken: 2

doc/reference_manual.texi:
compiler/make_hlds.m:
	Fix a problem reported by Dante Baldan <dba@info.fundp.ac.be>,
	where the use of `all [X] p(X) <=> q(X)' lead to spurious mode
	errors, due to failure to eliminate certain kinds of double
	negations: in particular, the compiler should convert
	negated conjunctions of negations into disjunctions.

tests/hard_coded/Mmakefile:
tests/hard_coded/quantifier.m:
tests/hard_coded/quantifier.exp:
	Add a regression test for the above change.
1998-06-12 07:05:44 +00:00

36 lines
516 B
Mathematica

:- module quantifier.
:- interface.
:- import_module io.
:- pred main(io__state::di,io__state::uo) is det.
:- implementation.
:- import_module list, int.
:- pred sum(list(int),int).
:- mode sum(in,out) is det.
sum([],0).
sum([X|L],X + N1) :- sum(L,N1).
:- pred foo(pred(int)).
:- mode foo(free->pred(out) is det) is det.
foo(sum([1,2,3])).
main -->
( {P = lambda([X :: out] is det, X = 6),
foo(Q),
all [X] (call(P,X) <=> call(Q,X))}
->
print("equivalent")
;
print("not equivalent")
), nl.