There should be a test on requisite contrains. Extend isvalid_curriculum to handle this.
Example:
Course A --- PREREQ --> Course C
| |
COREQ STRICT-CO
| |
V V
Course B Course B
Course A lists Course B as a corequisite (may be taken prior to or at the same time as Course A).
Course A is a prerequisite of Course C (Course A must be taken before Course C)
Course B is listed as a strict corequisite of Course C (MUST be taken at the same time as Course C)
These three cannot all be true. This locks Course B to be taken after Course A, but that violates the first corequisite constraint.
There should be a test on requisite contrains. Extend
isvalid_curriculum
to handle this.Example:
Course A lists Course B as a corequisite (may be taken prior to or at the same time as Course A). Course A is a prerequisite of Course C (Course A must be taken before Course C) Course B is listed as a strict corequisite of Course C (MUST be taken at the same time as Course C) These three cannot all be true. This locks Course B to be taken after Course A, but that violates the first corequisite constraint.