問題タブ [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.
coq - Coq で Ackermann を定義する際のエラー
Coq で Ackermann-Peters 関数を定義しようとしていますが、理解できないエラー メッセージが表示されます。ご覧のとおりa, b
、Ackermann の引数をペアでパッケージ化していますab
。引数の順序付け関数を定義する順序付けを提供します。次に、Function
フォームを使用して Ackermann 自体を定義し、引数の順序付け関数を提供しab
ます。
私が得るのは、次のエラーメッセージです。
エラー: そのようなセクション変数または仮定はありません:
ack
。
何が Coq を悩ませているのかわかりませんが、インターネットを検索すると、再帰呼び出しが一致内で発生する場合に、順序付けまたはメジャーで定義された再帰関数の使用に問題がある可能性があるという提案が見つかりました。ただし、射影fst
およびsnd
を使用するとif-then-else
、別のエラー メッセージが生成されました。誰かが Coq で Ackermann を定義する方法を提案できますか?
coq - Coqの相互再帰関数と終了チェッカー
編集
次のようなエラーメッセージが表示されました。dpProofへの再帰呼び出しの主引数は次のとおりです。
相互再帰を使用せず、ネストされた固定小数点を使用すると、結合されて終了チェッカーに合格します。これが正常に結合されたコードです。
終了チェッカーに合格できない理由を詳しく知りたいのですが。彼らが議論の減少を推測できないからですか?相互再帰を使用して関数を表現する方法はありますdpGraphProc
か?
dpGraphProc
また、リスト全体をチェックする関数を作成するにはどうすればよいですか?ここでは、引数の使い方がわかりませんcs'
。
coq - Coqの不動点の制限?
私はCoqをいじっています。具体的には、マージソートを実装して、それが機能することを証明しようとしています。
実装の私の試みは次のとおりでした:
この結果として私が得るエラーは次のとおりです。
これらのエラーの私の解釈は、lとl0は、頭のないls、x、xのないls、およびxの後の要素(yと呼ぶことにしたと思います)です。私がこれらのリストの1つで再帰せず、代わりにローカルで定義されたリストで再帰したのは気が狂っています。
パターンマッチから直接得られるものにのみ再帰することは許可されていますか?はいの場合、これは厳しい制限のようです。それを回避する方法はありますか?Coqは関数が終了することを認識できないと思います。左右がxsよりも小さいことを証明する方法はありますか?
comparison - 2 つの Coq 誘導型のサイズの減少を示す方法
game
組み合わせゲームの誘導型を定義しようとしています。lessOrEq
2 つのゲームが、greatOrEq
、lessOrConf
またはであるかどうかを判断する比較方法が必要greatOrConf
です。次に、2 つのゲームが両方とも である場合に等しいかどうかを確認できlessOrEq
ますgreatOrEq
。
しかし、このチェックを行うための相互再帰的なメソッドを定義しようとすると、次のようになります。
エラー: の減少引数を推測できません
fix
。
これは、再帰呼び出しごとにどちらか一方のゲームのサイズだけが減少するためだと思います (両方ではありません)。これをCoqにどのように示すことができますか?
これが私のコードです。失敗する部分は、 、 、 の相互再帰的gameCompare
なinnerGCompare
定義listGameCompare
ですgameListCompare
。
recursion - Coq での cumsum の終了再帰の表示
a
と の間の累積和を計算すると終了することを証明したいと思いb
ます。
Acc lt x
このように、再帰が減少することを示すために用語を使用します
すべてのサブゴールをクリアしますが、Qed
ステートメントでの型チェックは行いません。Coq は次のように不満を述べています。
L1
再帰呼び出しの用語の引数が実際には小さいことを示すために何らかの形で使用する必要があると思いH
ますが、どうすればよいですか?
math - Coq で確立された再帰
Coq で自然除算を計算する関数を作成しようとしていますが、構造的な再帰ではないため、定義に問題があります。
私のコードは次のとおりです。
ご覧のとおり、Coq は私の関数 div が好きではありません。
エラー: の減少引数を推測できません
fix
。
Coq でこの関数の終了証明を提供するにはどうすればよいですか? n>O ^ n<=m -> (mn) < m の場合、証明できます。
coq - Program Fixpoint の Coq simple
sの戦術のようなものはありsimpl
ますProgram Fixpoint
か?
特に、次の些細なステートメントをどのように証明できますか?
明らかに、このおもちゃの例には必要ありませんが、手動でProgram Fixpoint
の終了を証明する必要がある、より複雑な設定で同じ問題に直面しています。Program Fixpoint
recursion - この再帰関数は完全ではありませんか、それともコンパイラがそれを証明できないだけですか? トータルで書き直すには?
次のコードが提示された場合:
イドリスはエラーを出します:
このコードを他のいくつかの方法で書き直しましたが、Idris に全体として認識させることができません。それが合計であるというのは私が間違っているのでしょうか、それとも Idris が合計であると判断できないだけですか? それが本質的に合計である場合、イドリスがそれを合計として認識するようにどのように書き直すことができますか?