問題タブ [coq-extraction]
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.
ocaml - Coq から Ocaml への抽出によって生成された後に関数を使用する
tmp
coq から ocaml に抽出した後に生成されるフォルダーがあります。
main.ml
で 1 つの関数を呼び出すために使用するファイルですcpf0
。
Cpf0.proof
バインドされていないというエラーが表示されました。使用しようとしました: (proof
に存在しCpf0
ます)。
同じエラーが発生しました。
Ocaml リンク:ocamlc -I tmp -c main.ml
受け入れない理由がわかりませんCpf0
か?
しかし、open Cpf0;;
単独では、リンクしてもエラーは発生しません。の別のファイルでテストしましたtmp
が、そのファイルのすべての機能を使用できます。
ocaml - Ocaml ライブラリの string_dec と string
私はファイルを持っています:
String0.ml
から抽出しましたString.v
(Coqライブラリからです)String.ml
: Ocamlの文字列ライブラリです
テストファイルを Coq から Ocaml に展開した後、Ocaml のライブラリで使用したいので、すべてをString.ml
に置き換える置換コマンドを作成します。String0
String
問題はファイルtest.v
にあります。定義の1つを使用しました:
関数string_dec
は Ocaml のライブラリにはありませんが、Coq の文字列ライブラリにはあります
そのため、コンパイル時にエラーが発生しますtest.ml
エラー: バインドされていない値 string_dec
すべての抽出ファイルに Ocaml の文字列ライブラリを使用したいと考えています。どうすればコンパイルできますstring_dec
か?
ocaml - Ocaml への Coq の抽出で、nat を big_int に変換します。
私は抽出変換nat
を行っていますbig_int
ライブラリを使用したとき: ExtrOcamlNatBigInt、正しい型を返しませbig_int
んOcaml
nat_case
だから私はそれを修正します(ファイルExtrOcamlNatBigInt)が、Ocamlのライブラリには function がないため、関数を定義する方法が見つかりBig_int
ませんnat_case
。
nat_case
byの 2 番目の定義を定義しようとしています。
2 番目の定義を使用した後の結果を次に示します。
n
次の行でエラーが発生しましたelse f0 (n - one)
:
ファイル "Datatypes.ml"、68 行目、51 ~ 52 文字目: エラー: この式には Big_int.big_int 型がありますが、int 型の式が予期されていました
minus
( -
) のせいだと思います。
minus
抽出も変更します:
nat_case
の関数を定義するのを手伝ってくれませんBig_int
か? どうもありがとうございました。
ocaml - Positive、Nat から int32、Z から int を抽出できますか?
こんにちは、Coq から Ocaml への抽出を書いています。型を変換したいと思います。
しかし、私はタイプを維持したいZ
ですint
これらの条件を抽出するために私が行っているコードは次のとおりです。
Coq のライブラリ ( BinInt.v )でZ -> int
定義されているため、保持することはできません。Z
エラーが発生しました: (function coq_Zdouble_plus_one)
ファイル「BinInt.ml」、38 行目、4 ~ 5 文字目:
エラー: この式は int 型ですが、式は int32 型である必要があります
を抽出すればZ -> int32
OKですが、私が望むものではありません。
ocaml - Coq generate の抽出機構「failwith "AXIOM TO BE REALIZE"」
このモジュール内にモジュール構造があり、内部の関数の変数の使用を宣言していますmodule A
。
次に、抽出メカニズムを使用します。
あるいは単に
「抽出されたコードでは、次の公理を実現する必要があります: Aa」という警告付きのコードが生成されました。
ここa
で、failwith "AXIOM TO BE REALIZED"
I could't run my function success due to thisを受け取りましたfailwith
a
モジュール内で変数を使用する必要があるためです。failwith
抽出後に生成されないモジュールを定義する方法はありますか? failwith
または、この関数を生成しない抽出と関係がありますか?
ocaml - Coqの抽出メカニズムを使用して、CoqのファンクターをOCamlに抽出します
関数がありますPolyInterpretation
(http://color.inria.fr/doc/CoLoR.PolyInt.APolyInt.html)
およびモジュール署名TPolyInt
( http://color.inria.fr/doc/CoLoR.PolyInt.APolyInt_MA.html )
次に、私のファイルで、ファンクターを使用rainbow.v
するモジュールのTPolyInt_imp
目的を定義しますPolyInt
タイプがある場所fun_of_pairs_list
:forall f: Cpf0.symbol, list {g : symbol & poly (arity g)} -> poly (arity f)
次に、モジュールを定義しますP
。
証明アシスタントは上記Coq
の定義を受け入れましたP
。
次に、抽出を使用してに抽出しましたOCaml
。
私はそれを別のファイルに書きます:extraction.v
それは正常に動作します。
抽出後のコードはこちら
ファンクター内にTPolyInt_imp
を含めVariable
て生成したfailwith AXIOM
ため、これらすべての変数を含む新しい署名を定義することにしました。
Arity
次に、( ) をパラメーターとして取る新しいファンクターを定義します。そして、このファンクター内でモジュールを定義しますTPolyInt_imp
(TPolyInt_imp
以前と同様)。
次に、抽出を使用してに抽出しOcaml
ます。
次に、次のようなエラーが表示されました。
抽出後のコード:
抽出の何が問題になっていますか?そして、彼らがこのエラーを抱えている理由は? 抽出後に正常にコンパイルできるようにコードを修正するにはどうすればよいですか?
また、署名を実装する新しいモジュールを定義したくありませんArity
。
私のコードにタイプがなく、コンパイルできないことをとても残念に思っています。私は自分の問題の考えを伝えようとしています。
coq - Coqの「再帰的抽出」を使用してOCamlファイルに抽出します
foo
関数をファイルCoq
に抽出したい。OCaml
私の実際の関数は を使用する必要があるためRecursive Extraction
、プログラムを実行すると、抽出された OCaml コードが に出力されますcmd
。しかし、たとえば次のようにファイルに出力したいと思います。foo.ml
私が試したとき:
またRecursive Extraction foo "foo.ml"
エラーが発生しました:Syntax error: "." expected after [vernac:command] (in [vernac_aux]).
私の質問は次のとおりです。構文foo
を使用して関数をファイルに抽出できますか? Recursive Extraction
ご協力ありがとうございました。
ocaml - OCaml文字列とCoq文字列 (CoqからOCamlへの抽出)
Coq から OCaml への抽出を使用しましZ
たN
。positive
int
私はOCamlでそれを抽出するために使用しません。
次に、抽出後のタイプは次のとおりです。
OCaml type を使用する関数がいくつかある OCaml のプログラムがありstring
ます。
私の OCaml プログラムでは、型を変換するいくつかの関数を書く必要があります: string -> coq_N
, string -> coq_Z
,string -> positive
Coq で関数を書き込もうとして、抽出を使用して OCaml 型を取得しましたが、Coqstring
は OCaml とは異なりstring
ます。
例えば:
関数coq_N_of_ascii
からの抽出はどこにありますか。coq
N_of_ascii
string_of_coqN
たとえば、関数を適用したとき:
という苦情が来ました
convert 関数 :string -> coq_N
とstring -> coq_Z
を書く方法を教えてくださいstring -> positive
。