src/HOL/Integ/nat_bin.ML
changeset 13183 c7290200b3f4
parent 12613 279facb4253a
child 13261 a0460a450cf9
equal deleted inserted replaced
13182:21851696dbf0 13183:c7290200b3f4
   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