src/HOL/Real/RealBin.ML
changeset 9043 ca761fe227d8
parent 9013 9dd0274f76af
child 9068 202fdf72cf23
equal deleted inserted replaced
9042:4d4521cbbcca 9043:ca761fe227d8
    11 Goal "real_of_int (number_of w) = number_of w";
    11 Goal "real_of_int (number_of w) = number_of w";
    12 by (simp_tac (simpset() addsimps [real_number_of_def]) 1);
    12 by (simp_tac (simpset() addsimps [real_number_of_def]) 1);
    13 qed "real_number_of";
    13 qed "real_number_of";
    14 Addsimps [real_number_of];
    14 Addsimps [real_number_of];
    15 
    15 
    16 Goalw [real_number_of_def] "0r = #0";
    16 Goalw [real_number_of_def] "(0::real) = #0";
    17 by (simp_tac (simpset() addsimps [real_of_int_zero RS sym]) 1);
    17 by (simp_tac (simpset() addsimps [real_of_int_zero RS sym]) 1);
    18 qed "zero_eq_numeral_0";
    18 qed "zero_eq_numeral_0";
    19 
    19 
    20 Goalw [real_number_of_def] "1r = #1";
    20 Goalw [real_number_of_def] "1r = #1";
    21 by (simp_tac (simpset() addsimps [real_of_int_one RS sym]) 1);
    21 by (simp_tac (simpset() addsimps [real_of_int_one RS sym]) 1);
   107 by (rtac (linorder_not_less RS sym) 1);
   107 by (rtac (linorder_not_less RS sym) 1);
   108 qed "le_real_number_of_eq_not_less"; 
   108 qed "le_real_number_of_eq_not_less"; 
   109 
   109 
   110 Addsimps [le_real_number_of_eq_not_less];
   110 Addsimps [le_real_number_of_eq_not_less];
   111 
   111 
   112 (*** New versions of existing theorems involving 0r, 1r ***)
   112 (*** New versions of existing theorems involving 0, 1r ***)
   113 
   113 
   114 Goal "- #1 = (#-1::real)";
   114 Goal "- #1 = (#-1::real)";
   115 by (Simp_tac 1);
   115 by (Simp_tac 1);
   116 qed "minus_numeral_one";
   116 qed "minus_numeral_one";
   117 
   117 
   118 
   118 
   119 (*Maps 0r to #0 and 1r to #1 and -1r to #-1*)
   119 (*Maps 0 to #0 and 1r to #1 and -1r to #-1*)
   120 val real_numeral_ss = 
   120 val real_numeral_ss = 
   121     HOL_ss addsimps [zero_eq_numeral_0, one_eq_numeral_1, 
   121     HOL_ss addsimps [zero_eq_numeral_0, one_eq_numeral_1, 
   122 		     minus_numeral_one];
   122 		     minus_numeral_one];
   123 
   123 
   124 fun rename_numerals thy th = simplify real_numeral_ss (change_theory thy th);
   124 fun rename_numerals thy th = simplify real_numeral_ss (change_theory thy th);
   125 
   125 
   126 
   126 
   127 (*Now insert some identities previously stated for 0r and 1r*)
   127 (*Now insert some identities previously stated for 0 and 1r*)
   128 
   128 
   129 (** RealDef & Real **)
   129 (** RealDef & Real **)
   130 
   130 
   131 Addsimps (map (rename_numerals thy) 
   131 Addsimps (map (rename_numerals thy) 
   132 	  [real_minus_zero, real_minus_zero_iff,
   132 	  [real_minus_zero, real_minus_zero_iff,
   133 	   real_add_zero_left, real_add_zero_right, 
   133 	   real_add_zero_left, real_add_zero_right, 
   134 	   real_diff_0, real_diff_0_right,
   134 	   real_diff_0, real_diff_0_right,
   135 	   real_mult_0_right, real_mult_0, real_mult_1_right, real_mult_1,
   135 	   real_mult_0_right, real_mult_0, real_mult_1_right, real_mult_1,
   136 	   real_mult_minus_1_right, real_mult_minus_1, real_rinv_1,
   136 	   real_mult_minus_1_right, real_mult_minus_1, real_rinv_1,
   137 	   real_minus_zero_less_iff]);
   137 	   real_minus_zero_less_iff]);
       
   138 
       
   139 AddIffs (map (rename_numerals thy) [real_mult_is_0, real_0_is_mult]);
       
   140 
       
   141 bind_thm ("real_0_less_times_iff", 
       
   142 	  rename_numerals thy real_zero_less_times_iff);
       
   143 bind_thm ("real_0_le_times_iff", 
       
   144 	  rename_numerals thy real_zero_le_times_iff);
       
   145 bind_thm ("real_times_less_0_iff", 
       
   146 	  rename_numerals thy real_times_less_zero_iff);
       
   147 bind_thm ("real_times_le_0_iff", 
       
   148 	  rename_numerals thy real_times_le_zero_iff);
   138 
   149 
   139 
   150 
   140 (*Perhaps add some theorems that aren't in the default simpset, as
   151 (*Perhaps add some theorems that aren't in the default simpset, as
   141   done in Integ/NatBin.ML*)
   152   done in Integ/NatBin.ML*)
   142 
   153 
   199 (* added by jdf *)
   210 (* added by jdf *)
   200 fun full_rename_numerals thy th = 
   211 fun full_rename_numerals thy th = 
   201     asm_full_simplify real_numeral_ss (change_theory thy th);
   212     asm_full_simplify real_numeral_ss (change_theory thy th);
   202 
   213 
   203 
   214 
       
   215 (** Simplification of arithmetic when nested to the right **)
       
   216 
       
   217 Goal "number_of v + (number_of w + z) = (number_of(bin_add v w) + z::real)";
       
   218 by Auto_tac; 
       
   219 qed "real_add_number_of_left";
       
   220 
       
   221 Goal "number_of v * (number_of w * z) = (number_of(bin_mult v w) * z::real)";
       
   222 by (simp_tac (simpset() addsimps [real_mult_assoc RS sym]) 1);
       
   223 qed "real_mult_number_of_left";
       
   224 
       
   225 Goalw [real_diff_def]
       
   226     "number_of v + (number_of w - c) = number_of(bin_add v w) - (c::real)";
       
   227 by (rtac real_add_number_of_left 1);
       
   228 qed "real_add_number_of_diff1";
       
   229 
       
   230 Goal "number_of v + (c - number_of w) = \
       
   231 \    number_of (bin_add v (bin_minus w)) + (c::real)";
       
   232 by (stac (diff_real_number_of RS sym) 1);
       
   233 by Auto_tac;
       
   234 qed "real_add_number_of_diff2";
       
   235 
       
   236 Addsimps [real_add_number_of_left, real_mult_number_of_left,
       
   237 	  real_add_number_of_diff1, real_add_number_of_diff2]; 
       
   238