value
を使用して自然数を返す関数の値を調べると、返された後続関数0、すなわち、Suc(Suc(... 0))
は時々読みにくい場合があります。 Isabelleが返す番号を直接出力する方法はありますか?Suc(Suc(... 0))の代わりにIsabelleが返す数値
答えて
これは私がしばらく前に修正したかったものの、明らかに忘れてしまったものです。カルシゲネートの推測は間違っています。これは実際に完全に評価された結果です。問題は、自然な数がこの扱いにくい方法で印刷されていることです。
あなたは次のことを行うことができます。
最も簡単な方法は、すなわち代わりに(
foo x y z
はあなたがeavluateしたいタイプnat
の表現である)value "foo x y z"
の、整数に番号を変換することで、あなたはvalue "int (foo x y z)"
を書きます。インポートに
~~/src/HOL/Library/Code_Target_Numeral
を追加できます。これにより、Isabelleのコードジェネレータは、非効率な後続表記ではなく、ターゲット言語の任意精度の整数(value
のMLとそのGMPベースの整数)を使用します。副作用として、これはまた、より自然な方法で自然数を表示します。 は
あなたは道
value
コマンドで表示自然数を変更し、あなたの理論、次のコードを追加することができます。
コード:value
コマンドは、診断であることを
lemma Suc_numeral_bit0: "Suc (numeral (Num.Bit0 n)) = numeral (Num.Bit1 n)"
by (subst Suc_numeral) simp
lemma Suc_numeral_bit1: "Suc (numeral (Num.Bit1 n)) = numeral (Num.Bit0 (n + Num.One))"
by (subst Suc_numeral) simp
lemmas [code_post] =
One_nat_def [symmetric] Suc_numeral_bit0 Suc_numeral_bit1 Num.Suc_1 Num.arith_simps
注意コマンドのみ。これは主に、迅速な妥当性テストやコード生成設定のデバッグに使用され、動作させるのは難しい場合があります。
デフォルトではvalue
はコード生成プログラムを使用しています。すなわち、Isabelleは式の実行可能コードを生成する方法を知っている必要があります。実行できない場合はvalue
が失敗します。 (時には、いくつかの他の戦略、単純化による評価や評価による正規化にも戻すことができますが、通常は有用な出力は得られません)
私はちょうどこれを伝えて、 value
コマンドであり、これは人々が常に使用するイザベルの不可欠な部分であるという印象を受けない。
うわー、私はあなたがイザベルについてどのようにこのことを学んだのか聞いてもらえますか?あなたはマニュアルを掘り下げましたか?面倒な(しかし印象的な)仕事のように見えますが、その一部が読みづらいということが分かりました。 – nicht
私はこのシステムで5年以上働いており、私はTUミュンヘンの椅子で働いていて、数年前からイザベルを共同開発しています。私は実際に多くのマニュアルを読んでいません。それらは参考になりますが、その多くは実際にあなたがユーザーとして知る必要のあるものではありません。そのほとんどは、あなたがシステムを使用するとき、または他の人に尋ねるときに拾うだけです。 –
- 1. 数値の代わりに0を出力する配列
- 2. psycopg2 PSQL SELECTステートメントが0の代わりに0Lを返す
- 3. Knockout.jsカスタム関数を返す関数の代わりに、値
- 4. java印刷の代わりに0の代わりに
- 5. AngularJS APIのテキストの代わりに0を返す
- 6. OUTER JOINをNULLの代わりに0を返す方法
- 7. Count()はNULLの代わりに0を返します。
- 8. C++は0.1の代わりに0を返す
- 9. 0の代わりに空を返します
- 10. ニューラルネットワークは0の代わりに0.5を返します
- 11. javacript pushオブジェクトの代わりに数値を返す
- 12. Dateオブジェクトの代わりに数値を返す
- 13. Javascript Closure:値の代わりに "undefined"を返す関数
- 14. 値の代わりに関数を返す
- 15. 値の代わりに変数を返します
- 16. 値の代わりに数式を返すVLOOKUP
- 17. neo4jは{high:0、low:10}の代わりに整数を返します
- 18. SQLの除算で数値の代わりにNULL値が返される
- 19. 代わりに状態0を返すカスタムフェッチAPI
- 20. Isabelleでの乗算のためのPrimtive Recursionの定義
- 21. MIN()が0行の代わりに全NULL行を返すようにする
- 22. スウィフト値が代わりに
- 23. PDO Prepare Statenentが値の代わりにカラム名を返す
- 24. 0の代わりに1秒のテンソルフローパディング
- 25. なぜSELECT 0、...の代わりに、SELECT
- 26. Angularjs $ document [0] $ document.activeElementの代わりに.activeElement
- 27. コール `ConcurrentLinkedQueue.poll`は0の代わりに、ヌル
- 28. Facebook Graph APIがメールアドレスの代わりに数字を返す
- 29. 関数は値を返さず、代わりに "None"を返します
- 30. 照会で最大値の代わりに複数の行が返される
この値は評価されていないようですが、それはサンクだ。私はイザベルを知らないが、評価を強制する必要があるようだ。 – Carcigenicate
あなたはここで答えを試しましたか? http://stackoverflow.com/questions/22687646/simplify-pretty-printing-of-naturals – ammbauer