私は現在vellvmを使用しており、その上で変換を開発しています。私はcoq初心者です。
プログラミング中に、次の警告に直面しました。
警告:NATで多数を処理すると、スタックオーバーフローまたはセグメンテーション違反が発生します(監視されるしきい値は、システムの制限と実行されたコマンドに応じて5000から70000まで変化する可能性があります)。
この警告を生成する私の関数は署名を計算します。署名は上位ビットと下位ビットに分けられます。上位ビットと下位ビットを表す2つのnatsn1とn2が与えられると、(n1 * 65536)+ n2が計算されます。これは、16ビットの2つの2進数を並べて配置するための抽象化です。
Sコンストラクターのおかげで、coq nat定義が外部から大きなintを処理しているように見えるので、私は非常に驚きました。
この警告を回避する/coqで大きな数を使用するにはどうすればよいですか?実装をnatからある種のバイナリ構造に変更することを歓迎します。
ありがとう!