+ * Uses the OU data structure
+ */
+int co_solve_heuristic(copy_opt_t *co);
+
+/**
+ * Apply Park/Moon coalescing to the graph.
+ * @param co The copy optimization data structure.
+ */
+void co_solve_park_moon(copy_opt_t *co);
+
+/**
+ * Solves the copy minimization problem using another heuristic approach.
+ * Uses the OU and the GRAPH data structure.
+ */
+int co_solve_heuristic_new(copy_opt_t *co);
+
+/**
+ * Solves the copy minimization problem using another heuristic approach implemented in Java.
+ * This function needs a JVM which is started to call the Java module.
+ * Uses the GRAPH data structure.
+ */
+int co_solve_heuristic_java(copy_opt_t *co);
+
+/**
+ * This is the pure C implementation of co_solve_heuristic_java().
+ */
+int co_solve_heuristic_mst(copy_opt_t *co);
+
+/**
+ * Returns the maximal costs possible, i.e. the costs if all
+ * pairs would be assigned different registers.
+ * Uses the OU data structure
+ */
+int co_get_max_copy_costs(const copy_opt_t *co);
+
+/**
+ * Returns the inevitable costs, i.e. the costs of
+ * all copy pairs which interfere.
+ * Uses the OU data structure
+ */
+int co_get_inevit_copy_costs(const copy_opt_t *co);
+
+/**
+ * Returns the current costs the copies are causing.
+ * The result includes inevitable costs and the costs
+ * of the copies regarding the current register allocation
+ * Uses the OU data structure
+ */
+int co_get_copy_costs(const copy_opt_t *co);
+
+/**
+ * Returns a lower bound for the costs of copies in this ou.
+ * The result includes inevitable costs and the costs of a
+ * minimal costs caused by the nodes of the ou.
+ * Uses the OU data structure
+ */
+int co_get_lower_bound(const copy_opt_t *co);
+
+/**
+ * Dump the interference graph according to the Appel/George coalescing contest file format.
+ * See: http://www.cs.princeton.edu/~appel/coalesce/format.html
+ * @note Requires graph structure.
+ * @param co The copy opt object.
+ * @param f A file to dump to.
+ */
+void co_dump_appel_graph(const copy_opt_t *co, FILE *f);
+
+/**
+ * Dumps the IFG of the program splitting after each instruction in the Appel format.
+ * @param co The copy opt object.
+ * @param f The file to dump to.
+ */
+void co_dump_appel_graph_cliques(const copy_opt_t *co, FILE *f);
+/**
+ * Dump the interference graph with the affinity edges and the coloring.
+ * @param co The copy opt structure.
+ * @param f The file to dump to.
+ * @param flags The dump flags (see enum above).
+ */
+void co_dump_ifg_dot(const copy_opt_t *co, FILE *f, unsigned flags);
+
+/**
+ * Constructs another internal representation of the affinity edges
+ */
+void co_build_graph_structure(copy_opt_t *co);
+
+/**
+ * Frees the space used by the graph representation.
+ * Does NOT free the whole copyopt structure
+ */
+void co_free_graph_structure(copy_opt_t *co);
+
+/**
+ * Solves the problem using mixed integer programming
+ * @returns 1 iff solution state was optimal
+ * NYI