It internally produces equality proofs for pushing down morphisms and also converting _%:R to _%:~R (e.g., f (a + b * 10%:R) = f a + f b * 10%:~R). Performance issues related to constants have been fixed. However, a produced proof term can be (I guess, quadratically) large in the size of the input, and it causes a serious performance issue in Lemma from_sander. It should be possible to make the size of the proof term linear by factoring out common subterms using let-ins.
In the end, I managed to address the performance issue by using reflection for pushing down morphisms (see inductive/fixpoint definitions in ring.v). This PR also fixes the performance issue with _%:R.
Closes #4 Closes #6
It internally produces equality proofs for pushing down morphisms and also converting
_%:R
to_%:~R
(e.g.,f (a + b * 10%:R) = f a + f b * 10%:~R
). Performance issues related to constants have been fixed. However, a produced proof term can be (I guess, quadratically) large in the size of the input, and it causes a serious performance issue inLemma from_sander
. It should be possible to make the size of the proof term linear by factoring out common subterms using let-ins.