AlgebraicJulia / GATlab.jl

GATlab: a computer algebra system based on generalized algebraic theories (GATs)
https://algebraicjulia.github.io/GATlab.jl/
MIT License
21 stars 2 forks source link

Make renaming not generate as many new scopetags #148

Open kris-brown opened 3 months ago

kris-brown commented 3 months ago

There are new features for renaming in the pipeline (https://github.com/AlgebraicJulia/GATlab.jl/pull/147 and https://github.com/AlgebraicJulia/GATlab.jl/pull/146) which suffer from a common problem of generating completely fresh ScopeTags for the renamed theory. Consider the following scenario:

Screenshot 2024-03-20 at 10 49 45 AM

We rename * to + in both ThGrp and ThAbGrp (which extends ThGrp with a commutativity axiom). With the present setup, it will not be the case that ThAddGrp will be a proper inclusion of ThAddAbGrp.

One way to address this is to make the data to rename ThGrp (resp. ThAbGrp) be the renaming morphism (as generated by the existing tooling) from ThMon to ThAddMon as well as an inclusion from ThMon into ThGrp (resp ThAbGrp). This fancier renaming function will make sure to use the fresh scopetags from ThAddMon in both ThAddGrp and ThAddAbGrp.

Screenshot 2024-03-20 at 10 50 59 AM