如何使用word_rsplit

时间:2013-09-24 04:50:28

标签: isabelle

word_rsplit中有一个名为~~/src/HOL/Word/Word.thy的函数。

definition word_rsplit :: "'a :: len0 word => 'b :: len word list" where
  "word_rsplit w = 
  map word_of_int (bin_rsplit (len_of TYPE ('b)) (len_of TYPE ('a), uint w))"

我想将32 word拆分为四个8 word,这个功能似乎很完美。

引理word_rcat (word_rsplit w) = w对我也很有用。

所以我需要知道如何使用word_rsplit,如何指定'a = 32和'b = 8。

1 个答案:

答案 0 :(得分:2)

要获取特定单词类型的word_rsplit变体,您可以只提供显式类型约束。例如,您希望将32 word拆分为多个8 word的示例可以指定如下:

word_rsplit :: 32 word => 8 word list"

示例:

value "(word_rsplit :: 32 word ⇒ 8 word list) 1024"

产生

"[0, 0, 4, 0]"
  :: "8 word list"