Skip to content

[DRY] Refactor algebraic properties of types #2489

Open
@jamesmckinna

Description

@jamesmckinna

There's (a lot of) duplication between Function.Related.TypeIsomorphisms and Data.(Product|Sum).Algebra (and possibly elsewhere: eg the duplication of True↔ between the first of these, and Relation.Nullary.Decidable...).

This might be bad enough to want to deprecate whole modules, but there is a subtle problem exposed by #2419 , namely that not all the lemmas are as level-polymorphic as they might be, esp. those in Data.Product.Algebra, where the use of Algebra.Definitions imposes a homogeneous level restriction.

So a refined refactoring might be to makeFunction.Related.TypeIsomorphisms home for the heterogeneous level-polymorphic definitions (the direction in #2419 ), while making Data.*.Algebra home for the homogeneous/algebraic versions?

This feels as though it might be a useful clean-up, but potentially breaking wrt possibly unresolved Level metas and/or name clashing which no obvious (or at least: sensible) deprecation strategy can comfortably accommodate... cf #2421

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions