equal
deleted
inserted
replaced
434 proof |
434 proof |
435 fix l2 |
435 fix l2 |
436 show "bitval x * 2 ^ (length xs + length l2) + bv_to_nat xs * 2 ^ length l2 = (bitval x * 2 ^ length xs + bv_to_nat xs) * 2 ^ length l2" |
436 show "bitval x * 2 ^ (length xs + length l2) + bv_to_nat xs * 2 ^ length l2 = (bitval x * 2 ^ length xs + bv_to_nat xs) * 2 ^ length l2" |
437 proof - |
437 proof - |
438 have "(2::nat) ^ (length xs + length l2) = 2 ^ length xs * 2 ^ length l2" |
438 have "(2::nat) ^ (length xs + length l2) = 2 ^ length xs * 2 ^ length l2" |
439 by (induct "length xs",simp_all) |
439 by (induct ("length xs")) simp_all |
440 hence "bitval x * 2 ^ (length xs + length l2) + bv_to_nat xs * 2 ^ length l2 = |
440 hence "bitval x * 2 ^ (length xs + length l2) + bv_to_nat xs * 2 ^ length l2 = |
441 bitval x * 2 ^ length xs * 2 ^ length l2 + bv_to_nat xs * 2 ^ length l2" |
441 bitval x * 2 ^ length xs * 2 ^ length l2 + bv_to_nat xs * 2 ^ length l2" |
442 by simp |
442 by simp |
443 also have "... = (bitval x * 2 ^ length xs + bv_to_nat xs) * 2 ^ length l2" |
443 also have "... = (bitval x * 2 ^ length xs + bv_to_nat xs) * 2 ^ length l2" |
444 by (simp add: ring_distribs) |
444 by (simp add: ring_distribs) |
2163 |
2163 |
2164 lemma bv_to_nat_extend [simp]: "bv_to_nat (bv_extend n \<zero> w) = bv_to_nat w" |
2164 lemma bv_to_nat_extend [simp]: "bv_to_nat (bv_extend n \<zero> w) = bv_to_nat w" |
2165 apply (simp add: bv_extend_def) |
2165 apply (simp add: bv_extend_def) |
2166 apply (subst bv_to_nat_dist_append) |
2166 apply (subst bv_to_nat_dist_append) |
2167 apply simp |
2167 apply simp |
2168 apply (induct "n - length w") |
2168 apply (induct ("n - length w")) |
2169 apply simp_all |
2169 apply simp_all |
2170 done |
2170 done |
2171 |
2171 |
2172 lemma bv_msb_extend_same [simp]: "bv_msb w = b ==> bv_msb (bv_extend n b w) = b" |
2172 lemma bv_msb_extend_same [simp]: "bv_msb w = b ==> bv_msb (bv_extend n b w) = b" |
2173 apply (simp add: bv_extend_def) |
2173 apply (simp add: bv_extend_def) |
2174 apply (induct "n - length w") |
2174 apply (cases "n - length w") |
2175 apply simp_all |
2175 apply simp_all |
2176 done |
2176 done |
2177 |
2177 |
2178 lemma bv_to_int_extend [simp]: |
2178 lemma bv_to_int_extend [simp]: |
2179 assumes a: "bv_msb w = b" |
2179 assumes a: "bv_msb w = b" |
2186 assume [simp]: "bv_msb w = \<one>" |
2186 assume [simp]: "bv_msb w = \<one>" |
2187 with a have [simp]: "b = \<one>" by simp |
2187 with a have [simp]: "b = \<one>" by simp |
2188 show ?thesis |
2188 show ?thesis |
2189 apply (simp add: bv_to_int_def) |
2189 apply (simp add: bv_to_int_def) |
2190 apply (simp add: bv_extend_def) |
2190 apply (simp add: bv_extend_def) |
2191 apply (induct "n - length w",simp_all) |
2191 apply (induct ("n - length w"), simp_all) |
2192 done |
2192 done |
2193 qed |
2193 qed |
2194 |
2194 |
2195 lemma length_nat_mono [simp]: "x \<le> y ==> length_nat x \<le> length_nat y" |
2195 lemma length_nat_mono [simp]: "x \<le> y ==> length_nat x \<le> length_nat y" |
2196 proof (rule ccontr) |
2196 proof (rule ccontr) |