neuper@37906
|
1 |
(* tests for rationals
|
neuper@37906
|
2 |
Stefan Karnel
|
neuper@37906
|
3 |
2002
|
neuper@37906
|
4 |
use"../kbtest/rational.sml";
|
neuper@37906
|
5 |
use"kbtest/rational.sml";
|
neuper@37906
|
6 |
use"rational.sml";
|
neuper@37906
|
7 |
*)
|
neuper@37906
|
8 |
|
neuper@37906
|
9 |
(*--------------------------------15.10.02---
|
neuper@37906
|
10 |
(* tests*)
|
neuper@37906
|
11 |
print("\n\n********************* tests *************************\n\n");
|
neuper@37906
|
12 |
print("\n\n***** divide tests *****\n");
|
neuper@37906
|
13 |
val mv_pquot1 = (#1(mv_division([(1,[1,1,1]),(1,[1,1,0]),(1,[1,0,1]),(1,[0,0,0])],[(1,[1,1,0]),(1,[0,0,0])],LEX_)));
|
neuper@37906
|
14 |
(* result: [(1,[0,0,1]),(1,[0,0,0])] *)
|
neuper@37906
|
15 |
if mv_pquot1=[(1,[0,0,1]),(1,[0,0,0])] then () else raise error ("Test failed");
|
neuper@37906
|
16 |
|
neuper@37906
|
17 |
val mv_prest1 = (#2(mv_division([(1,[1,1,1]),(1,[1,1,0]),(1,[1,0,1]),(1,[0,0,0])],[(1,[1,1,0]),(1,[0,0,0])],LEX_)));
|
neuper@37906
|
18 |
(* result: [(1,[1,0,1]),(~1,[0,0,1])] *)
|
neuper@37906
|
19 |
if mv_prest1=[(1,[1,0,1]),(~1,[0,0,1])] then () else raise error ("Test failed");
|
neuper@37906
|
20 |
|
neuper@37906
|
21 |
val mv_pquot2 = (#1(mv_division([(4,[2]),(8,[1]),(16,[0])],[(1,[1]),(1,[0])],LEX_)));
|
neuper@37906
|
22 |
(* result: [(4,[1]),(4,[0])] *)
|
neuper@37906
|
23 |
if mv_pquot2=[(4,[1]),(4,[0])] then () else raise error ("Test failed");
|
neuper@37906
|
24 |
|
neuper@37906
|
25 |
val mv_prest2 = (#2(mv_division([(4,[2]),(8,[1]),(16,[0])],[(1,[1]),(1,[0])],LEX_)));
|
neuper@37906
|
26 |
(* result: [(12,[0]] *)
|
neuper@37906
|
27 |
if mv_prest2=[(12,[0])] then () else raise error ("Test failed");
|
neuper@37906
|
28 |
|
neuper@37906
|
29 |
val mv_pquot3 = (#1(mv_division([(4,[2]),(~4,[0])],[(2,[1]),(2,[0])],LEX_)));
|
neuper@37906
|
30 |
(* [(2,[1]),(~2,[0])] *)
|
neuper@37906
|
31 |
if mv_pquot3=[(2,[1]),(~2,[0])] then () else raise error ("Test failed");
|
neuper@37906
|
32 |
|
neuper@37906
|
33 |
val mv_prest3 = (#2(mv_division([(1,[2]),(~1,[0])],[(2,[1]),(2,[0])],LEX_)));
|
neuper@37906
|
34 |
(* [(1,[2]),(~1,[0])] *)
|
neuper@37906
|
35 |
if mv_prest3=[(1,[2]),(~1,[0])] then () else raise error ("Test failed");
|
neuper@37906
|
36 |
|
neuper@37906
|
37 |
val mv_pquot4 = (#1(mv_division([(3,[1,1,1]),(4,[1,0,1]),(3,[0,0,1])],[(2,[1,0,0]),(4,[0,0,1])],LEX_)));
|
neuper@37906
|
38 |
(* [(1,[0,1,1])] *)
|
neuper@37906
|
39 |
if mv_pquot4=[(1,[0,1,1])] then () else raise error ("Test failed");
|
neuper@37906
|
40 |
|
neuper@37906
|
41 |
val mv_prest4 = (#2(mv_division([(3,[1,1,1]),(4,[1,0,1]),(3,[0,0,1])],[(2,[1,0,0]),(4,[0,0,1])],GGO_)));
|
neuper@37906
|
42 |
(* [(1,[1,1,1]),(~4,[0,1,2]),(4,[1,0,1]),(3,[0,0,1])] *)
|
neuper@37906
|
43 |
if mv_prest4 =[(1,[1,1,1]),(~4,[0,1,2]),(4,[1,0,1]),(3,[0,0,1])] then () else raise error ("Test failed");
|
neuper@37906
|
44 |
|
neuper@37906
|
45 |
val mv_pquot5 = (#1(mv_division([(3,[1,1,1]),(4,[1,0,1]),(3,[0,0,1]),(6,[2,1,3]),(4,[0,4,1]),(1,[2,2,1])],[(1,[0,0,1])],LEX_)));
|
neuper@37906
|
46 |
(* [(1,[2,2,0]),(6,[2,1,2]),(3,[1,1,0]),(4,[1,0,0]),(4,[0,4,0]),(3,[0,0,0])]*)
|
neuper@37906
|
47 |
if mv_pquot5=[(1,[2,2,0]),(6,[2,1,2]),(3,[1,1,0]),(4,[1,0,0]),(4,[0,4,0]),(3,[0,0,0])] then () else raise error ("Test failed");
|
neuper@37906
|
48 |
|
neuper@37906
|
49 |
val mv_prest5 = (#2(mv_division([(3,[1,1,1]),(4,[1,0,1]),(3,[0,0,1]),(6,[2,1,3]),(4,[0,4,1]),(1,[2,2,1])],[(1,[0,0,1])],LEX_)));
|
neuper@37906
|
50 |
(* [] *)
|
neuper@37906
|
51 |
if mv_prest5=[] then () else raise error ("Test failed");
|
neuper@37906
|
52 |
|
neuper@37906
|
53 |
(* (x^2 + 2(a+1)x + (a^2+2a+1)) / (x+a+1) = x+a+1 *)
|
neuper@37906
|
54 |
val mv_pquot6 = (#1(mv_division([(1,[2,0,0]),(2,[1,1,0]),(2,[1,0,0]),(1,[0,2,0]),(2,[0,1,0]),(1,[0,0,0])],[(1,[1,0,0]),(1,[0,1,0]),(1,[0,0,0])],LEX_)));
|
neuper@37906
|
55 |
if mv_pquot6=[(1,[1,0,0]),(1,[0,1,0]),(1,[0,0,0])] then () else raise error ("Test failed");
|
neuper@37906
|
56 |
|
neuper@37906
|
57 |
val mv_prest6 = (#2(mv_division([(1,[2,0,0]),(2,[1,1,0]),(2,[1,0,0]),(1,[0,2,0]),(2,[0,1,0]),(1,[0,0,0])],[(1,[1,0,0]),(1,[0,1,0]),(1,[0,0,0])],LEX_)));
|
neuper@37906
|
58 |
if mv_prest6=[] then () else raise error ("Test failed");
|
neuper@37906
|
59 |
|
neuper@37906
|
60 |
(* Exception tests *)
|
neuper@37906
|
61 |
(* mv_division ([(1,[0,0,0])],[(0,[1,2,3])],LEX_); *)
|
neuper@37906
|
62 |
|
neuper@37906
|
63 |
print("\n\n***** MV_CONTENT-TESTS *****\n");
|
neuper@37906
|
64 |
val mv_cont1=mv_content([(1,[2,1]),(1,[2,0]),(1,[1,1]),(1,[1,0]),(1,[0,1]),(1,[0,0])]);
|
neuper@37906
|
65 |
(* [(1,[0,1]),(1,[0,0])] *)
|
neuper@37906
|
66 |
if mv_cont1=[(1,[0,1]),(1,[0,0])] then () else raise error ("Test failed");
|
neuper@37906
|
67 |
|
neuper@37906
|
68 |
val mv_pp1=mv_pp([(1,[1,1]),(1,[1,0]),(1,[0,1]),(1,[0,0])]);
|
neuper@37906
|
69 |
(*[(1,[1,0]),(1,[0,0])]*)
|
neuper@37906
|
70 |
if mv_pp1=[(1,[1,0]),(1,[0,0])] then () else raise error ("Test failed");
|
neuper@37906
|
71 |
|
neuper@37906
|
72 |
val mv_cont2=mv_content([(2,[1]),(4,[0])]);
|
neuper@37906
|
73 |
(* [(2,[0])] *)
|
neuper@37906
|
74 |
if mv_cont2=[(2,[0])] then () else raise error ("Test failed");
|
neuper@37906
|
75 |
|
neuper@37906
|
76 |
val mv_pp2=mv_pp([(2,[1]),(4,[0])]);
|
neuper@37906
|
77 |
(* [(1,[1]),(2,[0])] *)
|
neuper@37906
|
78 |
if mv_pp2=[(1,[1]),(2,[0])] then () else raise error ("Test failed");
|
neuper@37906
|
79 |
|
neuper@37906
|
80 |
val mv_cont3=mv_content[(8,[2,1,1]),(12,[1,0,2]),(10,[2,2,0]),(16,[1,1,1])];
|
neuper@37906
|
81 |
(* [(2,[0,0,0])] *)
|
neuper@37906
|
82 |
if mv_cont3=[(2,[0,0,0])] then () else raise error ("Test failed");
|
neuper@37906
|
83 |
|
neuper@37906
|
84 |
val mv_pp3=mv_pp[(8,[2,1,1]),(12,[1,0,2]),(10,[2,2,0]),(16,[1,1,1])];
|
neuper@37906
|
85 |
(* [(5,[2,2,0]),(4,[2,1,1]),(8,[1,1,1]),(6,[1,0,2])] *)
|
neuper@37906
|
86 |
if mv_pp3=[(5,[2,2,0]),(4,[2,1,1]),(8,[1,1,1]),(6,[1,0,2])] then () else raise error ("Test failed");
|
neuper@37906
|
87 |
|
neuper@37906
|
88 |
val mv_cont4=mv_content[(2,[2,1,0]),(3,[1,0,1]),(2,[1,1,0]),(3,[0,0,1])];
|
neuper@37906
|
89 |
(* [(1,[0,0,0])] *)
|
neuper@37906
|
90 |
if mv_cont4=[(1,[0,0,0])] then () else raise error ("Test failed");
|
neuper@37906
|
91 |
|
neuper@37906
|
92 |
val mv_pp4=mv_pp [(2,[2,1,0]),(3,[1,0,1]),(2,[1,1,0]),(3,[0,0,1])];
|
neuper@37906
|
93 |
(* [(2,[2,1,0]),(2,[1,1,0]),(3,[1,0,1]),(3,[0,0,1])] *)
|
neuper@37906
|
94 |
if mv_pp4=[(2,[2,1,0]),(2,[1,1,0]),(3,[1,0,1]),(3,[0,0,1])] then () else raise error ("Test failed");
|
neuper@37906
|
95 |
|
neuper@37906
|
96 |
val con1=mv_content([(9,[2,0]),(15,[1,1]),(12,[1,0]),(6,[0,2]),(12,[0,1])]);
|
neuper@37906
|
97 |
(* [(3,[0,0])] *)
|
neuper@37906
|
98 |
if con1=[(3,[0,0])] then () else raise error ("Test failed");
|
neuper@37906
|
99 |
|
neuper@37906
|
100 |
val pp1=mv_pp([(9,[2,0]),(15,[1,1]),(12,[1,0]),(6,[0,2]),(12,[0,1])]);
|
neuper@37906
|
101 |
(* [(3,[2,0]),(5,[1,1]),(4,[1,0]),(2,[0,2]),(4,[0,1])] *)
|
neuper@37906
|
102 |
if pp1=[(3,[2,0]),(5,[1,1]),(4,[1,0]),(2,[0,2]),(4,[0,1])] then () else raise error ("Test failed");
|
neuper@37906
|
103 |
|
neuper@37906
|
104 |
val con2=mv_content([(1,[2,0]),(1,[1,1]),(1,[1,0]),(1,[0,2]),(1,[0,1])]);
|
neuper@37906
|
105 |
(* [(1,[0,0])] *)
|
neuper@37906
|
106 |
if con2=[(1,[0,0])] then () else raise error ("Test failed");
|
neuper@37906
|
107 |
|
neuper@37906
|
108 |
val pp2 =mv_pp([(1,[2,0]),(1,[1,1]),(1,[1,0]),(1,[0,2]),(1,[0,1])]);
|
neuper@37906
|
109 |
(* [(1,[2,0]),(1,[1,1]),(1,[1,0]),(1,[0,2]),(1,[0,1])] *)
|
neuper@37906
|
110 |
if pp2=[(1,[2,0]),(1,[1,1]),(1,[1,0]),(1,[0,2]),(1,[0,1])] then () else raise error ("Test failed");
|
neuper@37906
|
111 |
|
neuper@37906
|
112 |
val cont1 = mv_content [(1,[2,1,0]),(2,[2,1,0])];
|
neuper@37906
|
113 |
(* [(3,[0,1,0])] *)
|
neuper@37906
|
114 |
if cont1=[(3,[0,1,0])] then () else raise error ("Test failed");
|
neuper@37906
|
115 |
|
neuper@37906
|
116 |
val pp1 = mv_pp [(1,[2,1,0]),(2,[2,1,0])];
|
neuper@37906
|
117 |
(* [(1,[2,0,0])] *)
|
neuper@37906
|
118 |
if pp1=[(1,[2,0,0])] then () else raise error ("Test failed");
|
neuper@37906
|
119 |
|
neuper@37906
|
120 |
val cont2 = mv_content [(4,[1,2,0]),(2,[2,1,0])];
|
neuper@37906
|
121 |
(* [(2,[0,1,0])] *)
|
neuper@37906
|
122 |
if cont2=[(2,[0,1,0])] then () else raise error ("Test failed");
|
neuper@37906
|
123 |
|
neuper@37906
|
124 |
val pp2 = mv_pp [(4,[1,2,0]),(2,[2,1,0])];
|
neuper@37906
|
125 |
(* [(1,[2,0,0]),(2,[1,1,0])] *)
|
neuper@37906
|
126 |
if pp2=[(1,[2,0,0]),(2,[1,1,0])] then () else raise error ("Test failed");
|
neuper@37906
|
127 |
|
neuper@37906
|
128 |
print("\n\n\n\n********************************************************\n\n");
|
neuper@37906
|
129 |
val cont3=mv_content [(65,[3,2,2]),(52,[3,2,1]),(26,[3,1,2]),(~95,[2,2,3]),(~76,[2,2,2]),(35,[2,2,1]),(28,[2,2,0]),(~38,[2,1,3]),(14,[2,1,1])];
|
neuper@37906
|
130 |
(*if cont3=[(1,[0,1,0])] then () else raise error ("Test failed"); *)
|
neuper@37906
|
131 |
val pp3=mv_pp [(65,[3,2,2]),(52,[3,2,1]),(26,[3,1,2]),(~95,[2,2,3]),(~76,[2,2,2]),(35,[2,2,1]),(28,[2,2,0]),(~38,[2,1,3]),(14,[2,1,1])];
|
neuper@37906
|
132 |
|
neuper@37906
|
133 |
|
neuper@37906
|
134 |
print("\n\n***** gcd-tests *****\n");
|
neuper@37906
|
135 |
val ggt1 = gcd_poly [(4,[2,2]),(8,[1,1]),(4,[0,0])] [(2,[1,1]),(2,[0,0])];
|
neuper@37906
|
136 |
(* [(2,[1,1]),(2,[0,0])] *)
|
neuper@37906
|
137 |
if ggt1=[(2,[1,1]),(2,[0,0])] then () else raise error ("Test failed");
|
neuper@37906
|
138 |
|
neuper@37906
|
139 |
val ggt2 = gcd_poly [(8,[2,1,1]),(12,[1,0,2]),(10,[2,2,0]),(15,[1,1,1])] [(2,[2,1,0]),(3,[1,0,1]),(2,[1,1,0]),(3,[0,0,1])];
|
neuper@37906
|
140 |
(* [(2,[1,1,0]),(3,[0,0,1])] *)
|
neuper@37906
|
141 |
if ggt2=[(2,[1,1,0]),(3,[0,0,1])] then () else raise error ("Test failed");
|
neuper@37906
|
142 |
|
neuper@37906
|
143 |
val ggt3 = gcd_poly [(1,[2,0,0]),(~2,[1,0,1]),(1,[0,0,2])] [(1,[1,0,0]),(~1,[0,0,1])];
|
neuper@37906
|
144 |
(* [(1,[1,0,0]),(~1,[0,0,1])] *)
|
neuper@37906
|
145 |
if ggt3=[(1,[1,0,0]),(~1,[0,0,1])] then () else raise error ("Test failed");
|
neuper@37906
|
146 |
|
neuper@37906
|
147 |
val ggt4 = gcd_poly [(1,[2,1,0]),(2,[2,1,0])] [(5,[1,0,0])];
|
neuper@37906
|
148 |
(* [(1,[1,0,0])] *)
|
neuper@37906
|
149 |
if ggt4=[(1,[1,0,0])] then () else raise error ("Test failed");
|
neuper@37906
|
150 |
|
neuper@37906
|
151 |
val ggt5 = gcd_poly [(4,[2,0,0]),(~8,[1,0,1]),(4,[0,0,2])] [(1,[2,0,0]),(~1,[0,0,2])];
|
neuper@37906
|
152 |
(* [(1,[1,0,0]),(~1,[0,0,1])] *)
|
neuper@37906
|
153 |
if ggt5=[(1,[1,0,0]),(~1,[0,0,1])] then () else raise error ("Test failed");
|
neuper@37906
|
154 |
|
neuper@37906
|
155 |
val ggt6 = gcd_poly [(10,[2,1,1]),(14,[1,1,0]),(3,[1,0,1]),(20,[1,2,1])] [(5,[1,1,1]),(7,[2,1,1])];
|
neuper@37906
|
156 |
(* [(1,[0,0,0])] *)
|
neuper@37906
|
157 |
if ggt6=[(1,[1,0,0])] then () else raise error ("Test failed");
|
neuper@37906
|
158 |
|
neuper@37906
|
159 |
val ggt7 = gcd_poly [(~169,[4,3,3]),(273,[4,2,2]),(247,[3,3,4]),(~91,[3,3,2]),(78,[3,3,1]),(~399,[3,2,3]),(147,[3,2,1]),(~114,[2,3,2]),(42,[2,3,0])] [(65,[3,2,2]),(52,[3,2,1]),(26,[3,1,2]),(~95,[2,2,3]),(~76,[2,2,2]),(35,[2,2,1]),(28,[2,2,0]),(~38,[2,1,3]),(14,[2,1,1])];
|
neuper@37906
|
160 |
(* [(13,[3,1,1]),(~19,[2,1,2]),(7,[2,1,0])] *)
|
neuper@37906
|
161 |
if ggt7=[(13,[3,1,1]),(~19,[2,1,2]),(7,[2,1,0])] then () else raise error ("Test failed");
|
neuper@37906
|
162 |
|
neuper@37906
|
163 |
print("\n\n***** kgv-tests *****\n");
|
neuper@37906
|
164 |
val kgv1=lcm_poly [(10,[])] [(15,[])];
|
neuper@37906
|
165 |
(* [(30,[])] *)
|
neuper@37906
|
166 |
if kgv1=[(30,[])] then () else raise error ("Test failed");
|
neuper@37906
|
167 |
|
neuper@37906
|
168 |
val kgv2=lcm_poly [(1,[2,0,0]),(~2,[1,0,1]),(1,[0,0,2])] [(1,[1,0,0]),(~1,[0,0,1])];
|
neuper@37906
|
169 |
(* [(1,[2,0,0]),(~2,[1,0,1]),(1,[0,0,2])] *)
|
neuper@37906
|
170 |
if kgv2=[(1,[2,0,0]),(~2,[1,0,1]),(1,[0,0,2])] then () else raise error ("Test failed");
|
neuper@37906
|
171 |
|
neuper@37906
|
172 |
val kgv3=lcm_poly [(4,[2,0,0]),(~8,[1,0,1]),(4,[0,0,2])] [(1,[2,0,0]),(~1,[0,0,2])];
|
neuper@37906
|
173 |
(* [(4,[3,0,0]),(~4,[2,0,1]),(~4,[1,0,2]),(4,[0,0,3])] *)
|
neuper@37906
|
174 |
if kgv3=[(4,[3,0,0]),(~4,[2,0,1]),(~4,[1,0,2]),(4,[0,0,3])] then () else raise error ("Test failed");
|
neuper@37906
|
175 |
|
neuper@37906
|
176 |
(*
|
neuper@37906
|
177 |
print("***** TERM2POLY-TESTS *****\n");
|
neuper@37906
|
178 |
val t0 = (term_of o the o (parse thy)) "3 * 4";
|
neuper@37906
|
179 |
val t1 = (term_of o the o (parse thy)) "27";
|
neuper@37906
|
180 |
val t11= (term_of o the o (parse thy)) "27 * c";
|
neuper@37906
|
181 |
val t2 = (term_of o the o (parse thy)) "b";
|
neuper@37906
|
182 |
val t23= (term_of o the o (parse thy)) "c^^^7";
|
neuper@37906
|
183 |
val t24= (term_of o the o (parse thy)) "5 * c^^^7";
|
neuper@37906
|
184 |
val t26= (term_of o the o (parse thy)) "a * b";
|
neuper@37906
|
185 |
val t3 = (term_of o the o (parse thy)) "2 + a";
|
neuper@37906
|
186 |
val t4 = (term_of o the o (parse thy)) "b + a";
|
neuper@37906
|
187 |
val t5 = (term_of o the o (parse thy)) "2 + a^^^3";*)
|
neuper@37906
|
188 |
val t6 = (term_of o the o (parse thy)) "5*a^^^2*b^^^3*c+4*a^^^4*b+2*a*c";
|
neuper@37906
|
189 |
val t7 = (term_of o the o (parse thy)) "a-b";
|
neuper@37906
|
190 |
(*
|
neuper@37906
|
191 |
(the o term2poly) t0;
|
neuper@37906
|
192 |
(the o term2poly) t1;
|
neuper@37906
|
193 |
(the o term2poly) t11;
|
neuper@37906
|
194 |
(the o term2poly) t2;
|
neuper@37906
|
195 |
(the o term2poly) t23;
|
neuper@37906
|
196 |
(the o term2poly) t24;
|
neuper@37906
|
197 |
(the o term2poly) t26;
|
neuper@37906
|
198 |
(the o term2poly) t3;
|
neuper@37906
|
199 |
(the o term2poly) t4;
|
neuper@37906
|
200 |
(the o term2poly) t5;
|
neuper@37906
|
201 |
(the o term2poly) t6;
|
neuper@37906
|
202 |
(the o term2poly) t7;*)
|
neuper@37906
|
203 |
|
neuper@37906
|
204 |
|
neuper@37906
|
205 |
print("\n\n***** STEP_CANCEL_TESTS: *****\n");
|
neuper@37906
|
206 |
(*
|
neuper@37906
|
207 |
val term2 = (term_of o the o (parse thy)) " (9 * a^^^2 * b) /// (6 * a * c)";
|
neuper@37906
|
208 |
val div2 = step_cancel term2;
|
neuper@37906
|
209 |
atomt div2;
|
neuper@37906
|
210 |
*)
|
neuper@37906
|
211 |
|
neuper@37906
|
212 |
val term1 = (term_of o the o (parse thy)) "(10 * a^^^2 * b * c + 14 * a * b + 3 * a * c + 20 * a * b^^^2 * c) /// a";
|
neuper@37906
|
213 |
val div1 = step_cancel term1;
|
neuper@37906
|
214 |
(*if div1 = (term_of o the o (parse thy)) "((10 * a * b * c + 14 * b + 3 * c + 20 * b^^^2 * c) * a) /// (1 * a)" then () else raise raise error ("Test failed");*)
|
neuper@37906
|
215 |
|
neuper@37906
|
216 |
val term2 = (term_of o the o (parse thy)) "(10 * a^^^2 * b * c + 14 * a * b + 3 * a * c + 20 * a * b^^^2 * c) /// (5 * a * b * c + 7 * a^^^2 * b * c) ";
|
neuper@37906
|
217 |
val div2 = step_cancel term2;
|
neuper@37906
|
218 |
(*if div2 = ([(10,[1,1,1]),(20,[0,2,1]),(14,[0,1,0]),(3,[0,0,1])],[(1,[1,0,0])],[(7,[1,1,1]),(5,[0,1,1])]) then () else raise raise error ("Test failed");*)
|
neuper@37906
|
219 |
|
neuper@37906
|
220 |
|
neuper@37906
|
221 |
val term3 = (term_of o the o (parse thy)) "(10 * a^^^2 * b * c) /// (1 * x * y * z) ";
|
neuper@37906
|
222 |
val div3 = step_cancel term3;
|
neuper@37906
|
223 |
|
neuper@37906
|
224 |
|
neuper@37906
|
225 |
|
neuper@37906
|
226 |
(*val mul1=(term_of o the o (parse thy)) "(5*a*b*c+4*a*b+2*a*c)";
|
neuper@37906
|
227 |
val mul2=(the (term2poly((term_of o the o (parse thy)) "13*a^^^2*b*c+7*a*b-19*a*b*c^^^2")));
|
neuper@37906
|
228 |
val mul3=(the (term2poly((term_of o the o (parse thy)) "6*a*b^^^2-13*a^^^2*b^^^2*c^^^2+21*a^^^2*b*c")));
|
neuper@37906
|
229 |
val t1=mv_mul(mul1,mul2,LEX_);
|
neuper@37906
|
230 |
val t2=mv_mul(mul3,mul2,LEX_);
|
neuper@37906
|
231 |
val div3=step_cancel t1 t2;
|
neuper@37906
|
232 |
if div3=([(5,[0,1,1]),(4,[0,1,0]),(2,[0,0,1])],[(13,[3,1,1]),(~19,[2,1,2]),(7,[2,1,0])],[(~13,[1,2,2]),(21,[1,1,1]),(6,[0,2,0])]) then () else raise error ("Test failed");*)
|
neuper@37906
|
233 |
|
neuper@37906
|
234 |
print("\n\n***** all tests successfull ;-) ******\n\n");
|
neuper@37906
|
235 |
|
neuper@37906
|
236 |
|
neuper@37906
|
237 |
|
neuper@37906
|
238 |
val thy = Rational.thy;
|
neuper@37906
|
239 |
val rls = Prls {func=cancel};
|
neuper@37906
|
240 |
val t = (term_of o the o (parse thy))
|
neuper@37906
|
241 |
"(1 + 1 * a ^^^ 1)///(-2 + 2 * a ^^^ 2)";
|
neuper@37906
|
242 |
val (t,asm) = the (rewrite_set_ thy eval_rls false rls t);
|
neuper@37906
|
243 |
|
neuper@37906
|
244 |
|
neuper@37906
|
245 |
val thy' = "Rational.thy";
|
neuper@37906
|
246 |
val rls' = "cancel";
|
neuper@37906
|
247 |
val t' = "(1 + 1 * a ^^^ 1)///(-2 + 2 * a ^^^ 2)";
|
neuper@37906
|
248 |
val (t',asm') = the (rewrite_set thy' "eval_rls" false rls' t');
|
neuper@37906
|
249 |
(*if t' = "1 /// (-2 + 2 * a)" then ()
|
neuper@37906
|
250 |
else raise error "tests/rationals.sml(1): new behaviour";*)
|
neuper@37906
|
251 |
|
neuper@37906
|
252 |
|
neuper@37906
|
253 |
val thy' = "Rational.thy";
|
neuper@37906
|
254 |
val rls' = "cancel";
|
neuper@37906
|
255 |
val t' = "(10 * a^^^2 * b * c + 14 * a * b + 3 * a * c + 20 * a * b^^^2 * c) /// (5 * a * b * c + 7 * a^^^2 * b * c) ";
|
neuper@37906
|
256 |
val (t',asm') = the (rewrite_set thy' "eval_rls" false rls' t');
|
neuper@37906
|
257 |
|
neuper@37906
|
258 |
val thy' = "Rational.thy";
|
neuper@37906
|
259 |
val rls' = "cancel";
|
neuper@37906
|
260 |
val t' = "(a^^^2 * b + 2 * a * b + b ) /// ( a^^^2 - 1 )";
|
neuper@37906
|
261 |
val (t',asm') = the (rewrite_set thy' "eval_rls" false rls' t');
|
neuper@37906
|
262 |
|
neuper@37906
|
263 |
(*
|
neuper@37906
|
264 |
val term2 = (term_of o the o (parse thy)) "(a^^^2 * b + 2 * a * b + b ) /// ( a^^^2 - 1 )";
|
neuper@37906
|
265 |
val div2 = direct_cancel term2;
|
neuper@37906
|
266 |
val t = (term_of o the o (parse thy)) "(1 + 1 * a ^^^ 1)///(-2 + 2 * a ^^^ 2) = 0";*)
|
neuper@37906
|
267 |
|
neuper@37906
|
268 |
|
neuper@37906
|
269 |
|
neuper@37906
|
270 |
(*WN folgendes aus examples he"uberkopiert ...*)
|
neuper@37906
|
271 |
|
neuper@37906
|
272 |
(* examples from:
|
neuper@37906
|
273 |
Mathematik 1
|
neuper@37906
|
274 |
Schalk
|
neuper@37906
|
275 |
Reniets Verlag *)
|
neuper@37906
|
276 |
|
neuper@37906
|
277 |
val thy' = "Rational.thy";
|
neuper@37906
|
278 |
val rls' = "cancel";
|
neuper@37906
|
279 |
val mp = "make_polynomial";
|
neuper@37906
|
280 |
|
neuper@37906
|
281 |
(* page 63 *)
|
neuper@37906
|
282 |
|
neuper@37906
|
283 |
print("\n\nexample 186:\n");
|
neuper@37906
|
284 |
print("a)\n");
|
neuper@37906
|
285 |
val e186a'="(14 * x * y) / ( x * y )";
|
neuper@37906
|
286 |
val e186a = the (rewrite_set thy' "rational_erls" false rls' e186a');
|
neuper@37906
|
287 |
print("b)\n");
|
neuper@37906
|
288 |
val e186b'="(60 * a * b) / ( 15 * a * b )";
|
neuper@37906
|
289 |
val e186b = the (rewrite_set thy' "rational_erls" false rls' e186b');
|
neuper@37906
|
290 |
print("c)\n");
|
neuper@37906
|
291 |
val e186c'="(144 * a^^^2 * b * c) / (12 * a * b * c )";
|
neuper@37906
|
292 |
val e186c = (the (rewrite_set thy' "rational_erls" false rls' e186c'))
|
neuper@37906
|
293 |
handle e => print_exn e;
|
neuper@37906
|
294 |
val t = (term_of o the o (parse thy)) e186c';
|
neuper@37906
|
295 |
atomt t;
|
neuper@37906
|
296 |
|
neuper@37906
|
297 |
print("\n\nexample 187:\n");
|
neuper@37906
|
298 |
print("a)\n");
|
neuper@37906
|
299 |
val e187a'="(12 * x * y) / (8 * y^^^2 )";
|
neuper@37906
|
300 |
val e187a = the (rewrite_set thy' "rational_erls" false rls' e187a');
|
neuper@37906
|
301 |
print("b)\n");
|
neuper@37906
|
302 |
val e187b'="(8 * x^^^2 * y * z ) / (18 * x * y^^^2 * z )";
|
neuper@37906
|
303 |
val e187b = the (rewrite_set thy' "rational_erls" false rls' e187b');
|
neuper@37906
|
304 |
print("c)\n");
|
neuper@37906
|
305 |
val e187c'="(9 * x^^^5 * y^^^2 * z^^^4) / (15 * x^^^6 * y^^^3 * z )";
|
neuper@37906
|
306 |
val e187c = the (rewrite_set thy' "rational_erls" false rls' e187c');
|
neuper@37906
|
307 |
|
neuper@37906
|
308 |
print("\n\nexample 188:\n");
|
neuper@37906
|
309 |
print("a)\n");
|
neuper@37906
|
310 |
val e188a'="(8 * x + -8) / (9 * x + -9 )";
|
neuper@37906
|
311 |
val e188a = the (rewrite_set thy' "rational_erls" false rls' e188a');
|
neuper@37926
|
312 |
val SOME (t,_) = rewrite_set thy' "rational_erls" false mp "(8*((-1) + x))/(9*((-1) + x))";
|
neuper@37906
|
313 |
if t="((-8) + 8 * x) / ((-9) + 9 * x)"then()
|
neuper@37906
|
314 |
else raise error "rationals.sml: e188a new behaviour";
|
neuper@37906
|
315 |
print("b)\n");
|
neuper@37906
|
316 |
val e188b'="(5 * x + -15) / (6 * x + -18 )";
|
neuper@37906
|
317 |
val e188b = the (rewrite_set thy' "rational_erls" false rls' e188b');
|
neuper@37906
|
318 |
print("c)\n");
|
neuper@37906
|
319 |
val e188c'="( a + -1 * b ) / ( b + -1 * a )";
|
neuper@37906
|
320 |
val e188c = the (rewrite_set thy' "rational_erls" false rls' e188c');
|
neuper@37926
|
321 |
val SOME (t,_) = rewrite_set thy' "rational_erls" false mp "((-1)*(b + (-1) * a))/(1*(b + (-1) * a))";
|
neuper@37906
|
322 |
if t="(a + -1 * b) / (b + -1 * a)"then()
|
neuper@37906
|
323 |
else raise error "rationals.sml: e188c new behaviour";
|
neuper@37906
|
324 |
|
neuper@37906
|
325 |
print("\n\nexample 190:\n");
|
neuper@37906
|
326 |
print("c)\n");
|
neuper@37906
|
327 |
val e190c'="( 27 * a^^^3 + 9 * a^^^2 + 3 * a + 1 ) / ( 27 * a^^^3 + 18 * a^^^2 + 3 * a )";
|
neuper@37906
|
328 |
val e190c = the (rewrite_set thy' "rational_erls" false rls' e190c');
|
neuper@37926
|
329 |
val SOME (t,_) = rewrite_set thy' "rational_erls" false mp "((1 + 9 * a ^^^ 2)*(1 + 3 * a))/((3 * a + 9 * a ^^^ 2)*(1 + 3 * a))";
|
neuper@37906
|
330 |
if t="(1 + (3 * a + (27 * a ^^^ 3 + 9 * a ^^^ 2))) /\n(3 * a + (18 * a ^^^ 2 + 27 * a ^^^ 3))"then()
|
neuper@37906
|
331 |
(*TERMORDER ~~~~~~~ ~~~~~~~*)
|
neuper@37906
|
332 |
else raise error "rationals.sml: e190c new behaviour";
|
neuper@37906
|
333 |
|
neuper@37906
|
334 |
print("\n\nexample 191:\n");
|
neuper@37906
|
335 |
print("a)\n");
|
neuper@37906
|
336 |
val e191a'="( x^^^2 + -1 * y^^^2 ) / ( x + y )";
|
neuper@37906
|
337 |
val e191a = the (rewrite_set thy' "rational_erls" false rls' e191a');
|
neuper@37926
|
338 |
val SOME (t,_) = rewrite_set thy' "rational_erls" false mp "((x + (-1) * y)*(x + y))/((1)*(x + y))";
|
neuper@37906
|
339 |
if t="(x ^^^ 2 + -1 * y ^^^ 2) / (x + y)"then()
|
neuper@37906
|
340 |
else raise error "rationals.sml: e191a new behaviour";
|
neuper@37906
|
341 |
print("c)\n");
|
neuper@37906
|
342 |
val e191c'="( 9 * x^^^2 + -30 * x + 25 ) / ( 9 * x^^^2 + -25 )";
|
neuper@37906
|
343 |
val e191c = the (rewrite_set thy' "rational_erls" false rls' e191c');
|
neuper@37926
|
344 |
val SOME (t,_) = rewrite_set thy' "rational_erls" false mp "(((-5) + 3 * x)*((-5) + 3 * x))/((5 + 3 * x)*((-5) + 3 * x))";
|
neuper@37906
|
345 |
if t="(25 + ((-30) * x + 9 * x ^^^ 2)) / ((-25) + 9 * x ^^^ 2)"then()
|
neuper@37906
|
346 |
else raise error "rationals.sml: 'e191c' new behaviour";
|
neuper@37906
|
347 |
|
neuper@37906
|
348 |
print("\n\nexample 192:\n");
|
neuper@37906
|
349 |
print("b)\n");
|
neuper@37906
|
350 |
val e192b'="( 7 * x^^^3 + -1 * x^^^2 * y ) / ( 7 * x * y^^^2 + -1 * y^^^3 )";
|
neuper@37906
|
351 |
val e192b = the (rewrite_set thy' "rational_erls" false rls' e192b');
|
neuper@37926
|
352 |
val SOME (t,_) = rewrite_set thy' "rational_erls" false mp "((x ^^^ 2)*(7 * x + (-1) * y))/((y ^^^ 2)*(7 * x + (-1) * y))";
|
neuper@37906
|
353 |
if t="(7 * x ^^^ 3 + -1 * (y * x ^^^ 2)) / (-1 * y ^^^ 3 + 7 * (x * y ^^^ 2))"then()
|
neuper@37906
|
354 |
(*TERMORDER ~~~~~*)
|
neuper@37906
|
355 |
else raise error "rationals.sml: 'e192b' new behaviour";
|
neuper@37906
|
356 |
|
neuper@37906
|
357 |
print("\n\nexample 193:\n");
|
neuper@37906
|
358 |
print("a)\n");
|
neuper@37906
|
359 |
val e193a'="( x^^^2 + -6 * x + 9 ) / ( x^^^2 + -9 )";
|
neuper@37906
|
360 |
val e193a = the (rewrite_set thy' "rational_erls" false rls' e193a');
|
neuper@37906
|
361 |
print("b)\n");
|
neuper@37906
|
362 |
val e193b'="( x^^^2 + -8 * x + 16 ) / ( 2 * x^^^2 + -32 )";
|
neuper@37906
|
363 |
val e193b = the (rewrite_set thy' "rational_erls" false rls' e193b');
|
neuper@37906
|
364 |
print("c)\n");
|
neuper@37906
|
365 |
val e193c'="( 2 * x + -50 * x^^^3 ) / ( 25 * x^^^2 + -10 * x + 1 )";
|
neuper@37926
|
366 |
val SOME(t,_) = rewrite_set thy' "rational_erls" false rls' e193c';
|
neuper@37906
|
367 |
--------------------------------15.10.02---*)
|
neuper@37906
|
368 |
|
neuper@37906
|
369 |
|
neuper@37906
|
370 |
(*---------- WN: 10.9.02:
|
neuper@37906
|
371 |
ML> val e204a = the (rewrite_set thy' "rational_erls" false rls' e204a');
|
neuper@37906
|
372 |
*** RATIONALS_STEP_CANCEL_EXCEPTION: Invalid fraction
|
neuper@37906
|
373 |
print("\n\nexample 204:\n");
|
neuper@37906
|
374 |
print("a)\n");
|
neuper@37906
|
375 |
val e204a'="((5 * x) / 9) + ((3 * x) / 9) + (x / 9)";
|
neuper@37906
|
376 |
val e204a = the (rewrite_set thy' "rational_erls" false rls' e204a');
|
neuper@37906
|
377 |
print("b)\n");
|
neuper@37906
|
378 |
val e204b'="5 / x + -3 / x + -1 / x";
|
neuper@37906
|
379 |
val e204b = the (rewrite_set thy' "rational_erls" false rls' e204b');
|
neuper@37906
|
380 |
|
neuper@37906
|
381 |
print("\n\nexample 205:\n");
|
neuper@37906
|
382 |
print("a)\n");
|
neuper@37906
|
383 |
val e205a'="((4 * x + 7) / 8) + ((4 * x + 3) / 8)";
|
neuper@37906
|
384 |
val e205a = the (rewrite_set thy' "rational_erls" false rls' e205a');
|
neuper@37906
|
385 |
print("b)\n");
|
neuper@37906
|
386 |
val e205b'="((5 * x + 2) / 3) + ((-2 * x + 1) / 3)";
|
neuper@37906
|
387 |
val e205b = the (rewrite_set thy' "rational_erls" false rls' e205b');
|
neuper@37906
|
388 |
|
neuper@37906
|
389 |
print("\n\nexample 206:\n");
|
neuper@37906
|
390 |
print("a)\n");
|
neuper@37906
|
391 |
val e206a'="((5 * x + 4) / (2 * x + -1)) + ((9 * x + 5) / (2 * x + -1))";
|
neuper@37906
|
392 |
val e206a = the (rewrite_set thy' "rational_erls" false rls' e206a');
|
neuper@37906
|
393 |
print("b)\n");
|
neuper@37906
|
394 |
val e206b'="((17 * x + -23) / (5 * x + 4)) + ((-25 + -17 * x) / (5 * x + 4))";
|
neuper@37906
|
395 |
val e206b = the (rewrite_set thy' "rational_erls" false rls' e206b');
|
neuper@37906
|
396 |
|
neuper@37906
|
397 |
print("\n\nexample 207:\n");
|
neuper@37906
|
398 |
val e207'="((3 * x * y + 3 * y) / (x * y)) + ((5 * x * y + 7 * y) / (x * y)) + ((9 * x * y + -2 * y) / (x * y)) + ((x * y + 4 * y) / (x * y)) ";
|
neuper@37906
|
399 |
val e207 = the (rewrite_set thy' "rational_erls" false rls' e207');
|
neuper@37906
|
400 |
|
neuper@37906
|
401 |
print("\n\nexample 208:\n");
|
neuper@37906
|
402 |
val e208'="((3 * x + 2) / (x + 2)) + ((5 * x + -1) / (x + 2)) + ((-7 * x + -3) / (x + 2)) + ((-1 * x + -3) / (x + 2)) ";
|
neuper@37906
|
403 |
val e208 = the (rewrite_set thy' "rational_erls" false rls' e208');
|
neuper@37906
|
404 |
|
neuper@37906
|
405 |
print("\n\nexample 209:\n");
|
neuper@37906
|
406 |
val e209'="((3 * x + -7 * y + 3 * z) / (4)) + ((2 * x + 17 * y + 10 * z) / (4)) + ((-1 * x + 2 * y + z) / (4)) ";
|
neuper@37906
|
407 |
val e209 = the (rewrite_set thy' "rational_erls" false rls' e209');
|
neuper@37906
|
408 |
|
neuper@37906
|
409 |
print("\n\nexample 210:\n");
|
neuper@37906
|
410 |
val e210'="((2 * x + 3 + -1 * x^^^2) / (5 * x)) + ((5 * x^^^2 + -2 * x + 1) / (5 * x)) + ((-3 * x^^^2 + -2 * x + 1) / (5 * x)) + ((-1 * x^^^2 + -3 * x + -5) / (5 * x)) ";
|
neuper@37906
|
411 |
val e210 = the (rewrite_set thy' "rational_erls" false rls' e210');
|
neuper@37906
|
412 |
|
neuper@37906
|
413 |
print("\n\nexample 211:\n");
|
neuper@37906
|
414 |
print("a)\n");
|
neuper@37906
|
415 |
val e211a'="((b) / (a + -1 * b)) + ((-1 * a) / (a + -1 * b))";
|
neuper@37906
|
416 |
val e211a = the (rewrite_set thy' "rational_erls" false rls' e211a');
|
neuper@37906
|
417 |
print("b)\n");
|
neuper@37906
|
418 |
val e211b'="((b) / (b^^^2 + -1 * a^^^2)) + ((-1 * a) / (b^^^2 + -1 * a^^^2))";
|
neuper@37906
|
419 |
val e211b = the (rewrite_set thy' "rational_erls" false rls' e211b');
|
neuper@37906
|
420 |
|
neuper@37906
|
421 |
print("\n\nexample 212:\n");
|
neuper@37906
|
422 |
print("a)\n");
|
neuper@37906
|
423 |
val e212a'="((4) / (x)) + ((-3) / (y)) + -1";
|
neuper@37906
|
424 |
val e212a = the (rewrite_set thy' "rational_erls" false rls' e212a');
|
neuper@37906
|
425 |
print("b)\n");
|
neuper@37906
|
426 |
val e212b'="((4) / (x)) + ((-5) / (y)) + ((6) / (x*y))";
|
neuper@37906
|
427 |
val e212b = the (rewrite_set thy' "rational_erls" false rls' e212b');
|
neuper@37906
|
428 |
|
neuper@37906
|
429 |
print("\n\nexample 213:\n");
|
neuper@37906
|
430 |
print("a)\n");
|
neuper@37906
|
431 |
val e213a'="((5 * x) / (3 * y^^^2)) + ((19 * z) / (6 * x * y)) + ((-2 * x) / (3 * y^^^2)) + ((7 * y^^^2) / (6 * x^^^2)) ";
|
neuper@37906
|
432 |
val e213a = the (rewrite_set thy' "rational_erls" false rls' e213a');
|
neuper@37906
|
433 |
print("b)\n");
|
neuper@37906
|
434 |
val e213b'="((2 * b) / (3 * a^^^2)) + ((3 * c) / (7 * a * b)) + ((4 * b) / (3 * a^^^2)) + ((3 * a) / (7 * b^^^2))";
|
neuper@37906
|
435 |
val e213b = the (rewrite_set thy' "rational_erls" false rls' e213b');
|
neuper@37906
|
436 |
|
neuper@37906
|
437 |
print("\n\nexample 214:\n");
|
neuper@37906
|
438 |
print("a)\n");
|
neuper@37906
|
439 |
val e214a'="((3 * x + 2 * y + 2 * z) / (4)) + ((-5 * x + -3 * y) / (3)) + ((x + y + -2 * z) / (2))";
|
neuper@37906
|
440 |
val e214a = the (rewrite_set thy' "rational_erls" false rls' e214a');
|
neuper@37906
|
441 |
print("b)\n");
|
neuper@37906
|
442 |
val e214b'="((5 * x + 2 * y + z) / (2)) + ((-7 * x + -3 * y) / (3)) + ((3 * x + 6 * y + -1 * z) / (12))";
|
neuper@37906
|
443 |
val e214b = the (rewrite_set thy' "rational_erls" false rls' e214b');
|
neuper@37906
|
444 |
|
neuper@37906
|
445 |
print("\n\nexample 216:\n");
|
neuper@37906
|
446 |
print("a)\n");
|
neuper@37906
|
447 |
val e216a'="((2 * b + 3 * c) / (a * c)) + ((3 * a + b) / (a * b)) + ((-2 * b^^^2 + -3 * a * c) / (a * b * c))";
|
neuper@37906
|
448 |
val e216a = the (rewrite_set thy' "rational_erls" false rls' e216a');
|
neuper@37906
|
449 |
print("b)\n");
|
neuper@37906
|
450 |
val e216b'="((2 * a + 3 * b) / (b * c)) + ((3 * c + a) / (a * c)) + ((-2 * a^^^2 + -3 * b * c) / (a * b * c))";
|
neuper@37906
|
451 |
val e216b = the (rewrite_set thy' "rational_erls" false rls' e216b');
|
neuper@37906
|
452 |
|
neuper@37906
|
453 |
print("\n\nexample 217:\n");
|
neuper@37906
|
454 |
val e217'="((z + -1) / (z)) + ((3 * z ^^^2 + -6 * z + 5) / (z^^^2)) + ((-4 * z^^^3 + 7 * z^^^2 + -5 * z + 5) / (z^^^3))";
|
neuper@37906
|
455 |
val e217 = the (rewrite_set thy' "rational_erls" false rls' e217');
|
neuper@37906
|
456 |
|
neuper@37906
|
457 |
print("\n\nexample 218:\n");
|
neuper@37906
|
458 |
val e218'="((9 * a^^^3 - 5 * a^^^2 + 2 * a + 8) / (108 * a^^^4)) + ((-5 * a + 3 * a^^^2 + 4) / (8 * a^^^3)) + ((-261 * a^^^3 + 19 * a^^^2 + -112 * a + 16) / (216 * a^^^4))";
|
neuper@37906
|
459 |
val e218 = the (rewrite_set thy' "rational_erls" false rls' e218');
|
neuper@37906
|
460 |
|
neuper@37906
|
461 |
print("\n\nexample 219:\n");
|
neuper@37906
|
462 |
print("a)\n");
|
neuper@37906
|
463 |
val e219a'="((1) / (y + 1)) + ((1) / (y + 2)) + ((1) / (y + 3))";
|
neuper@37906
|
464 |
val e219a = the (rewrite_set thy' "rational_erls" false rls' e219a');
|
neuper@37906
|
465 |
print("b)\n");
|
neuper@37906
|
466 |
val e219b'="((1) / (x + 1)) + ((1) / (x + 2)) + ((-2) / (x + 3))";
|
neuper@37906
|
467 |
val e219b = the (rewrite_set thy' "rational_erls" false rls' e219b');
|
neuper@37906
|
468 |
|
neuper@37906
|
469 |
print("\n\nexample 220:\n");
|
neuper@37906
|
470 |
print("a)\n");
|
neuper@37906
|
471 |
val e220a'="((17) / (5 * r + -2)) + ((-13) / (2 * r + 3)) + ((4) / (3 * r + -5))";
|
neuper@37906
|
472 |
val e220a = the (rewrite_set thy' "rational_erls" false rls' e220a');
|
neuper@37906
|
473 |
print("b)\n");
|
neuper@37906
|
474 |
val e220b'="((20 * a) / (a + -3)) + ((-19 * a) / (a + -4)) + ((a) / (a + -5))";
|
neuper@37906
|
475 |
val e220b = the (rewrite_set thy' "rational_erls" false rls' e220b');
|
neuper@37906
|
476 |
|
neuper@37906
|
477 |
print("\n\nexample 221:\n");
|
neuper@37906
|
478 |
print("a)\n");
|
neuper@37906
|
479 |
val e221a'="((a + b) / (a + -1 * b)) + ((a + -1 * b) / (a + b))";
|
neuper@37906
|
480 |
val e221a = the (rewrite_set thy' "rational_erls" false rls' e221a');
|
neuper@37906
|
481 |
print("b)\n");
|
neuper@37906
|
482 |
val e221b'="((x + -1 * y) / (x + y)) + ((x + y) / (x + -1 * y)) ";
|
neuper@37906
|
483 |
val e221b = the (rewrite_set thy' "rational_erls" false rls' e221b');
|
neuper@37906
|
484 |
|
neuper@37906
|
485 |
print("\n\nexample 222:\n");
|
neuper@37906
|
486 |
print("a)\n");
|
neuper@37906
|
487 |
val e222a'="((1 + -1 * x) / (1 + x)) + ((-1 + -1 * x) / (1 + -1 * x)) + ((4 * x) / (1 + -1 * x^^^2))";
|
neuper@37906
|
488 |
val e222a = the (rewrite_set thy' "rational_erls" false rls' e222a');
|
neuper@37906
|
489 |
print("b)\n");
|
neuper@37906
|
490 |
val e222b'="((1 + x ) / (1 + -1 * x)) + ((-1 + x) / (1 + x)) + ((2 * x) / (1 + -1 * x^^^2))";
|
neuper@37906
|
491 |
val e222b = the (rewrite_set thy' "rational_erls" false rls' e222b');
|
neuper@37906
|
492 |
|
neuper@37906
|
493 |
print("\n\nexample 225:\n");
|
neuper@37906
|
494 |
print("a)\n");
|
neuper@37906
|
495 |
val e225a'="((6 * a) / (a^^^2 + -64)) + ((a + 2) / (2 * a + 16)) + ((-1) / (2))";
|
neuper@37906
|
496 |
val e225a = the (rewrite_set thy' "rational_erls" false rls' e225a');
|
neuper@37906
|
497 |
print("b)\n");
|
neuper@37906
|
498 |
val e225b'="((a + 2 ) / (2 * a + 12)) + ((4 * a) / (a^^^2 + -36)) + ((-1) / (2))";
|
neuper@37906
|
499 |
val e225b = the (rewrite_set thy' "rational_erls" false rls' e225b');
|
neuper@37906
|
500 |
|
neuper@37906
|
501 |
print("\n\nexample 226:\n");
|
neuper@37906
|
502 |
print("a)\n");
|
neuper@37906
|
503 |
val e226a'="((35 * z) / (49 * z^^^2 + -4)) + -1 + ((14 * z + -1) / (14 * z + 4)) ";
|
neuper@37906
|
504 |
val e226a = the (rewrite_set thy' "rational_erls" false rls' e226a');
|
neuper@37906
|
505 |
print("b)\n");
|
neuper@37906
|
506 |
val e226b'="((45 * a * b) / (25 * a^^^2 + -9 * b^^^2)) + ((20 * a + 3 * b) / (10 * a + 6 * b)) + -2";
|
neuper@37906
|
507 |
val e226b = the (rewrite_set thy' "rational_erls" false rls' e226b');
|
neuper@37906
|
508 |
|
neuper@37906
|
509 |
print("\n\nexample 227:\n");
|
neuper@37906
|
510 |
print("a)\n");
|
neuper@37906
|
511 |
val e227a'="((6 * z + 11) / (6 * z + 14)) + ((9 * z ) / (9 * z^^^2 + -49)) + -1 ";
|
neuper@37906
|
512 |
val e227a = the (rewrite_set thy' "rational_erls" false rls' e227a');
|
neuper@37906
|
513 |
print("b)\n");
|
neuper@37906
|
514 |
val e227b'="((16 * a + 37 * b) / (4 * a + 10 * b)) + ((6 * a * b) / (4 * a^^^2 + -25 * b^^^2)) + -4 ";
|
neuper@37906
|
515 |
val e227b = the (rewrite_set thy' "rational_erls" false rls' e227b');
|
neuper@37906
|
516 |
|
neuper@37906
|
517 |
print("\n\nexample 228:\n");
|
neuper@37906
|
518 |
print("a)\n");
|
neuper@37906
|
519 |
val e228a'="((7 * a + 11) / (3 * a^^^2 + -3)) + ((-2 * a + -1) / (a^^^2 + -1 * a)) + ((-1) / (3 * a + 3))";
|
neuper@37906
|
520 |
val e228a = the (rewrite_set thy' "rational_erls" false rls' e228a');
|
neuper@37906
|
521 |
print("b)\n");
|
neuper@37906
|
522 |
val e228b'="((11 * z + 2 * b) / (4 * b * z + -8 * b^^^2)) + ((-8 * z) / (z^^^2 + -4 * b^^^2)) + ((-9 * z + -2 * b) / (4 * b * z + 8 * b^^^2))";
|
neuper@37906
|
523 |
val e228b = the (rewrite_set thy' "rational_erls" false rls' e228b');
|
neuper@37906
|
524 |
|
neuper@37906
|
525 |
|
neuper@37906
|
526 |
print("\n\nexample 229:\n");
|
neuper@37906
|
527 |
print("a)\n");
|
neuper@37906
|
528 |
val e229a'="((5 * x^^^2 + y) / (x + 2 * y)) + ((-8 * x^^^3 + 4 * x^^^2 * y + 3 * x * y) / (x^^^2 + -4 * y^^^2)) + ((3 * x^^^2 + -4 * y) / (x + -2 * y))";
|
neuper@37906
|
529 |
val e229a = the (rewrite_set thy' "rational_erls" false rls' e229a');
|
neuper@37906
|
530 |
print("b)\n");
|
neuper@37906
|
531 |
val e229b'="((7 * x^^^2 + y) / (x + 3 * y)) + ((-24 * x^^^2 * y + 5 * x * y + 21 * y^^^2) / (x^^^2 + -9 * y^^^2)) + ((4 * x^^^2 + -6 * y) / (x + -3 * y))";
|
neuper@37906
|
532 |
val e229b = the (rewrite_set thy' "rational_erls" false rls' e229b');
|
neuper@37906
|
533 |
|
neuper@37906
|
534 |
print("\n\nexample 230:\n");
|
neuper@37906
|
535 |
print("a)\n");
|
neuper@37906
|
536 |
val e230a'="((5 * x^^^2 + y) / (2 * x + y)) + ((-16 * x^^^3 + 2 * x^^^2 * y + 6 * x * y) / (4 * x^^^2 + -1 * y^^^2)) + ((3 * x^^^2 + -4 * y) / (2 * x + -1 * y))";
|
neuper@37906
|
537 |
val e230a = the (rewrite_set thy' "rational_erls" false rls' e230a');
|
neuper@37906
|
538 |
print("b)\n");
|
neuper@37906
|
539 |
val e230b'="((7 * x^^^2 + y) / (3 * x + y)) + ((-3 * x^^^3 + 15 * x * y + -7 * x^^^2 * y + 7 * y^^^2) / (9 * x^^^2 + -1 * y^^^2)) + ((4 * x^^^2 + -6 * y) / (3 * x + -1 * y))";
|
neuper@37906
|
540 |
val e230b = the (rewrite_set thy' "rational_erls" false rls' e230b');
|
neuper@37906
|
541 |
|
neuper@37906
|
542 |
print("\n\nexample 231:\n");
|
neuper@37906
|
543 |
print("a)\n");
|
neuper@37906
|
544 |
val e231a'="((2 * x + 5 * y) / (x)) + ((2 * x^^^3 + -5 * y^^^3 + 3 * x * y^^^2) / (x^^^3 + -2 * x^^^2 * y + x * y^^^2)) + ((-3 * x + -6 * y) / (x + -1 * y))";
|
neuper@37906
|
545 |
val e231a = the (rewrite_set thy' "rational_erls" false rls' e231a');
|
neuper@37906
|
546 |
print("b)\n");
|
neuper@37906
|
547 |
val e231b'="((6 * x + 2 * y) / (x)) + ((6 * x^^^2 * y + -4 * x * y^^^2 + -2 * y^^^3) / (x^^^3 + -2 * x^^^2 * y + x * y^^^2)) + ((-5 * x + -3 * y) / (x + -1 * y))";
|
neuper@37906
|
548 |
val e231b = the (rewrite_set thy' "rational_erls" false rls' e231b');
|
neuper@37906
|
549 |
|
neuper@37906
|
550 |
print("\n\nexample 232:\n");
|
neuper@37906
|
551 |
print("a)\n");
|
neuper@37906
|
552 |
val e232a'="((2 * x + 3 * y) / (x)) + ((4 * x^^^3 + -1 * x * y^^^2 + -3 * y^^^3) / (x^^^3 + -2 * x^^^2 * y + x * y^^^2)) + ((-5 * x + -6 * y) / (x + -1 * y))";
|
neuper@37906
|
553 |
val e232a = the (rewrite_set thy' "rational_erls" false rls' e232a');
|
neuper@37906
|
554 |
print("b)\n");
|
neuper@37906
|
555 |
val e232b'="((5 * x + 2 * y) / (x)) + ((2 * x^^^3 + -3 * x * y^^^2 + 3 * x^^^2 * y + -2 * y^^^3) / (x^^^3 + -2 * x^^^2 * y + x * y^^^2)) + ((-6 * x + -3 * y) / (x + -1 * y))";
|
neuper@37906
|
556 |
val e232b = the (rewrite_set thy' "rational_erls" false rls' e232b');
|
neuper@37906
|
557 |
|
neuper@37906
|
558 |
print("\n\nexample 233:\n");
|
neuper@37906
|
559 |
print("a)\n");
|
neuper@37906
|
560 |
val e233a'="((5 * x + 6 * y) / (x)) + ((5 * x * y^^^2 + -6 * y^^^3 + -2 * x^^^3 + 3 * x^^^2 * y) / (x^^^3 + -2 * x^^^2 * y + x * y^^^2)) + ((-2 * x + -3 * y) / (x + -1 * y))";
|
neuper@37906
|
561 |
val e233a = the (rewrite_set thy' "rational_erls" false rls' e233a');
|
neuper@37906
|
562 |
print("b)\n");
|
neuper@37906
|
563 |
val e233b'="((6 * x + 5 * y) / (x)) + ((4 * x^^^2 * y + 3 * x * y^^^2 + -5 * y^^^3 + -2 * x^^^3) / (x^^^3 + -2 * x^^^2 * y + x * y^^^2)) + ((-3 * x + -2 * y) / (x + -1 * y))";
|
neuper@37906
|
564 |
val e233b = the (rewrite_set thy' "rational_erls" false rls' e233b');
|
neuper@37906
|
565 |
|
neuper@37906
|
566 |
print("\n\nexample 234:\n");
|
neuper@37906
|
567 |
print("a)\n");
|
neuper@37906
|
568 |
val e234a'="((5 * a + b) / (2 * a * b + -2 * b^^^2)) + ((-3 * a + -1 * b) / (2 * a * b + 2 * b^^^2)) + ((-2 * a) / (a^^^2 + -1 * b^^^2))";
|
neuper@37906
|
569 |
val e234a = the (rewrite_set thy' "rational_erls" false rls' e234a');
|
neuper@37906
|
570 |
print("b)\n");
|
neuper@37906
|
571 |
val e234b'="((5 * a + 3 * b) / (6 * a * b + -18 * b^^^2)) + ((-3 * a + -3 * b) / (6 * a * b + 18 * b^^^2)) + ((-2 * a) / (a^^^2 + -9 * b^^^2)) ";
|
neuper@37906
|
572 |
val e234b = the (rewrite_set thy' "rational_erls" false rls' e234b');
|
neuper@37906
|
573 |
|
neuper@37906
|
574 |
print("\n\nexample 235:\n");
|
neuper@37906
|
575 |
print("a)\n");
|
neuper@37906
|
576 |
val e235a'="((10 * x + 3 * y) / (12 * x * y + -18 * y^^^2)) + ((-6 * x + -3 * y) / (12 * x * y + 18 * y^^^2)) + ((-4 * x) / (4 * x^^^2 + -9 * y^^^2))";
|
neuper@37906
|
577 |
val e235a = the (rewrite_set thy' "rational_erls" false rls' e235a');
|
neuper@37906
|
578 |
print("b)\n");
|
neuper@37906
|
579 |
val e235b'="((8 * a + b) / (4 * a * b + -2 * b^^^2)) + ((-4 * a + -1 * b) / (4 * a * b + 2 * b^^^2)) + ((-2 * a) / (4 * a^^^2 + -1 * b^^^2)) ";
|
neuper@37906
|
580 |
val e235b = the (rewrite_set thy' "rational_erls" false rls' e235b');
|
neuper@37906
|
581 |
|
neuper@37906
|
582 |
print("\n\nexample 236:\n");
|
neuper@37906
|
583 |
print("a)\n");
|
neuper@37906
|
584 |
val e236a'="((8 * a + 5 * b) / (20 * a * b + -50 * b^^^2)) + ((-4 * a + -5 * b) / (20 * a * b + 50 * b^^^2)) + ((-2 * a) / (4 * a^^^2 + -25 * b^^^2))";
|
neuper@37906
|
585 |
val e236a = the (rewrite_set thy' "rational_erls" false rls' e236a');
|
neuper@37906
|
586 |
print("b)\n");
|
neuper@37906
|
587 |
val e236b'="((24 * x + y) / (6 * x * y + -2 * y^^^2)) + ((-18 * x + -1 * y) / (6 * x * y + 2 * y^^^2)) + ((-15 * x) / (9 * x^^^2 + -1 * y^^^2)) ";
|
neuper@37906
|
588 |
val e236b = the (rewrite_set thy' "rational_erls" false rls' e236b');
|
neuper@37906
|
589 |
|
neuper@37906
|
590 |
print("\n\nexample heuberger:\n");
|
neuper@37906
|
591 |
val eheu'="(x^^^4 + x * y + x^^^3 * y + y^^^2) / (x + 5 * x^^^2 + y + 5 * x * y + x^^^2 * y^^^3 + x * y^^^4)";
|
neuper@37906
|
592 |
val eheu = the (rewrite_set thy' "rational_erls" false rls' eheu');
|
neuper@37906
|
593 |
|
neuper@37906
|
594 |
print("\n\nexample stiefel:\n");
|
neuper@37906
|
595 |
val est1'="(7) / (-14) + (-2) / (4)";
|
neuper@37906
|
596 |
val est1 = the (rewrite_set thy' "rational_erls" false rls' est1');
|
neuper@37906
|
597 |
if est1 = ("(-1) / 1",[]) then ()
|
neuper@37906
|
598 |
else raise error "new behaviour in rationals.sml: est1'";
|
neuper@37906
|
599 |
-------------------------------------------------------------------------*)
|
neuper@37906
|
600 |
|
neuper@37906
|
601 |
|
neuper@37906
|
602 |
(*
|
neuper@37906
|
603 |
val t = (term_of o the o (parse thy))
|
neuper@37906
|
604 |
"(9 - x ^^^ 2) / (9 - 6 * x + x ^^^ 2)";
|
neuper@37926
|
605 |
val SOME (t',_) = factor_expanded_ thy t;
|
neuper@37906
|
606 |
term2str t';
|
neuper@37906
|
607 |
|
neuper@37906
|
608 |
"((-3) - x) * ((-3) + x) / (((-3) + x) * ((-3) + x))"
|
neuper@37906
|
609 |
"(3 + x) * (3 - x) / ((3 - x) * (3 - x))"
|
neuper@37906
|
610 |
*)
|
neuper@37906
|
611 |
|
neuper@37906
|
612 |
|
neuper@37906
|
613 |
|
neuper@37906
|
614 |
(*WN.28.8.02: tests for the 'reverse-rewrite' functions:
|
neuper@37906
|
615 |
these are defined in Rationals.ML and stored in
|
neuper@37906
|
616 |
the 'reverse-ruleset' cancel*)
|
neuper@37906
|
617 |
|
neuper@37906
|
618 |
(*the term for which reverse rewriting is demonstrated*)
|
neuper@37906
|
619 |
val t = (term_of o the o (parse thy))
|
neuper@37906
|
620 |
"(9 - x ^^^ 2) / (9 + 6 * x + x ^^^ 2)";
|
neuper@37906
|
621 |
val Rrls {scr=Rfuns {init_state=ini,locate_rule=loc,
|
neuper@37906
|
622 |
next_rule=nex,normal_form=nor,...},...} = cancel;
|
neuper@37906
|
623 |
|
neuper@37906
|
624 |
(*normal_form produces the result in ONE step*)
|
neuper@37926
|
625 |
val SOME (t',_) = nor t;
|
neuper@37906
|
626 |
term2str t';
|
neuper@37906
|
627 |
|
neuper@37906
|
628 |
(*initialize the interpreter state used by the 'me'*)
|
neuper@37906
|
629 |
val (t,_,revsets,_) = ini t;
|
neuper@37906
|
630 |
|
neuper@37906
|
631 |
(*find the rule 'r' to apply to term 't'*)
|
neuper@37926
|
632 |
val SOME r = nex revsets t;
|
neuper@37906
|
633 |
(*val r = Thm ("sym_#mult_2_3","6 = 2 * 3") : rule*)
|
neuper@37906
|
634 |
|
neuper@37906
|
635 |
(*check, if the rule 'r' applied by the user to 't' belongs to the ruleset;
|
neuper@37906
|
636 |
if the rule is OK, the term resulting from applying the rule is returned,too;
|
neuper@37906
|
637 |
there might be several rule applications inbetween,
|
neuper@37906
|
638 |
which are listed after the thead in reverse order*)
|
neuper@37906
|
639 |
val (r,(t,asm))::_ = loc revsets t r;
|
neuper@37906
|
640 |
term2str t;
|
neuper@37906
|
641 |
"(9 - x ^^^ 2) / (3 ^^^ 2 + 6 * x + x ^^^ 2)";
|
neuper@37906
|
642 |
|
neuper@37906
|
643 |
(*find the next rule to apply*)
|
neuper@37926
|
644 |
val SOME r = nex revsets t;
|
neuper@37906
|
645 |
(*val r = Thm ("sym_#power_3_2","9 = 3 ^^^ 2") : rule*)
|
neuper@37906
|
646 |
|
neuper@37906
|
647 |
(*check the next rule*)
|
neuper@37906
|
648 |
val (r,(t,asm))::_ = loc revsets t r;
|
neuper@37906
|
649 |
term2str t;
|
neuper@37906
|
650 |
"(3 ^^^ 2 - x ^^^ 2) / (3 ^^^ 2 + 6 * x + x ^^^ 2)";
|
neuper@37906
|
651 |
|
neuper@37906
|
652 |
(*find and check the next rules, rewrite*)
|
neuper@37926
|
653 |
val SOME r = nex revsets t;
|
neuper@37906
|
654 |
val (r,(t,asm))::_ = loc revsets t r;
|
neuper@37906
|
655 |
term2str t;
|
neuper@37906
|
656 |
"(3 ^^^ 2 - x ^^^ 2) / (3 ^^^ 2 + 2 * 3 * x + x ^^^ 2)";
|
neuper@37906
|
657 |
|
neuper@37926
|
658 |
val SOME r = nex revsets t;
|
neuper@37906
|
659 |
val (r,(t,asm))::_ = loc revsets t r;
|
neuper@37906
|
660 |
term2str t;
|
neuper@37906
|
661 |
"(3 - x) * (3 + x) / (3 ^^^ 2 + 2 * 3 * x + x ^^^ 2)";
|
neuper@37906
|
662 |
|
neuper@37926
|
663 |
val SOME r = nex revsets t;
|
neuper@37906
|
664 |
val (r,(t,asm))::_ = loc revsets t r;
|
neuper@37906
|
665 |
term2str t;
|
neuper@37906
|
666 |
"(3 - x) * (3 + x) / ((3 + x) * (3 + x))";
|
neuper@37906
|
667 |
|
neuper@37926
|
668 |
val SOME r = nex revsets t;
|
neuper@37906
|
669 |
val (r,(t,asm))::_ = loc revsets t r;
|
neuper@37906
|
670 |
val ss = term2str t;
|
neuper@37906
|
671 |
if ss = "(3 - x) / (3 + x)" then ()
|
neuper@37906
|
672 |
else raise error "rational.sml: new behav. in rev-set cancel";
|
neuper@37906
|
673 |
terms2str asm;
|
neuper@37906
|
674 |
|
neuper@37906
|
675 |
|
neuper@37906
|
676 |
|
neuper@37906
|
677 |
(*WN.11.9.02: the 'reverse-ruleset' cancel*)
|
neuper@37906
|
678 |
|
neuper@37906
|
679 |
(*the term for which reverse rewriting is demonstrated*)
|
neuper@37906
|
680 |
val t = (term_of o the o (parse thy))
|
neuper@37906
|
681 |
"(9 + (-1)*x^^^2) / (9 + ((-6)*x + x^^^2))";
|
neuper@37906
|
682 |
val Rrls {scr=Rfuns {init_state=ini,locate_rule=loc,
|
neuper@37906
|
683 |
next_rule=nex,normal_form=nor,...},...} = cancel;
|
neuper@37906
|
684 |
(*normal_form produces the result in ONE step*)
|
neuper@37926
|
685 |
val SOME (t',_) = nor t;
|
neuper@37906
|
686 |
term2str t';
|
neuper@37906
|
687 |
(*initialize the interpreter state used by the 'me'*)
|
neuper@37906
|
688 |
val (t,_,revsets,_) = ini t;
|
neuper@37906
|
689 |
(*
|
neuper@37906
|
690 |
val [rs] = revsets;
|
neuper@37906
|
691 |
filter_out (eq_Thms ["sym_real_add_zero_left",
|
neuper@37906
|
692 |
"sym_real_mult_0",
|
neuper@37906
|
693 |
"sym_real_mult_1"]) rs;
|
neuper@37906
|
694 |
|
neuper@37906
|
695 |
10.10.02: dieser Fall terminiert nicht (make_poly enth"alt zu viele rules)
|
neuper@37926
|
696 |
val SOME r = nex revsets t;
|
neuper@37906
|
697 |
val (r,(t,asm))::_ = loc revsets t r;
|
neuper@37906
|
698 |
term2str t;
|
neuper@37906
|
699 |
|
neuper@37926
|
700 |
val SOME r = nex revsets t;
|
neuper@37906
|
701 |
val (r,(t,asm))::_ = loc revsets t r;
|
neuper@37906
|
702 |
term2str t;
|
neuper@37906
|
703 |
|
neuper@37906
|
704 |
------ revset ----------------------------------------------------
|
neuper@37906
|
705 |
/// [Thm ("sym_real_add_zero_left","?z = 0 + ?z"),
|
neuper@37906
|
706 |
/// Thm ("sym_real_mult_0","0 = 0 * ?z"),
|
neuper@37906
|
707 |
! Thm ("sym_#mult_2_(-3)","(-6) * x = 2 * ((-3) * x)"),
|
neuper@37906
|
708 |
! Thm ("sym_#add_(-3)_3","0 = (-3) + 3"),
|
neuper@37906
|
709 |
|
neuper@37906
|
710 |
? Thm ("sym_real_num_collect_assoc",
|
neuper@37906
|
711 |
"[| ?l is_const; ?m is_const |]
|
neuper@37906
|
712 |
==> (?l + ?m) * ?n + ?k = ?l * ?n + (?m * ?n + ?k)"),
|
neuper@37906
|
713 |
OK Thm ("sym_real_mult_2_assoc","2 * ?z1.0 + ?k = ?z1.0 + (?z1.0 + ?k)"),
|
neuper@37906
|
714 |
OK Thm ("sym_real_add_left_commute","?y + (?x + ?z) = ?x + (?y + ?z)"),
|
neuper@37906
|
715 |
/// Thm ("sym_real_mult_1","?z = 1 * ?z"),
|
neuper@37906
|
716 |
! Thm ("sym_#power_3_2","9 = 3 ^^^ 2"),
|
neuper@37906
|
717 |
! Thm ("sym_#mult_-1_-1","1 * x ^^^ 2 = -1 * (-1 * x ^^^ 2)"),
|
neuper@37906
|
718 |
! Thm ("sym_#mult_-1_3","(-3) * x = -1 * (3 * x)"),
|
neuper@37906
|
719 |
OK Thm ("realpow_twoI","?r1 ^^^ 2 = ?r1 * ?r1" [.]),
|
neuper@37906
|
720 |
OK Thm ("sym_real_add_assoc",
|
neuper@37906
|
721 |
"?z1.0 + (?z2.0 + ?z3.0) = ?z1.0 + ?z2.0 + ?z3.0"),
|
neuper@37906
|
722 |
OK Thm
|
neuper@37906
|
723 |
("sym_real_mult_assoc","?z1.0 * (?z2.0 * ?z3.0) = ?z1.0 * ?z2.0 * ?z3.0"),
|
neuper@37906
|
724 |
OK Thm ("sym_real_mult_left_commute",
|
neuper@37906
|
725 |
"?z2.0 * (?z1.0 * ?z3.0) = ?z1.0 * (?z2.0 * ?z3.0)"),
|
neuper@37906
|
726 |
OK Thm ("sym_real_mult_commute","?w * ?z = ?z * ?w"),
|
neuper@37906
|
727 |
? Thm ("sym_real_add_mult_distrib2",
|
neuper@37906
|
728 |
"?w * ?z1.0 + ?w * ?z2.0 = ?w * (?z1.0 + ?z2.0)"),
|
neuper@37906
|
729 |
? Thm ("sym_real_add_mult_distrib",
|
neuper@37906
|
730 |
"?z1.0 * ?w + ?z2.0 * ?w = (?z1.0 + ?z2.0) * ?w"),
|
neuper@37906
|
731 |
OK Thm ("real_mult_div_cancel2","?k ~= 0 ==> ?m * ?k / (?n * ?k) = ?m / ?n")]
|
neuper@37906
|
732 |
-------- revset ----------------------------------------------------
|
neuper@37906
|
733 |
|
neuper@37906
|
734 |
val t = (term_of o the o (parse thy)) "(-6) * x";
|
neuper@37906
|
735 |
val t = (term_of o the o (parse thy))
|
neuper@37906
|
736 |
"(9 + (-1)*x^^^2) / (9 + ((-6)*x + x^^^2))";
|
neuper@37906
|
737 |
val thm = (mk_thm thy "(-6) * x = 2 * ((-3) * x)")
|
neuper@37906
|
738 |
handle e => print_exn e;
|
neuper@37926
|
739 |
val SOME (t',_) = rewrite_ thy e_rew_ord e_rls false thm t;
|
neuper@37906
|
740 |
term2str t';
|
neuper@37906
|
741 |
----------------------------------------------------------------------*)
|
neuper@37906
|
742 |
|
neuper@37906
|
743 |
|
neuper@37906
|
744 |
|
neuper@37906
|
745 |
(* SK: Testbeispiele --- WN kopiert Rational.ML -> rational.sml-----
|
neuper@37906
|
746 |
|
neuper@37906
|
747 |
val t1 = (term_of o the o (parse thy)) "((3 * x^^^2 + 6 *x + 3) / (2*x + 2))";
|
neuper@37926
|
748 |
val SOME (t1',rest)= cancel_ thy t1;
|
neuper@37926
|
749 |
val SOME (t1'',_)= factor_out_gcd_ thy t1;
|
neuper@37906
|
750 |
print(term2str t1'^" + Einschr\"ankung: "^term2str (hd(rest)));
|
neuper@37906
|
751 |
term2str t1'';
|
neuper@37906
|
752 |
|
neuper@37906
|
753 |
val t1 = (term_of o the o (parse thy)) "((-3 * x^^^2 + 6 *x - 3) / (2*x - 2))";
|
neuper@37926
|
754 |
val SOME (t1',_)= cancel_ thy t1;
|
neuper@37926
|
755 |
val SOME (t1'',_)= factor_expanded_ thy t1;
|
neuper@37906
|
756 |
term2str t1';
|
neuper@37906
|
757 |
term2str t1'';
|
neuper@37906
|
758 |
|
neuper@37906
|
759 |
val t2 = (term_of o the o (parse thy)) "((x+ (-1)) / (x + 1)) + ((x + 1) / (x + (-1)))";
|
neuper@37926
|
760 |
val SOME (t2',_) = add_fractions_ thy t2;
|
neuper@37926
|
761 |
val SOME (t2'',_) = common_nominators_ thy t2;
|
neuper@37906
|
762 |
term2str t2';
|
neuper@37906
|
763 |
term2str t2'';
|
neuper@37906
|
764 |
|
neuper@37906
|
765 |
val t2 = (term_of o the o (parse thy)) "((x - 1) / (x + 1)) + ((x + 1) / (x - 1))";
|
neuper@37926
|
766 |
val SOME (t2',_) = add_expanded_frac_ thy t2;
|
neuper@37926
|
767 |
val SOME (t2'',_) = common_expanded_nom_ thy t2;
|
neuper@37906
|
768 |
term2str t2';
|
neuper@37906
|
769 |
term2str t2'';
|
neuper@37906
|
770 |
|
neuper@37906
|
771 |
|
neuper@37906
|
772 |
val t3 = (term_of o the o (parse thy)) "((1) / (2*x + 2)) + ((1) / (2*x + (-2))) + ((1) / ( x^^^2 + (-1)))+((1) / (x^^^2 + (-2)*x + 1))";
|
neuper@37926
|
773 |
val SOME (t3',_) = common_nominators_ thy t3;
|
neuper@37926
|
774 |
val SOME (t3'',_) = add_fractions_ thy t3;
|
neuper@37906
|
775 |
(term2str t3');
|
neuper@37906
|
776 |
(term2str t3'');
|
neuper@37906
|
777 |
|
neuper@37906
|
778 |
val t3 = (term_of o the o (parse thy)) "((1) / (2*x + 2)) + ((1) / (2*x - 2)) + ((1) / ( x^^^2 - 1))+((1) / (x^^^2 - 2 * x + 1))";
|
neuper@37926
|
779 |
val SOME (t3',_) = common_expanded_nom_ thy t3;
|
neuper@37926
|
780 |
val SOME (t3'',_) = add_expanded_frac_ thy t3;
|
neuper@37906
|
781 |
(term2str t3');
|
neuper@37906
|
782 |
(term2str t3'');
|
neuper@37906
|
783 |
-------------------------------*)
|
neuper@37906
|
784 |
|
neuper@37906
|
785 |
(*
|
neuper@37926
|
786 |
val SOME(t4,t5) = norm_rational_ thy t3;
|
neuper@37906
|
787 |
term2str t4;
|
neuper@37906
|
788 |
term2str (hd(t5));*)
|
neuper@37906
|
789 |
|
neuper@37906
|
790 |
(*val test1 = (term_of o the o (parse thy)) "1 - x^^^2 - 5 * x^^^5";
|
neuper@37906
|
791 |
val test2 = (term_of o the o (parse thy)) "1 + (-1) * x ^^^ 2 + (-5) * x ^^^ 5";
|
neuper@37906
|
792 |
val test2 = (term_of o the o (parse thy)) "1 - x";
|
neuper@37906
|
793 |
val test2 = (term_of o the o (parse thy)) "1 + (-1) * x";
|
neuper@37906
|
794 |
term2str(expanded2term(test1));
|
neuper@37906
|
795 |
term2str(term2expanded(test2)); *)
|
neuper@37906
|
796 |
|
neuper@37906
|
797 |
|
neuper@37906
|
798 |
|
neuper@37906
|
799 |
(* WN kopiert 16.10.02 Rational.ML -> rational.sml-----vvv---*)
|
neuper@37906
|
800 |
|
neuper@37906
|
801 |
val t=(term_of o the o (parse thy)) "(9 - x^^^2)/(9 - 6*x + x^^^2)";
|
neuper@37926
|
802 |
val SOME (t',_) = factout_ thy t;
|
neuper@37926
|
803 |
val SOME (t'',_) = cancel_ thy t;
|
neuper@37906
|
804 |
term2str t';
|
neuper@37906
|
805 |
term2str t'';
|
neuper@37906
|
806 |
"(3 + x) * (3 - x) / ((3 - x) * (3 - x))";
|
neuper@37906
|
807 |
"(3 + x) / (3 - x)";
|
neuper@37906
|
808 |
|
neuper@37906
|
809 |
val t=(term_of o the o(parse thy))
|
neuper@37906
|
810 |
"(9 - x^^^2) / (9 - 6*x + x^^^2) + 1 / (3 - x)";
|
neuper@37926
|
811 |
val SOME (t',_) = common_nominator_ thy t;
|
neuper@37926
|
812 |
val SOME (t'',_) = add_fraction_ thy t;
|
neuper@37906
|
813 |
term2str t';
|
neuper@37906
|
814 |
term2str t'';
|
neuper@37906
|
815 |
"(9 - x ^^^ 2) / ((3 - x) * (3 - x)) + 1 * (3 - x) / ((3 - x) * (3 - x))";
|
neuper@37906
|
816 |
"(4 + x) / (3 - x)";
|
neuper@37906
|
817 |
|
neuper@37906
|
818 |
(*WN.16.10.02 hinzugef"ugt -----vv---*)
|
neuper@37906
|
819 |
val t=(term_of o the o(parse thy))
|
neuper@37906
|
820 |
"(9 - x^^^2) / (9 - 6*x + x^^^2) + 1";
|
neuper@37926
|
821 |
val SOME (t',_) = common_nominator_ thy t;
|
neuper@37926
|
822 |
val SOME (t'',_) = add_fraction_ thy t;
|
neuper@37906
|
823 |
term2str t';
|
neuper@37906
|
824 |
term2str t'';
|
neuper@37906
|
825 |
"(9 - x ^^^ 2) / (9 - 6 * x + x ^^^ 2) +\
|
neuper@37906
|
826 |
\1 * (9 - 6 * x + x ^^^ 2) / (9 - 6 * x + x ^^^ 2)";
|
neuper@37906
|
827 |
"6 / (3 - x)";
|
neuper@37906
|
828 |
|
neuper@37906
|
829 |
val t=(term_of o the o(parse thy))
|
neuper@37906
|
830 |
"1 + (9 - x^^^2) / (9 - 6*x + x^^^2)";
|
neuper@37926
|
831 |
val SOME (t',_) = common_nominator_ thy t;
|
neuper@37926
|
832 |
val SOME (t'',_) = add_fraction_ thy t;
|
neuper@37906
|
833 |
term2str t';
|
neuper@37906
|
834 |
term2str t'';
|
neuper@37906
|
835 |
"1 * (9 - 6 * x + x ^^^ 2) / (9 - 6 * x + x ^^^ 2) +\
|
neuper@37906
|
836 |
\(9 - x ^^^ 2) / (9 - 6 * x + x ^^^ 2)";
|
neuper@37906
|
837 |
"6 / (3 - x)";
|
neuper@37906
|
838 |
(*WN.16.10.02 hinzugef"ugt -----^^---*)
|
neuper@37906
|
839 |
|
neuper@37906
|
840 |
val t=(term_of o the o (parse thy))
|
neuper@37906
|
841 |
"(y^^^2 - x^^^2)/(y^^^2 - 2*y*x + x^^^2)";
|
neuper@37926
|
842 |
val SOME (t',_) = factout_ thy t;
|
neuper@37926
|
843 |
val SOME (t'',_) = cancel_ thy t;
|
neuper@37906
|
844 |
term2str t';
|
neuper@37906
|
845 |
term2str t'';
|
neuper@37906
|
846 |
"(y + x) * (y - x) / ((y - x) * (y - x))";
|
neuper@37906
|
847 |
"(y + x) / (y - x)";
|
neuper@37906
|
848 |
|
neuper@37906
|
849 |
val t=(term_of o the o (parse thy))
|
neuper@37906
|
850 |
"(y^^^2 - x^^^2)/(y^^^2 - 2*y*x + x^^^2) + 1 / (y - x)";
|
neuper@37926
|
851 |
val SOME (t',_) = common_nominator_ thy t;
|
neuper@37926
|
852 |
val SOME (t'',_) = add_fraction_ thy t;
|
neuper@37906
|
853 |
term2str t';
|
neuper@37906
|
854 |
term2str t'';
|
neuper@37906
|
855 |
"((-1) * x ^^^ 2 + y ^^^ 2) / (((-1) * x + y) * ((-1) * x + y)) +\
|
neuper@37906
|
856 |
\1 * ((-1) * x + y) / (((-1) * x + y) * ((-1) * x + y))";
|
neuper@37906
|
857 |
"((-1) - x - y) / (x - y)";
|
neuper@37906
|
858 |
(*WN.16.10.02 ^^^^^^^ Reihenfolge aus Angabe umgekehrt ?!*)
|
neuper@37906
|
859 |
|
neuper@37906
|
860 |
val t=(term_of o the o (parse thy))
|
neuper@37906
|
861 |
"(x^^^2 - y^^^2)/(x^^^2 - 2*x*y + y^^^2) + 1 / (x - y)";
|
neuper@37926
|
862 |
val SOME (t',_) = common_nominator_ thy t;
|
neuper@37926
|
863 |
val SOME (t'',_) = add_fraction_ thy t;
|
neuper@37906
|
864 |
term2str t';
|
neuper@37906
|
865 |
term2str t'';
|
neuper@37906
|
866 |
"((-1) * y ^^^ 2 + x ^^^ 2) / (((-1) * y + x) * ((-1) * y + x)) +\
|
neuper@37906
|
867 |
\1 * ((-1) * y + x) / (((-1) * y + x) * ((-1) * y + x))";
|
neuper@37906
|
868 |
"((-1) - y - x) / (y - x)";
|
neuper@37906
|
869 |
(*WN.16.10.02 ^^^^^^^ lexicographische Ordnung ?!*)
|
neuper@37906
|
870 |
|
neuper@37906
|
871 |
val t=(term_of o the o (parse thy))
|
neuper@37906
|
872 |
"(y^^^2 - x^^^2)/(y^^^2 - 2*y*x + x^^^2)";
|
neuper@37926
|
873 |
val SOME (t',_) = norm_expanded_rat_ thy t;
|
neuper@37906
|
874 |
term2str t';
|
neuper@37906
|
875 |
"(y + x) / (y - x)";
|
neuper@37926
|
876 |
(*val SOME (t'',_) = norm_rational_ thy t;
|
neuper@37906
|
877 |
term2str t'';
|
neuper@37906
|
878 |
*** RATIONALS_TERM2POLY_EXCEPTION: Invalid Polynomial
|
neuper@37906
|
879 |
WN.16.10.02 ?!*)
|
neuper@37906
|
880 |
|
neuper@37906
|
881 |
val t=(term_of o the o (parse thy))
|
neuper@37906
|
882 |
"(9 - x^^^2)/(9 - 6*x + x^^^2) + (1)/(3 + x)";
|
neuper@37926
|
883 |
val SOME (t',_) = norm_expanded_rat_ thy t;
|
neuper@37906
|
884 |
term2str t';
|
neuper@37906
|
885 |
"(12 + 5 * x + x ^^^ 2) / (9 - x ^^^ 2)";
|
neuper@37926
|
886 |
(*val SOME (t'',_) = norm_rational_ thy t;
|
neuper@37906
|
887 |
term2str t'';
|
neuper@37906
|
888 |
*** RATIONALS_TERM2POLY_EXCEPTION: Invalid Polynomial
|
neuper@37906
|
889 |
WN.16.10.02 ?!*)
|
neuper@37906
|
890 |
|
neuper@37906
|
891 |
val t=(term_of o the o (parse thy))
|
neuper@37906
|
892 |
"(9 + (-1)* x^^^2)/(9 + (-1)* 6*x + x^^^2) + (1)/(3 + x)";
|
neuper@37926
|
893 |
val SOME (t',_) = norm_expanded_rat_ thy t;
|
neuper@37926
|
894 |
val SOME (t'',_) = norm_rational_ thy t;
|
neuper@37906
|
895 |
term2str t';
|
neuper@37906
|
896 |
term2str t'';
|
neuper@37906
|
897 |
"(12 + 5 * x + x ^^^ 2) / (9 - x ^^^ 2)";
|
neuper@37906
|
898 |
"(12 + 5 * x + x ^^^ 2) / (9 + (-1) * x ^^^ 2)";
|
neuper@37906
|
899 |
(* WN kopiert 16.10.02 Rational.ML -> rational.sml-----^^^---*)
|
neuper@37906
|
900 |
|
neuper@37906
|
901 |
|
neuper@37906
|
902 |
|