equal
deleted
inserted
replaced
154 have 256: "(256 :: nat) = 16 * 16" by auto |
154 have 256: "(256 :: nat) = 16 * 16" by auto |
155 have l_256: "l mod 256 = l" using l by auto |
155 have l_256: "l mod 256 = l" using l by auto |
156 have l_div_256: "l div 16 * 16 mod 256 = l div 16 * 16" |
156 have l_div_256: "l div 16 * 16 mod 256 = l div 16 * 16" |
157 using l by auto |
157 using l by auto |
158 have aux2: "(k * 256 mod 16 + l mod 16) div 16 = 0" |
158 have aux2: "(k * 256 mod 16 + l mod 16) div 16 = 0" |
159 unfolding 256 mult_assoc [symmetric] mod_mult_self_is_0 by simp |
159 unfolding 256 mult_assoc [symmetric] mod_mult_self2_is_0 by simp |
160 have aux3: "(k * 256 + l) div 16 = k * 16 + l div 16" |
160 have aux3: "(k * 256 + l) div 16 = k * 16 + l div 16" |
161 unfolding div_add1_eq [of "k * 256" l 16] aux2 256 |
161 unfolding div_add1_eq [of "k * 256" l 16] aux2 256 |
162 mult_assoc [symmetric] div_mult_self_is_m [OF 16] by simp |
162 mult_assoc [symmetric] div_mult_self_is_m [OF 16] by simp |
163 have aux4: "(k * 256 + l) mod 16 = l mod 16" |
163 have aux4: "(k * 256 + l) mod 16 = l mod 16" |
164 unfolding 256 mult_assoc [symmetric] mod_mult_self3 .. |
164 unfolding 256 mult_assoc [symmetric] mod_mult_self3 .. |