Having been working in Agda for the last few months, I've just come across the abstract
block in Agda which prevents further normalisation of the term outside the scope of the block.
Using it to hide the workings of my lemmas has greatly reduced the time required to type-check my programs. Looking through the Agda Standard Library however abstract
is barely used. It seems to me that almost everything within any Properties
file (for instance Data.Nat.Properties
) could be within an abstract
block, as I can't think of a use for reasoning about, for example, how addition is proved to be commutative.
Is this a case of abstract being a new feature which hasn't made its way into the standard library? Or is there some subtlety or downside of marking proofs abstract
that I'm missing?