我試圖在Isabelle/HOL中對一些程序分析建模。分析計算有界晶格中的值,但是(現在和一般性)我不想承擔任何具體的晶格定義;我所關心的只是一些結果是否最低。我正在尋找一種方法來聲明一個抽象類型,該類型是Isabelle/HOL的類型實例的一個實例,不需要提交具體實例。如何聲明類的類的「free」實例?
也就是說,類似於我怎麼能寫
typedecl some_data
type_synonym my_analysis_result = "var => some_data"
其中some_data
是完全免費的,我希望能夠寫類似
typedecl "some_lattice::bounded_lattice"
type_synonym my_analysis_result = "var => some_lattice"
其中some_lattice
將是「自由「有界晶格除了滿足晶格定律外我什麼都不需要。這種特殊的語法不是由伊莎貝爾/ HOL接受,也不是像
type_synonym my_analysis_result = "var => 'a::bounded_lattice"
我可以通過定義一個具體的數據類型,並使它成爲bounded_lattice
一個實例解決這個問題,但我不明白爲什麼有不應該是一個更一般的方法。是否有一些簡單(或複雜)的語法來實現我正在做的事情?我必須(不知何故,我不確定它是否會起作用)將我的整個開發都放在context bounded_lattice
區塊內?或者有什麼理由可以通過typedecl
獲得完全免費的類型,但沒有按類型限制的免費類型?