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。
答案 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"