+
+prop_x_rotation_doesnt_affect_front :: Tetrahedron -> Bool
+prop_x_rotation_doesnt_affect_front t =
+ expr1 == expr2
+ where
+ fv0 = Tetrahedron.fv t
+ fv1 = rotate (Tetrahedron.fv t) cwx
+ expr1 = front $ fv0
+ expr2 = front $ fv1
+
+prop_x_rotation_doesnt_affect_back :: Tetrahedron -> Bool
+prop_x_rotation_doesnt_affect_back t =
+ expr1 == expr2
+ where
+ fv0 = Tetrahedron.fv t
+ fv1 = rotate (Tetrahedron.fv t) cwx
+ expr1 = back $ fv0
+ expr2 = back $ fv1
+
+
+prop_y_rotation_doesnt_affect_left :: Tetrahedron -> Bool
+prop_y_rotation_doesnt_affect_left t =
+ expr1 == expr2
+ where
+ fv0 = Tetrahedron.fv t
+ fv1 = rotate (Tetrahedron.fv t) cwy
+ expr1 = left $ fv0
+ expr2 = left $ fv1
+
+prop_y_rotation_doesnt_affect_right :: Tetrahedron -> Bool
+prop_y_rotation_doesnt_affect_right t =
+ expr1 == expr2
+ where
+ fv0 = Tetrahedron.fv t
+ fv1 = rotate (Tetrahedron.fv t) cwy
+ expr1 = right $ fv0
+ expr2 = right $ fv1
+
+
+prop_z_rotation_doesnt_affect_down :: Tetrahedron -> Bool
+prop_z_rotation_doesnt_affect_down t =
+ expr1 == expr2
+ where
+ fv0 = Tetrahedron.fv t
+ fv1 = rotate (Tetrahedron.fv t) cwz
+ expr1 = down $ fv0
+ expr2 = down $ fv1
+
+
+prop_z_rotation_doesnt_affect_top :: Tetrahedron -> Bool
+prop_z_rotation_doesnt_affect_top t =
+ expr1 == expr2
+ where
+ fv0 = Tetrahedron.fv t
+ fv1 = rotate (Tetrahedron.fv t) cwz
+ expr1 = top $ fv0
+ expr2 = top $ fv1
+
+prop_swapping_vertices_doesnt_affect_coefficients1 :: Tetrahedron -> Bool
+prop_swapping_vertices_doesnt_affect_coefficients1 t =
+ c t 0 0 1 2 == c t' 0 0 1 2
+ where
+ t' = t { v0 = (v1 t), v1 = (v0 t) }
+
+prop_swapping_vertices_doesnt_affect_coefficients2 :: Tetrahedron -> Bool
+prop_swapping_vertices_doesnt_affect_coefficients2 t =
+ c t 0 1 1 1 == c t' 0 1 1 1
+ where
+ t' = t { v2 = (v3 t), v3 = (v2 t) }
+
+prop_swapping_vertices_doesnt_affect_coefficients3 :: Tetrahedron -> Bool
+prop_swapping_vertices_doesnt_affect_coefficients3 t =
+ c t 2 1 0 0 == c t' 2 1 0 0
+ where
+ t' = t { v2 = (v3 t), v3 = (v2 t) }
+
+prop_swapping_vertices_doesnt_affect_coefficients4 :: Tetrahedron -> Bool
+prop_swapping_vertices_doesnt_affect_coefficients4 t =
+ c t 2 0 0 1 == c t' 2 0 0 1
+ where
+ t' = t { v0 = (v3 t), v3 = (v0 t) }