Commit 2021-07-05 15:47 38a6f265
View on Github →feat(algebra/to_additive): map pow to smul (#7888)
- Allows @[to_additive]to reorder consecutive arguments of specified identifiers.
- This can be specified with the attribute @[to_additive_reorder n m ...]to swap argumentsnandn+1, argumentsmandm+1etc. (start counting from 1).
- The only two attributes currently in use are:
attribute [to_additive_reorder 1] has_pow
attribute [to_additive_reorder 1 4] has_pow.pow
- It will  eta-expand all expressions that have as head a declaration with attribute to_additive_reorderuntil they have the required number of arguments. This is required to correctly deal with partially applied terms.
- Hack: if the first two arguments are reordered, then the first two universe variables are also reordered (this happens to be the correct behavior for has_powandhas_pow.pow). It might be cleaner to have a separate attribute for that, but that given the low amount of times that I expect that we useto_additive_reorder, this seems unnecessary.
- This PR also allows the user to write @[to_additive?]to trace the generated declaration.