Implement refl and trans