def happens-before(S, i, j):
	assume i and j are valid indices in S
	assume i < j

	if i == j:
		return True

	bool depends_arr[i:j] = {false}
	depends_arr[i] = true
	foreach k in [i, j]:
		if (depends_arr[k]):
			foreach l in [k + 1, j]:
				if (depends_arr[l] == false && depends(S_k,S_l)):
					depends_arr[l] = true

	return depends_arr[j]

