(* Title: HOL/Library/Tools/word_lib.ML Author: Sascha Boehme, TU Muenchen and Thomas Sewell, NICTA
Helper routines for operating on the word type.
*)
signature WORD_LIB = sig val dest_binT: typ -> int val is_wordT: typ -> bool val dest_wordT: typ -> int val mk_wordT: int -> typ end
structure Word_Lib: WORD_LIB = struct
fun dest_binT T =
(case T of Type (\<^type_name>\<open>Numeral_Type.num0\<close>, _) => 0
| Type (\<^type_name>\<open>Numeral_Type.num1\<close>, _) => 1
| Type (\<^type_name>\<open>Numeral_Type.bit0\<close>, [T]) => 2 * dest_binT T
| Type (\<^type_name>\<open>Numeral_Type.bit1\<close>, [T]) => 1 + 2 * dest_binT T
| _ => raiseTYPE ("dest_binT", [T], []))
fun dest_wordT (Type (\<^type_name>\<open>word\<close>, [T])) = dest_binT T
| dest_wordT T = raiseTYPE ("dest_wordT", [T], [])
fun mk_bitT i T = if i = 0 thenType (\<^type_name>\<open>Numeral_Type.bit0\<close>, [T]) elseType (\<^type_name>\<open>Numeral_Type.bit1\<close>, [T])
fun mk_binT size = ifsize = 0 then \<^typ>\<open>Numeral_Type.num0\<close> elseifsize = 1 then \<^typ>\<open>Numeral_Type.num1\<close> elseletval (q, r) = Integer.div_mod size 2 in mk_bitT r (mk_binT q) end
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung ist noch experimentell.