I just had a course where my teacher used this code, so I copied it to try it on PyCharm Community Edition and it says unresolved reference for helper_predicates, is_sorted, all_lte_all, and is_permutation. When he used this code in class it worked perfectly, can someone explain if helper_predicates exists as a built-in module or if I have to install something? from helper_predicates import * import random def lusinvariant(values, orig_values, i): return is_sorted(values[:i]) and \ is_permutation(values, orig_values) and \ all_lte_all(values[:i], values[i:]) def minimum_position(values, start): minPos = start i = start + 1 assert lte_all(values[minPos], values[start:i]) while i != len(values): assert lte_all(values[minPos], values[start:i]) if values < values[minPos]: minPos = i i += 1 assert lte_all(values[minPos], values[start:i]) assert lte_all(values[minPos], values[start:i]) return minPos # Hint: def selection_sort_recursive(values, start) def selection_sort(values): orig_values = values[:] # enkel nodig voor lusinvariant i = 0 assert lusinvariant(values, orig_values, i) while i != len(values): assert lusinvariant(values, orig_values, i) minPos = minimum_position(values, i) values, values[minPos] = values[minPos], values i += 1 assert lusinvariant(values, orig_values, i) assert lusinvariant(values, orig_values, i) # Test lst = list(range(20)) random.shuffle(lst) print(lst) print("Iteratief:") # Hint: selection_sort_recursive(kopie, 0) selection_sort(lst) print(lst) Continue reading...