equal
deleted
inserted
replaced
157 |
157 |
158 Goal "(0::int) <= z ==> nat (z div z') = nat z div nat z'"; |
158 Goal "(0::int) <= z ==> nat (z div z') = nat z div nat z'"; |
159 by (case_tac "0 <= z'" 1); |
159 by (case_tac "0 <= z'" 1); |
160 by (auto_tac (claset(), |
160 by (auto_tac (claset(), |
161 simpset() addsimps [div_nonneg_neg_le0, DIVISION_BY_ZERO_DIV])); |
161 simpset() addsimps [div_nonneg_neg_le0, DIVISION_BY_ZERO_DIV])); |
162 by (zdiv_undefined_case_tac "z' = 0" 1); |
162 by (case_tac "z' = 0" 1 THEN asm_simp_tac (simpset() addsimps [DIVISION_BY_ZERO]) 1); |
163 by (simp_tac (simpset() addsimps [numeral_0_eq_0, DIVISION_BY_ZERO_DIV]) 1); |
163 by (simp_tac (simpset() addsimps [numeral_0_eq_0, DIVISION_BY_ZERO_DIV]) 1); |
164 by (auto_tac (claset() addSEs [nonneg_eq_int], simpset())); |
164 by (auto_tac (claset() addSEs [nonneg_eq_int], simpset())); |
165 by (rename_tac "m m'" 1); |
165 by (rename_tac "m m'" 1); |
166 by (subgoal_tac "0 <= int m div int m'" 1); |
166 by (subgoal_tac "0 <= int m div int m'" 1); |
167 by (asm_full_simp_tac |
167 by (asm_full_simp_tac |
190 |
190 |
191 (** Remainder **) |
191 (** Remainder **) |
192 |
192 |
193 (*Fails if z'<0: the LHS collapses to (nat z) but the RHS doesn't*) |
193 (*Fails if z'<0: the LHS collapses to (nat z) but the RHS doesn't*) |
194 Goal "[| (0::int) <= z; 0 <= z' |] ==> nat (z mod z') = nat z mod nat z'"; |
194 Goal "[| (0::int) <= z; 0 <= z' |] ==> nat (z mod z') = nat z mod nat z'"; |
195 by (zdiv_undefined_case_tac "z' = 0" 1); |
195 by (case_tac "z' = 0" 1 THEN asm_simp_tac (simpset() addsimps [DIVISION_BY_ZERO]) 1); |
196 by (simp_tac (simpset() addsimps [numeral_0_eq_0, DIVISION_BY_ZERO_MOD]) 1); |
196 by (simp_tac (simpset() addsimps [numeral_0_eq_0, DIVISION_BY_ZERO_MOD]) 1); |
197 by (auto_tac (claset() addSEs [nonneg_eq_int], simpset())); |
197 by (auto_tac (claset() addSEs [nonneg_eq_int], simpset())); |
198 by (rename_tac "m m'" 1); |
198 by (rename_tac "m m'" 1); |
199 by (subgoal_tac "0 <= int m mod int m'" 1); |
199 by (subgoal_tac "0 <= int m mod int m'" 1); |
200 by (asm_full_simp_tac |
200 by (asm_full_simp_tac |