equal
deleted
inserted
replaced
10 header {* Fields *} |
10 header {* Fields *} |
11 |
11 |
12 theory Fields |
12 theory Fields |
13 imports Rings |
13 imports Rings |
14 begin |
14 begin |
|
15 |
|
16 text{* Lemmas @{text field_simps} multiply with denominators in (in)equations |
|
17 if they can be proved to be non-zero (for equations) or positive/negative |
|
18 (for inequations). Can be too aggressive and is therefore separate from the |
|
19 more benign @{text algebra_simps}. *} |
|
20 |
|
21 ML {* |
|
22 structure Field_Simps = Named_Thms( |
|
23 val name = "field_simps" |
|
24 val description = "algebra simplification rules for fields" |
|
25 ) |
|
26 *} |
|
27 |
|
28 setup Field_Simps.setup |
15 |
29 |
16 class field = comm_ring_1 + inverse + |
30 class field = comm_ring_1 + inverse + |
17 assumes field_inverse: "a \<noteq> 0 \<Longrightarrow> inverse a * a = 1" |
31 assumes field_inverse: "a \<noteq> 0 \<Longrightarrow> inverse a * a = 1" |
18 assumes field_divide_inverse: "a / b = a * inverse b" |
32 assumes field_divide_inverse: "a / b = a * inverse b" |
19 begin |
33 begin |
110 |
124 |
111 lemma divide_diff_eq_iff: |
125 lemma divide_diff_eq_iff: |
112 "z \<noteq> 0 \<Longrightarrow> x / z - y = (x - z * y) / z" |
126 "z \<noteq> 0 \<Longrightarrow> x / z - y = (x - z * y) / z" |
113 by (simp add: diff_divide_distrib) |
127 by (simp add: diff_divide_distrib) |
114 |
128 |
115 lemmas field_eq_simps[no_atp] = algebra_simps |
129 lemmas field_eq_simps [field_simps, no_atp] = algebra_simps |
116 (* pull / out*) |
130 (* pull / out*) |
117 add_divide_eq_iff divide_add_eq_iff |
131 add_divide_eq_iff divide_add_eq_iff |
118 diff_divide_eq_iff divide_diff_eq_iff |
132 diff_divide_eq_iff divide_diff_eq_iff |
119 (* multiply eqn *) |
133 (* multiply eqn *) |
120 nonzero_eq_divide_eq nonzero_divide_eq_eq |
134 nonzero_eq_divide_eq nonzero_divide_eq_eq |
473 also have "... = (a*c \<le> b)" |
487 also have "... = (a*c \<le> b)" |
474 by (simp add: less_imp_not_eq [OF less] divide_inverse mult_assoc) |
488 by (simp add: less_imp_not_eq [OF less] divide_inverse mult_assoc) |
475 finally show ?thesis . |
489 finally show ?thesis . |
476 qed |
490 qed |
477 |
491 |
478 text{* Lemmas @{text field_simps} multiply with denominators in in(equations) |
492 lemmas [field_simps, no_atp] = |
479 if they can be proved to be non-zero (for equations) or positive/negative |
|
480 (for inequations). Can be too aggressive and is therefore separate from the |
|
481 more benign @{text algebra_simps}. *} |
|
482 |
|
483 lemmas field_simps[no_atp] = field_eq_simps |
|
484 (* multiply ineqn *) |
493 (* multiply ineqn *) |
485 pos_divide_less_eq neg_divide_less_eq |
494 pos_divide_less_eq neg_divide_less_eq |
486 pos_less_divide_eq neg_less_divide_eq |
495 pos_less_divide_eq neg_less_divide_eq |
487 pos_divide_le_eq neg_divide_le_eq |
496 pos_divide_le_eq neg_divide_le_eq |
488 pos_le_divide_eq neg_le_divide_eq |
497 pos_le_divide_eq neg_le_divide_eq |