+
+prop_x_rotation_doesnt_affect_front :: Tetrahedron -> Bool
+prop_x_rotation_doesnt_affect_front t =
+ expr1 == expr2
+ where
+ fv0 = Tetrahedron.fv t
+ fv1 = rotate cwx (Tetrahedron.fv t)
+ 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 cwx (Tetrahedron.fv t)
+ 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 cwy (Tetrahedron.fv t)
+ 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 cwy (Tetrahedron.fv t)
+ 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 cwz (Tetrahedron.fv t)
+ 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 cwz (Tetrahedron.fv t)
+ 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) }