Tabling methods

Oliver Hutchison ohutch at students.cs.mu.OZ.AU
Thu Mar 12 13:14:24 AEDT 1998


I'm not sure if anyone can remember this but why is it that we have both a
memo and a memo+loop_check transformation. I really don't see the
advantage of having memoing without the loop check. There is no extra
overhead for the loop check and it gives a much better error message than
heap overflow if an infinite loop is detected. 	

I suggest that we always do loop checking for the memo case and use the
loop_check case to just do the loop check, no memoing of answers.

This would result it three types of tabling :

	`loop_check' simply detect infinite looping and issue an error
		message if it is found. Valid in all dets.
	`memo' detect looping but also memo answers. This would
		primarily be used as an optimization. Valid in all dets.
	'minimal' implement the minimal model semantics. Valid in semidet
		and nondet dets. NOTE : This will change det procs to 
		semidet so it will still work with any piece of existing 
		code. Det code will just have to be declared semidet
		instead of det.

NOTE : what I had previously been describing as nondet memoing will now
fall into the `minimal' category. 





More information about the developers mailing list