0
我需要使用nat_plus_commute.fold_set_fold_remdups
碼公式,而不是Finite_Set.fold_def
部分應用的不斷:對碼公式的左邊
interpretation nat_plus_commute: comp_fun_commute "plus :: nat ⇒ nat ⇒ nat"
by standard auto
declare Finite_Set.fold_def [code del]
declare nat_plus_commute.fold_set_fold_remdups [code]
的問題是,第一個方程只被定義爲plus
操作,所以我得到以下警告:
Partially applied constant "Groups.plus_class.plus" on left hand side of equation, in theorem:
Finite_Set.fold op + ?y (set ?xs) ≡ fold op + (remdups ?xs) ?y
至於導致下面的語句
value "Finite_Set.fold plus 0 (set [1::nat, 2])"
返回異常:
exception Fail raised (line 29 of "generated code"): Finite_Set.fold
是否可以使用特定的操作(plus
)和類型(nat
)一個專門的代碼方程?