ここ数ヶ月間Agdaで働いていたので、Agdaのabstract
ブロックを訪れ、ブロックの範囲外の用語の正規化をさらに防止しました。Agda標準ライブラリ - より多くのプロパティが抽象的なマークされていないのはなぜですか?
私の補題の動作を隠すためにそれを使用すると、が大幅に私のプログラムのタイプチェックに必要な時間が短縮されました。しかし、Agda標準ライブラリを見ると、abstract
はほとんど使用されていません。 Properties
ファイル(たとえばData.Nat.Properties
)内のほぼすべてが、abstract
ブロック内にある可能性があります。たとえば、加算が可換性であることが証明されているなど、推論の用途を考えることはできません。
これは、抽象概念が標準ライブラリに移行していない新しい機能であるケースですか?それとも、私が紛失している証拠を捺印することの微妙な点や弱点がありますか?abstract
あなたはabstract
ブロック内の証明を配置する場合、あなたはまだ規範性を保持しつつ、subst
またはrewrite
でそれらを使用することができなくなりますので
ありがとうございます!しかし、「抽象」を落とす計画が(おそらく)あれば、パフォーマンスを助けるための代替機能が提案されていますか?レコードを通した抽象概念は常に良い考えだと私は理解していますが、私の場合、レコードは膨大なものでなければならず、コードを難読化するという素晴らしい仕事をします。 – user2667523
@ user2667523、わかりません。現在、あなたがしたくない場合は、['erase'](https://github.com/agda/agda-stdlib/blob/f6212e49760a9fc2392b3d0889c8c7fc5e77634b/src/Relation/Binary/PropositionalEquality/TrustMe.agda#L25)を使うことができます高価な証明を計算する(そして、それは標準化を妨げない)。 – user3237465
問題を回避するために '' proof-irrelevance'(https://agda.github.io/agda-stdlib/Relation.Binary.PropositionalEquality.html#1420)を '0 'で使うことができますnは抽象的ですか? – Cactus