Title: Analyzing data dependencies, detecting AND-parallelism and optimizing backtracking in prolog programs