2017-09-05 13 views
0

私は、キーと値のペアのセットに有限のマップのキーと値をマップする関数を定義する必要があります。マッピングのキーと値の両方をマッピングする方法は?

theory Test 
    imports Main "~~/src/HOL/Library/Finite_Map" 
begin 

definition denorm :: "('a, 'b) fmap ⇒ ('a × 'b) fset" where 
    "denorm m ≡ " 

end 

問題は、私はfmap ISNので、再帰することで、この関数を定義することができないということです誘導データ型ではなく、コンストラクタもありません。

fmapは内部的にペアのリストとして表されると思います。 fmapをリストに変換できますか?私はfmap_of_listの逆関数が必要です。

答えて

1

1つの可能な方法は、画像、ドメイン、およびルックアップを構成することである:式

λ m. (λ k. (k, the (fmlookup m k))) |`| fmdom m 

は、所望のタイプ

('a, 'b) fmap ⇒ ('a × 'b) fset 

を有しており、マップmための所望のセットを計算しなければなりません。

1

この機能は、すでにそこにある:

fset_of_fmap :: "('a, 'b) fmap ⇒ ('a × 'b) fset" 
+0

私はIsabelle2016-1でそれを見つけることができません。おそらく最新の不安定なバージョンですか? – Denis

+1

ええ、2017年に追加しました。そのうちの最初のリリース候補が利用可能です。 – larsrh

関連する問題