問題タブ [totality]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
3 に答える
1916 参照

coq - Coq で Ackermann を定義する際のエラー

Coq で Ackermann-Peters 関数を定義しようとしていますが、理解できないエラー メッセージが表示されます。ご覧のとおりa, b、Ackermann の引数をペアでパッケージ化していますab。引数の順序付け関数を定義する順序付けを提供します。次に、Functionフォームを使用して Ackermann 自体を定義し、引数の順序付け関数を提供しabます。

私が得るのは、次のエラーメッセージです。

エラー: そのようなセクション変数または仮定はありません: ack

何が Coq を悩ませているのかわかりませんが、インターネットを検索すると、再帰呼び出しが一致内で発生する場合に、順序付けまたはメジャーで定義された再帰関数の使用に問題がある可能性があるという提案が見つかりました。ただし、射影fstおよびsndを使用するとif-then-else、別のエラー メッセージが生成されました。誰かが Coq で Ackermann を定義する方法を提案できますか?

0 投票する
1 に答える
999 参照

coq - Coqの相互再帰関数と終了チェッカー

編集

次のようなエラーメッセージが表示されました。dpProofへの再帰呼び出しの主引数は次のとおりです。

相互再帰を使用せず、ネストされた固定小数点を使用すると、結合されて終了チェッカーに合格します。これが正常に結合されたコードです。

終了チェッカーに合格できない理由を詳しく知りたいのですが。彼らが議論の減少を推測できないからですか?相互再帰を使用して関数を表現する方法はありますdpGraphProcか?

dpGraphProcまた、リスト全体をチェックする関数を作成するにはどうすればよいですか?ここでは、引数の使い方がわかりませんcs'

0 投票する
1 に答える
1837 参照

coq - Coqの不動点の制限?

私はCoqをいじっています。具体的には、マージソートを実装して、それが機能することを証明しようとしています。

実装の私の試みは次のとおりでした:

この結果として私が得るエラーは次のとおりです。

これらのエラーの私の解釈は、lとl0は、頭のないls、x、xのないls、およびxの後の要素(yと呼ぶことにしたと思います)です。私がこれらのリストの1つで再帰せず、代わりにローカルで定義されたリストで再帰したのは気が狂っています。

パターンマッチから直接得られるものにのみ再帰することは許可されていますか?はいの場合、これは厳しい制限のようです。それを回避する方法はありますか?Coqは関数が終了することを認識できないと思います。左右がxsよりも小さいことを証明する方法はありますか?

0 投票する
2 に答える
1771 参照

comparison - 2 つの Coq 誘導型のサイズの減少を示す方法

game組み合わせゲームの誘導型を定義しようとしています。lessOrEq2 つのゲームが、greatOrEqlessOrConfまたはであるかどうかを判断する比較方法が必要greatOrConfです。次に、2 つのゲームが両方とも である場合に等しいかどうかを確認できlessOrEqますgreatOrEq

しかし、このチェックを行うための相互再帰的なメソッドを定義しようとすると、次のようになります。

エラー: の減少引数を推測できませんfix

これは、再帰呼び出しごとにどちらか一方のゲームのサイズだけが減少するためだと思います (両方ではありません)。これをCoqにどのように示すことができますか?

これが私のコードです。失敗する部分は、 、 、 の相互再帰的gameCompareinnerGCompare定義listGameCompareですgameListCompare

0 投票する
1 に答える
84 参照

recursion - Coq での cumsum の終了再帰の表示

aと の間の累積和を計算すると終了することを証明したいと思いbます。

Acc lt xこのように、再帰が減少することを示すために用語を使用します

すべてのサブゴールをクリアしますが、Qedステートメントでの型チェックは行いません。Coq は次のように不満を述べています。

L1再帰呼び出しの用語の引数が実際には小さいことを示すために何らかの形で使用する必要があると思いHますが、どうすればよいですか?

0 投票する
2 に答える
1229 参照

math - Coq で確立された再帰

Coq で自然除算を計算する関数を作成しようとしていますが、構造的な再帰ではないため、定義に問題があります。

私のコードは次のとおりです。

ご覧のとおり、Coq は私の関数 div が好きではありません。

エラー: の減少引数を推測できませんfix

Coq でこの関数の終了証明を提供するにはどうすればよいですか? n>O ^ n<=m -> (mn) < m の場合、証明できます。

0 投票する
1 に答える
1185 参照

coq - Program Fixpoint の Coq simple

sの戦術のようなものはありsimplますProgram Fixpointか?

特に、次の些細なステートメントをどのように証明できますか?

明らかに、このおもちゃの例には必要ありませんが、手動でProgram Fixpointの終了を証明する必要がある、より複雑な設定で同じ問題に直面しています。Program Fixpoint

0 投票する
2 に答える
274 参照

recursion - この再帰関数は完全ではありませんか、それともコンパイラがそれを証明できないだけですか? トータルで書き直すには?

次のコードが提示された場合:

イドリスはエラーを出します:

このコードを他のいくつかの方法で書き直しましたが、Idris に全体として認識させることができません。それが合計であるというのは私が間違っているのでしょうか、それとも Idris が合計であると判断できないだけですか? それが本質的に合計である場合、イドリスがそれを合計として認識するようにどのように書き直すことができますか?