An Equivalence Partition provides a method for splitting an input domain of a program into classes of data from which test cases can be derived. It is a set of objects linked with symmetrical, transitive, and reflexive relationships, and they all have an equivalence class to represent how they are related. For example, consider a student with three different types of pens in their backpack: one blue pen, one black pen, and one red pen. The student could judge these three pens as equivalent if they were all used to write the same thing at the same time, such as notes in class. The student could also judge these three pens as equivalent if they were all used for different purposes but still had the same basic structure and function. For example, the blue pen might be used for writing lecture notes during class, while the black pen was used for drawing pictures of cats during art class after school.