hasOffendingEquations :: Equations -> Bool
hasOffendingEquations = any isOffending
    where isOffending (TEConst _, TEArrow _ _) = True
          isOffending (TEArrow _ _, TEConst _) = True
          isOffending (TEConst c1, TEConst c2) = c1 /= c2
          isOffending _ = False

-- Step 3: Filter out identities
hasOffendingEquations :: Equations -> Bool
hasOffendingEquations = any isOffending
    where isOffending (TEConst _, TEArrow _ _) = True
          isOffending (TEArrow _ _, TEConst _) = True
          isOffending (TEConst c1, TEConst c2) = c1 /= c2
          isOffending _ = False

-- Step 3: Filter out identities
hasOffendingEquations = any isOffending
    where isOffending (TEConst _, TEArrow _ _) = True
          isOffending (TEArrow _ _, TEConst _) = True
          isOffending (TEConst c1, TEConst c2) = c1 /= c2
          isOffending _ = False

-- Step 3: Filter out identities