src/HOL/Real/PReal.ML
changeset 9108 9fff97d29837
parent 9043 ca761fe227d8
child 9189 69b71b554e91
equal deleted inserted replaced
9107:67202a50ee6d 9108:9fff97d29837
   279     "(z1::preal) + (z2 + z3) = z2 + (z1 + z3)"
   279     "(z1::preal) + (z2 + z3) = z2 + (z1 + z3)"
   280  (fn _ => [rtac (preal_add_commute RS trans) 1, rtac (preal_add_assoc RS trans) 1,
   280  (fn _ => [rtac (preal_add_commute RS trans) 1, rtac (preal_add_assoc RS trans) 1,
   281            rtac (preal_add_commute RS arg_cong) 1]);
   281            rtac (preal_add_commute RS arg_cong) 1]);
   282 
   282 
   283 (* Positive Reals addition is an AC operator *)
   283 (* Positive Reals addition is an AC operator *)
   284 val preal_add_ac = [preal_add_assoc, preal_add_commute, preal_add_left_commute];
   284 bind_thms ("preal_add_ac", [preal_add_assoc, preal_add_commute, preal_add_left_commute]);
   285 
   285 
   286   (*** Properties of multiplication ***)
   286   (*** Properties of multiplication ***)
   287 
   287 
   288 (** Proofs essentially same as for addition **)
   288 (** Proofs essentially same as for addition **)
   289 
   289 
   365  (fn _ => [rtac (preal_mult_commute RS trans) 1, 
   365  (fn _ => [rtac (preal_mult_commute RS trans) 1, 
   366            rtac (preal_mult_assoc RS trans) 1,
   366            rtac (preal_mult_assoc RS trans) 1,
   367            rtac (preal_mult_commute RS arg_cong) 1]);
   367            rtac (preal_mult_commute RS arg_cong) 1]);
   368 
   368 
   369 (* Positive Reals multiplication is an AC operator *)
   369 (* Positive Reals multiplication is an AC operator *)
   370 val preal_mult_ac = [preal_mult_assoc, 
   370 bind_thms ("preal_mult_ac", [preal_mult_assoc, 
   371                      preal_mult_commute, 
   371                      preal_mult_commute, 
   372                      preal_mult_left_commute];
   372                      preal_mult_left_commute]);
   373 
   373 
   374 (* Positive Real 1 is the multiplicative identity element *) 
   374 (* Positive Real 1 is the multiplicative identity element *) 
   375 (* long *)
   375 (* long *)
   376 Goalw [preal_of_prat_def,preal_mult_def] 
   376 Goalw [preal_of_prat_def,preal_mult_def] 
   377       "(preal_of_prat (prat_of_pnat (Abs_pnat 1))) * z = z";
   377       "(preal_of_prat (prat_of_pnat (Abs_pnat 1))) * z = z";
   744 Goalw [preal_le_def,psubset_def,preal_less_def] 
   744 Goalw [preal_le_def,psubset_def,preal_less_def] 
   745                      "z<=w ==> ~(w<(z::preal))";
   745                      "z<=w ==> ~(w<(z::preal))";
   746 by (auto_tac  (claset() addDs [equalityI],simpset()));
   746 by (auto_tac  (claset() addDs [equalityI],simpset()));
   747 qed "preal_leD";
   747 qed "preal_leD";
   748 
   748 
   749 val preal_leE = make_elim preal_leD;
   749 bind_thm ("preal_leE", make_elim preal_leD);
   750 
   750 
   751 Goalw [preal_le_def,psubset_def,preal_less_def]
   751 Goalw [preal_le_def,psubset_def,preal_less_def]
   752                    "~ z <= w ==> w<(z::preal)";
   752                    "~ z <= w ==> w<(z::preal)";
   753 by (cut_inst_tac [("r1.0","w"),("r2.0","z")] preal_linear 1);
   753 by (cut_inst_tac [("r1.0","w"),("r2.0","z")] preal_linear 1);
   754 by (auto_tac  (claset(),simpset() addsimps [preal_less_def,psubset_def]));
   754 by (auto_tac  (claset(),simpset() addsimps [preal_less_def,psubset_def]));