問題タブ [acl2]
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.
lisp - ACL2で再帰を使用してループする方法は?
私はこのようなものを作る必要がありますが、ACL2では:
COMMON LISPを使用していますが、このタスクを実行する方法がわかりません...
LOOP、DOなどの標準のCommonLisp構造を使用することはできません。ただ再帰。
私はいくつかのリンクを持っていますが、理解するのは非常に難しいと思います:
testing - TAKE と APPEND の関係を表すプロパティの実行とテスト
基本的に、私はタイトルが言うことを書く必要があります.私が考えることができた唯一の関係は、リストからいくつかの要素をTAKE
取り、次にそれほど重要ではない残りの半分を取り、CDR
次にAPPEND
2つの元のリストと同じであることを証明するために取ったものです。(それを構築するのに長い時間を費やした後)、証明は問題ないように見えますが (問題なくコンパイルされます)、何らかの理由で実行時に失敗します。情報が必要な場合に備えて、Dracula で Proofpad を使用しています。
コードは次のとおりです。
ここに私が得るエラーログがあります。
誰かが少なくとも私を正しい方向に向けることができますか? エラーログを読んだところ、何らかの冗長性があることがわかりました。これを修正する方法がまったくわかりません。
それを行うと(の'(1 2 3 4)
代わりに(random-integer-list)
)、エラーがスローされます:
私のセットアップ:
- ラケットを取り付ける
それを開いて、次のコードを実行します。
(ポンド)lang ラケット (require (planet cce/dracula:8:23/lang/dracula))
Dr ラケットを再起動します。ウィンドウの下部にある [Choose Language] をクリックし、Dracula の下にある ACL2 を選択します。
Dracula メニューから、[Change ACL2 Executable Path...] を選択し、プルーフパッドのインストール フォルダー (つまり、"C:\Program Files (x86)\Proof") にある "run_acl2" (または "run_acl2.exe") を選択します。 Pad」、64 ビット PC を使用している場合)
PSP++ をダウンロードして実行します。Proofpad のインストール ディレクトリで必ず解凍してください。そうしないと、必要なものが見つからなかったことを知らせるメッセージが表示されます。
lisp - 純粋な ACL2 スクリプトを本格的なプログラムに拡張する方法
ご想像のとおり、ACL2 を使用してコードを証明する方法に関するリソースはたくさんありますが、証明済みのコードを運用環境で使用する方法に関するリソースはありません。
CLISP/Scheme/Clojure で動作するように ACL2 コードを微調整する必要がありますか? ACL2 も私のコードを実行できますか? (チュートリアルはどこにありますか、その目的に従ってではなく、ACL2を使用していますか?)
ありがとう!
acl2 - ACL2 Bridge ワーカー スレッドが未定義の関数例外をスローする
Centaur ACL2-Bridge へのバインディングを作成しようとしています。これまでのところ、次のシーケンスでブリッジを開始できます。
cd books
sudo acl2
acl2 !> (include-book centaur/bridge/acl2/top)
acl2 !> (bridge::start "Users/Brian/Desktop/acl2server")
これで、コマンドを送信するとエラーが発生します。
おそらくこれはコンパイル エラーか、システムのバグか、まだわかりません。 acl2 --version
収量Version 1.10-dev-r16020M-trunk (DarwinX8664)
ご協力いただきありがとうございます!
recursion - LISP の Wheres-wald 関数
LISP の問題を解決しようとしていますが、この問題に何日も悩まされています。
"wheres-waldo と呼ばれる関数を書いてください。この関数は、Lisp オブジェクト (つまり、cons から構築されたデータ構造) を引数として取り、存在する場合は、このオブジェクトからシンボル waldo を抽出する Lisp 式を返します"
例えば、
例: (wheres-waldo '(エマーソン・ラルフ・ウォルド)) =
例: (wheres-waldo '(メンター (ラルフ・ワルド・エマーソン) (ヘンリー・デビッド・ソロー))) =
たとえば、いくつかの再帰を書きました。
http://ai.eecs.umich.edu/people/wellman/courses/eecs492/f94/MP1.html wheres-waldoからこの質問を見つけました。どんな助けでも大歓迎です。ありがとうございました。
acl2 - acl2 等式推論、等式の証明
私は次の関数が真であることを証明しようとしていますが、非常に明白に見えますが、それを理解するのに苦労しています!
そうすることで、関数を使用して、(app (rev x) (rev y)) が (rev (app xy)))) と同等であることを示す必要があります。
これが私が別のものをやった方法です(うまくいけば正しく)
「逆追加物」
=回転の定義
= rev の出力コントラクト
= "逆追加のもの"
= rev の出力コントラクト
= レンの定義
= rev の出力コントラクト
acl2 - 多すぎる場合のヒューリスティックを無効にする
too many-ifs ヒューリスティックを無効にするにはどうすればよいですか? 証明者が昼食に出かけることがあり、それを中断すると、証明者が と の呼び出しで忙しいことがわかりtoo-many-ifs0
ますcount-ifs-lst
。