LOAD/SAVE/CHECK COMPATIBILITY OF HYPOS Some learning algorithms take a long time to run, and so it might be worth saving their results. The following two optional functions follow our standard *r_error_expo convention to report loading/saving problems: r_error_expo is set to NULL if the operation succeeds, and is otherwise set to a message explaining the problem. char *mk_load_xxx_hypo(char *filename, expo **r_error_expo) void save_xxx_hypo(char *hypo, char *filename, expo **r_error_expo) A freshly loaded hypo might be incompatible with the current dataset or the current attributes of interest. The next (optional) function checks that. If the hypo is compatible, then this function sets *r_error_expo to NULL. If the hypo is incompatible, this function sets *r_error_expo to an explanation of the problem. If this function is not provided, unfortunate and potentially catastrophic errors may occur if the hypo is incompatible. bool xxx_hypo_compatiblep(examples *exams, ivec *in_att_nums, ivec *out_att_nums, char *hypo, **r_error_expo)