agriesma@322
|
1 |
(* (c) by Richard Lang
|
agriesma@322
|
2 |
theory collecting all knowledge
|
agriesma@322
|
3 |
(predicates 'is_rootEq_in', 'is_sqrt_in', 'is_ratEq_in')
|
agriesma@322
|
4 |
for PolynomialEquations.
|
agriesma@322
|
5 |
alternative dependencies see Isac.thy
|
agriesma@322
|
6 |
created by: rlang
|
agriesma@322
|
7 |
date: 02.07
|
agriesma@322
|
8 |
changed by: rlang
|
agriesma@322
|
9 |
last change by: rlang
|
agriesma@322
|
10 |
date: 02.11.26
|
agriesma@322
|
11 |
(c) Richard Lang, 2003
|
agriesma@322
|
12 |
*)
|
agriesma@322
|
13 |
|
agriesma@322
|
14 |
(* remove_thy"PolyEq";
|
agriesma@322
|
15 |
use_thy"knowledge/Isac";
|
agriesma@322
|
16 |
use_thy"knowledge/PolyEq";
|
agriesma@322
|
17 |
|
agriesma@322
|
18 |
remove_thy"PolyEq";
|
agriesma@322
|
19 |
use_thy"Isac";
|
agriesma@322
|
20 |
|
agriesma@322
|
21 |
use"ROOT.ML";
|
agriesma@322
|
22 |
cd"knowledge";
|
agriesma@322
|
23 |
*)
|
agriesma@322
|
24 |
|
agriesma@322
|
25 |
PolyEq = LinEq + RootRatEq +
|
agriesma@322
|
26 |
(*-------------------- consts ------------------------------------------------*)
|
agriesma@322
|
27 |
consts
|
agriesma@322
|
28 |
|
agriesma@322
|
29 |
(*---------scripts--------------------------*)
|
agriesma@322
|
30 |
Complete'_square
|
agriesma@322
|
31 |
:: "[bool,real, \
|
agriesma@322
|
32 |
\ bool list] => bool list"
|
agriesma@322
|
33 |
("((Script Complete'_square (_ _ =))// \
|
agriesma@322
|
34 |
\ (_))" 9)
|
agriesma@322
|
35 |
(*----- poly ----- *)
|
agriesma@322
|
36 |
Normalize'_poly
|
agriesma@322
|
37 |
:: "[bool,real, \
|
agriesma@322
|
38 |
\ bool list] => bool list"
|
agriesma@322
|
39 |
("((Script Normalize'_poly (_ _=))// \
|
agriesma@322
|
40 |
\ (_))" 9)
|
agriesma@322
|
41 |
Solve'_d0'_poly'_equation
|
agriesma@322
|
42 |
:: "[bool,real, \
|
agriesma@322
|
43 |
\ bool list] => bool list"
|
agriesma@322
|
44 |
("((Script Solve'_d0'_poly'_equation (_ _ =))// \
|
agriesma@322
|
45 |
\ (_))" 9)
|
agriesma@322
|
46 |
Solve'_d1'_poly'_equation
|
agriesma@322
|
47 |
:: "[bool,real, \
|
agriesma@322
|
48 |
\ bool list] => bool list"
|
agriesma@322
|
49 |
("((Script Solve'_d1'_poly'_equation (_ _ =))// \
|
agriesma@322
|
50 |
\ (_))" 9)
|
agriesma@322
|
51 |
Solve'_d2'_poly'_equation
|
agriesma@322
|
52 |
:: "[bool,real, \
|
agriesma@322
|
53 |
\ bool list] => bool list"
|
agriesma@322
|
54 |
("((Script Solve'_d2'_poly'_equation (_ _ =))// \
|
agriesma@322
|
55 |
\ (_))" 9)
|
agriesma@322
|
56 |
Solve'_d2'_poly'_sqonly'_equation
|
agriesma@322
|
57 |
:: "[bool,real, \
|
agriesma@322
|
58 |
\ bool list] => bool list"
|
agriesma@322
|
59 |
("((Script Solve'_d2'_poly'_sqonly'_equation (_ _ =))// \
|
agriesma@322
|
60 |
\ (_))" 9)
|
agriesma@322
|
61 |
Solve'_d2'_poly'_bdvonly'_equation
|
agriesma@322
|
62 |
:: "[bool,real, \
|
agriesma@322
|
63 |
\ bool list] => bool list"
|
agriesma@322
|
64 |
("((Script Solve'_d2'_poly'_bdvonly'_equation (_ _ =))// \
|
agriesma@322
|
65 |
\ (_))" 9)
|
agriesma@322
|
66 |
Solve'_d2'_poly'_pq'_equation
|
agriesma@322
|
67 |
:: "[bool,real, \
|
agriesma@322
|
68 |
\ bool list] => bool list"
|
agriesma@322
|
69 |
("((Script Solve'_d2'_poly'_pq'_equation (_ _ =))// \
|
agriesma@322
|
70 |
\ (_))" 9)
|
agriesma@322
|
71 |
Solve'_d2'_poly'_abc'_equation
|
agriesma@322
|
72 |
:: "[bool,real, \
|
agriesma@322
|
73 |
\ bool list] => bool list"
|
agriesma@322
|
74 |
("((Script Solve'_d2'_poly'_abc'_equation (_ _ =))// \
|
agriesma@322
|
75 |
\ (_))" 9)
|
agriesma@322
|
76 |
Solve'_d3'_poly'_equation
|
agriesma@322
|
77 |
:: "[bool,real, \
|
agriesma@322
|
78 |
\ bool list] => bool list"
|
agriesma@322
|
79 |
("((Script Solve'_d3'_poly'_equation (_ _ =))// \
|
agriesma@322
|
80 |
\ (_))" 9)
|
agriesma@322
|
81 |
Solve'_d4'_poly'_equation
|
agriesma@322
|
82 |
:: "[bool,real, \
|
agriesma@322
|
83 |
\ bool list] => bool list"
|
agriesma@322
|
84 |
("((Script Solve'_d4'_poly'_equation (_ _ =))// \
|
agriesma@322
|
85 |
\ (_))" 9)
|
agriesma@322
|
86 |
|
agriesma@322
|
87 |
(*-------------------- rules -------------------------------------------------*)
|
agriesma@322
|
88 |
rules
|
agriesma@322
|
89 |
|
agriesma@322
|
90 |
cancel_leading_coeff1 "Not (c =!= 0) ==> (a + b*bdv + c*bdv^^^2 = 0) = \
|
agriesma@322
|
91 |
\ (a/c + b/c*bdv + bdv^^^2 = 0)"
|
agriesma@322
|
92 |
cancel_leading_coeff2 "Not (c =!= 0) ==> (a - b*bdv + c*bdv^^^2 = 0) = \
|
agriesma@322
|
93 |
\ (a/c - b/c*bdv + bdv^^^2 = 0)"
|
agriesma@322
|
94 |
cancel_leading_coeff3 "Not (c =!= 0) ==> (a + b*bdv - c*bdv^^^2 = 0) = \
|
agriesma@322
|
95 |
\ (a/c + b/c*bdv - bdv^^^2 = 0)"
|
agriesma@322
|
96 |
|
agriesma@322
|
97 |
cancel_leading_coeff4 "Not (c =!= 0) ==> (a + bdv + c*bdv^^^2 = 0) = \
|
agriesma@322
|
98 |
\ (a/c + 1/c*bdv + bdv^^^2 = 0)"
|
agriesma@322
|
99 |
cancel_leading_coeff5 "Not (c =!= 0) ==> (a - bdv + c*bdv^^^2 = 0) = \
|
agriesma@322
|
100 |
\ (a/c - 1/c*bdv + bdv^^^2 = 0)"
|
agriesma@322
|
101 |
cancel_leading_coeff6 "Not (c =!= 0) ==> (a + bdv - c*bdv^^^2 = 0) = \
|
agriesma@322
|
102 |
\ (a/c + 1/c*bdv - bdv^^^2 = 0)"
|
agriesma@322
|
103 |
|
agriesma@322
|
104 |
cancel_leading_coeff7 "Not (c =!= 0) ==> ( b*bdv + c*bdv^^^2 = 0) = \
|
agriesma@322
|
105 |
\ ( b/c*bdv + bdv^^^2 = 0)"
|
agriesma@322
|
106 |
cancel_leading_coeff8 "Not (c =!= 0) ==> ( b*bdv - c*bdv^^^2 = 0) = \
|
agriesma@322
|
107 |
\ ( b/c*bdv - bdv^^^2 = 0)"
|
agriesma@322
|
108 |
|
agriesma@322
|
109 |
cancel_leading_coeff9 "Not (c =!= 0) ==> ( bdv + c*bdv^^^2 = 0) = \
|
agriesma@322
|
110 |
\ ( 1/c*bdv + bdv^^^2 = 0)"
|
agriesma@322
|
111 |
cancel_leading_coeff10"Not (c =!= 0) ==> ( bdv - c*bdv^^^2 = 0) = \
|
agriesma@322
|
112 |
\ ( 1/c*bdv - bdv^^^2 = 0)"
|
agriesma@322
|
113 |
|
agriesma@322
|
114 |
cancel_leading_coeff11"Not (c =!= 0) ==> (a + b*bdv^^^2 = 0) = \
|
agriesma@322
|
115 |
\ (a/b + bdv^^^2 = 0)"
|
agriesma@322
|
116 |
cancel_leading_coeff12"Not (c =!= 0) ==> (a - b*bdv^^^2 = 0) = \
|
agriesma@322
|
117 |
\ (a/b - bdv^^^2 = 0)"
|
agriesma@322
|
118 |
cancel_leading_coeff13"Not (c =!= 0) ==> ( b*bdv^^^2 = 0) = \
|
agriesma@322
|
119 |
\ ( bdv^^^2 = 0/b)"
|
agriesma@322
|
120 |
|
agriesma@322
|
121 |
complete_square1 "(q + p*bdv + bdv^^^2 = 0) = \
|
agriesma@322
|
122 |
\(q + (p/2 + bdv)^^^2 = (p/2)^^^2)"
|
agriesma@322
|
123 |
complete_square2 "( p*bdv + bdv^^^2 = 0) = \
|
agriesma@322
|
124 |
\( (p/2 + bdv)^^^2 = (p/2)^^^2)"
|
agriesma@322
|
125 |
complete_square3 "( bdv + bdv^^^2 = 0) = \
|
agriesma@322
|
126 |
\( (1/2 + bdv)^^^2 = (1/2)^^^2)"
|
agriesma@322
|
127 |
|
agriesma@322
|
128 |
complete_square4 "(q - p*bdv + bdv^^^2 = 0) = \
|
agriesma@322
|
129 |
\(q + (p/2 - bdv)^^^2 = (p/2)^^^2)"
|
agriesma@322
|
130 |
complete_square5 "(q + p*bdv - bdv^^^2 = 0) = \
|
agriesma@322
|
131 |
\(q + (p/2 - bdv)^^^2 = (p/2)^^^2)"
|
agriesma@322
|
132 |
|
agriesma@322
|
133 |
square_explicit1 "(a + b^^^2 = c) = ( b^^^2 = c - a)"
|
agriesma@322
|
134 |
square_explicit2 "(a - b^^^2 = c) = (-(b^^^2) = c - a)"
|
agriesma@322
|
135 |
|
agriesma@322
|
136 |
bdv_explicit1 "(a + bdv = b) = (bdv = - a + b)"
|
agriesma@322
|
137 |
bdv_explicit2 "(a - bdv = b) = ((-1)*bdv = - a + b)"
|
agriesma@322
|
138 |
bdv_explicit3 "((-1)*bdv = b) = (bdv = (-1)*b)"
|
agriesma@322
|
139 |
|
agriesma@322
|
140 |
plus_leq "(0 <= a + b) = ((-1)*b <= a)"(*Isa?*)
|
agriesma@322
|
141 |
minus_leq "(0 <= a - b) = ( b <= a)"(*Isa?*)
|
agriesma@322
|
142 |
|
agriesma@322
|
143 |
(*-- normalize --*)
|
agriesma@322
|
144 |
all_left
|
agriesma@322
|
145 |
"[|Not(b=!=0)|] ==> (a = b) = (a - b = 0)"
|
agriesma@322
|
146 |
makex1_x
|
agriesma@322
|
147 |
"a^^^1 = a"
|
agriesma@322
|
148 |
real_assoc_1
|
agriesma@322
|
149 |
"a+(b+c) = a+b+c"
|
agriesma@322
|
150 |
real_assoc_2
|
agriesma@322
|
151 |
"a*(b*c) = a*b*c"
|
agriesma@322
|
152 |
|
agriesma@322
|
153 |
(* ---- degree 0 ----*)
|
agriesma@322
|
154 |
d0_true
|
agriesma@322
|
155 |
"(0=0) = True"
|
agriesma@322
|
156 |
d0_false
|
agriesma@322
|
157 |
"[|Not(bdv occurs_in a);Not(a=!=0)|] ==> (a=0) = False"
|
agriesma@322
|
158 |
(* ---- degree 1 ----*)
|
agriesma@322
|
159 |
d1_isolate_add1
|
agriesma@322
|
160 |
"[|Not(bdv occurs_in a)|] ==> (a + b*bdv = 0) = (b*bdv = -a)"
|
agriesma@322
|
161 |
d1_isolate_add2
|
agriesma@322
|
162 |
"[|Not(bdv occurs_in a)|] ==> (a + bdv = 0) = ( bdv = -a)"
|
agriesma@322
|
163 |
d1_isolate_div
|
agriesma@322
|
164 |
"[|Not(b=0);Not(bdv occurs_in c)|] ==> (b*bdv = c) = (bdv = c/b)"
|
agriesma@322
|
165 |
(* ---- degree 2 ----*)
|
agriesma@322
|
166 |
d2_isolate_add1
|
agriesma@322
|
167 |
"[|Not(bdv occurs_in a)|] ==> (a + b*bdv^^^2=0) = (b*bdv^^^2= -a)"
|
agriesma@322
|
168 |
d2_isolate_add2
|
agriesma@322
|
169 |
"[|Not(bdv occurs_in a)|] ==> (a + bdv^^^2=0) = ( bdv^^^2= -a)"
|
agriesma@322
|
170 |
d2_isolate_div
|
agriesma@322
|
171 |
"[|Not(b=0);Not(bdv occurs_in c)|] ==> (b*bdv^^^2=c) = (bdv^^^2=c/b)"
|
agriesma@322
|
172 |
d2_prescind1
|
agriesma@322
|
173 |
"(a*bdv + b*bdv^^^2 = 0) = (bdv*(a +b*bdv)=0)"
|
agriesma@322
|
174 |
d2_prescind2
|
agriesma@322
|
175 |
"(a*bdv + bdv^^^2 = 0) = (bdv*(a + bdv)=0)"
|
agriesma@322
|
176 |
d2_prescind3
|
agriesma@322
|
177 |
"( bdv + b*bdv^^^2 = 0) = (bdv*(1+b*bdv)=0)"
|
agriesma@322
|
178 |
d2_prescind4
|
agriesma@322
|
179 |
"( bdv + bdv^^^2 = 0) = (bdv*(1+ bdv)=0)"
|
agriesma@322
|
180 |
(* eliminate degree 2 *)
|
agriesma@322
|
181 |
d2_sqrt_equation1
|
agriesma@322
|
182 |
"[|(0<=c)|] ==> (bdv^^^2=c) = ((bdv=sqrt c) | (bdv=-sqrt c ))"
|
agriesma@322
|
183 |
d2_sqrt_equation2
|
agriesma@322
|
184 |
"(bdv^^^2=0) = (bdv=0)"
|
agriesma@322
|
185 |
d2_sqrt_equation3
|
agriesma@322
|
186 |
"(b*bdv^^^2=0) = (bdv=0)"
|
agriesma@322
|
187 |
d2_reduce_equation1
|
agriesma@322
|
188 |
"(bdv*(a +b*bdv)=0) = ((bdv=0)|(a+b*bdv=0))"
|
agriesma@322
|
189 |
d2_reduce_equation2
|
agriesma@322
|
190 |
"(bdv*(a + bdv)=0) = ((bdv=0)|(a+ bdv=0))"
|
agriesma@322
|
191 |
d2_pqformula1
|
agriesma@322
|
192 |
"[|0<=p^^^2 - 4*q|] ==> (q+p*bdv+ bdv^^^2=0) =
|
agriesma@322
|
193 |
((bdv= -(p/2) + sqrt(p^^^2 - 4*q)/2)
|
agriesma@322
|
194 |
| (bdv= -(p/2) - sqrt(p^^^2 - 4*q)/2))"
|
agriesma@322
|
195 |
d2_pqformula2
|
agriesma@322
|
196 |
"[|0<=p^^^2 - 4*q|] ==> (q+p*bdv+1*bdv^^^2=0) =
|
agriesma@322
|
197 |
((bdv= -(p/2) + sqrt(p^^^2 - 4*q)/2)
|
agriesma@322
|
198 |
| (bdv= -(p/2) - sqrt(p^^^2 - 4*q)/2))"
|
agriesma@322
|
199 |
d2_pqformula3
|
agriesma@322
|
200 |
"[|0<=1 - 4*q|] ==> (q+ bdv+ bdv^^^2=0) =
|
agriesma@322
|
201 |
((bdv= -(1/2) + sqrt(1 - 4*q)/2)
|
agriesma@322
|
202 |
| (bdv= -(1/2) - sqrt(1 - 4*q)/2))"
|
agriesma@322
|
203 |
d2_pqformula4
|
agriesma@322
|
204 |
"[|0<=1 - 4*q|] ==> (q+ bdv+1*bdv^^^2=0) =
|
agriesma@322
|
205 |
((bdv= -(1/2) + sqrt(1 - 4*q)/2)
|
agriesma@322
|
206 |
| (bdv= -(1/2) - sqrt(1 - 4*q)/2))"
|
agriesma@322
|
207 |
d2_pqformula5
|
agriesma@322
|
208 |
"[|0<=p^^^2 - 0|] ==> ( p*bdv+ bdv^^^2=0) =
|
agriesma@322
|
209 |
((bdv= -(p/2) + sqrt(p^^^2 - 0)/2)
|
agriesma@322
|
210 |
| (bdv= -(p/2) - sqrt(p^^^2 - 0)/2))"
|
agriesma@322
|
211 |
d2_pqformula6
|
agriesma@322
|
212 |
"[|0<=p^^^2 - 0|] ==> ( p*bdv+1*bdv^^^2=0) =
|
agriesma@322
|
213 |
((bdv= -(p/2) + sqrt(p^^^2 - 0)/2)
|
agriesma@322
|
214 |
| (bdv= -(p/2) - sqrt(p^^^2 - 0)/2))"
|
agriesma@322
|
215 |
d2_pqformula7
|
agriesma@322
|
216 |
"[|0<=1 - 0|] ==> ( bdv+ bdv^^^2=0) =
|
agriesma@322
|
217 |
((bdv= -(1/2) + sqrt(1 - 0)/2)
|
agriesma@322
|
218 |
| (bdv= -(1/2) - sqrt(1 - 0)/2))"
|
agriesma@322
|
219 |
d2_pqformula8
|
agriesma@322
|
220 |
"[|0<=1 - 4*q|] ==> ( bdv+1*bdv^^^2=0) =
|
agriesma@322
|
221 |
((bdv= -(1/2) + sqrt(1 - 4*q)/2)
|
agriesma@322
|
222 |
| (bdv= -(1/2) - sqrt(1 - 4*q)/2))"
|
agriesma@322
|
223 |
d2_pqformula9
|
agriesma@322
|
224 |
"[|0<= - 4*q|] ==> (q+ 1*bdv^^^2=0) =
|
agriesma@322
|
225 |
((bdv= 0 + sqrt(0 - 4*q)/2)
|
agriesma@322
|
226 |
| (bdv= 0 - sqrt(0 - 4*q)/2))"
|
agriesma@322
|
227 |
d2_pqformula10
|
agriesma@322
|
228 |
"[|0<= - 4*q|] ==> (q+ bdv^^^2=0) =
|
agriesma@322
|
229 |
((bdv= 0 + sqrt(0 - 4*q)/2)
|
agriesma@322
|
230 |
| (bdv= 0 - sqrt(0 - 4*q)/2))"
|
agriesma@322
|
231 |
d2_abcformula1
|
agriesma@322
|
232 |
"[|0<=b^^^2 - 4*a*c|] ==> (c + b*bdv+a*bdv^^^2=0) =
|
agriesma@322
|
233 |
((bdv=( -b + sqrt(b^^^2 - 4*a*c))/(2*a))
|
agriesma@322
|
234 |
| (bdv=( -b - sqrt(b^^^2 - 4*a*c))/(2*a)))"
|
agriesma@322
|
235 |
d2_abcformula2
|
agriesma@322
|
236 |
"[|0<=1 - 4*a*c|] ==> (c+ bdv+a*bdv^^^2=0) =
|
agriesma@322
|
237 |
((bdv=( -1 + sqrt(1 - 4*a*c))/(2*a))
|
agriesma@322
|
238 |
| (bdv=( -1 - sqrt(1 - 4*a*c))/(2*a)))"
|
agriesma@322
|
239 |
d2_abcformula3
|
agriesma@322
|
240 |
"[|0<=b^^^2 - 4*a*c|] ==> (c + b*bdv+ bdv^^^2=0) =
|
agriesma@322
|
241 |
((bdv=( -b + sqrt(b^^^2 - 4*1*c))/(2*1))
|
agriesma@322
|
242 |
| (bdv=( -b - sqrt(b^^^2 - 4*1*c))/(2*1)))"
|
agriesma@322
|
243 |
d2_abcformula4
|
agriesma@322
|
244 |
"[|0<=b^^^2 - 4*a*c|] ==> (c + bdv+ bdv^^^2=0) =
|
agriesma@322
|
245 |
((bdv=( -b + sqrt(1 - 4*1*c))/(2*1))
|
agriesma@322
|
246 |
| (bdv=( -b - sqrt(1 - 4*1*c))/(2*1)))"
|
agriesma@322
|
247 |
d2_abcformula5
|
agriesma@322
|
248 |
"[|0<=b^^^2 - 4*a*c|] ==> (c + a*bdv^^^2=0) =
|
agriesma@322
|
249 |
((bdv=( 0 + sqrt(0 - 4*a*c))/(2*a))
|
agriesma@322
|
250 |
| (bdv=( 0 - sqrt(0 - 4*a*c))/(2*a)))"
|
agriesma@322
|
251 |
d2_abcformula6
|
agriesma@322
|
252 |
"[|0<=1 - 4*a*c|] ==> (c+ bdv^^^2=0) =
|
agriesma@322
|
253 |
((bdv=( 0 + sqrt(0 - 4*1*c))/(2*1))
|
agriesma@322
|
254 |
| (bdv=( 0 - sqrt(0 - 4*1*c))/(2*1)))"
|
agriesma@322
|
255 |
d2_abcformula7
|
agriesma@322
|
256 |
"[|0<=1 - 4*a*c|] ==> ( b*bdv+a*bdv^^^2=0) =
|
agriesma@322
|
257 |
((bdv=( -b + sqrt(b^^^2 - 0))/(2*a))
|
agriesma@322
|
258 |
| (bdv=( -b - sqrt(b^^^2 - 0))/(2*a)))"
|
agriesma@322
|
259 |
d2_abcformula8
|
agriesma@322
|
260 |
"[|0<=b^^^2 - 4*a*c|] ==> ( b*bdv+ bdv^^^2=0) =
|
agriesma@322
|
261 |
((bdv=( -b + sqrt(b^^^2 - 0))/(2*1))
|
agriesma@322
|
262 |
| (bdv=( -b - sqrt(b^^^2 - 0))/(2*1)))"
|
agriesma@322
|
263 |
d2_abcformula9
|
agriesma@322
|
264 |
"[|0<=1 - 4*a*c|] ==> ( bdv+a*bdv^^^2=0) =
|
agriesma@322
|
265 |
((bdv=( -1 + sqrt(1 - 0))/(2*a))
|
agriesma@322
|
266 |
| (bdv=( -1 - sqrt(1 - 0))/(2*a)))"
|
agriesma@322
|
267 |
d2_abcformula10
|
agriesma@322
|
268 |
"[|0<=b^^^2 - 4*a*c|] ==> ( bdv+ bdv^^^2=0) =
|
agriesma@322
|
269 |
((bdv=( -1 + sqrt(1 - 0))/(2*1))
|
agriesma@322
|
270 |
| (bdv=( -1 - sqrt(1 - 0))/(2*1)))"
|
agriesma@322
|
271 |
(* ---- degree 3 ----*)
|
agriesma@322
|
272 |
d3_reduce_equation1
|
agriesma@322
|
273 |
"(a*bdv + b*bdv^^^2 + c*bdv^^^3=0) = (bdv=0 | (a + b*bdv + c*bdv^^^2=0))"
|
agriesma@322
|
274 |
d3_reduce_equation2
|
agriesma@322
|
275 |
"( bdv + b*bdv^^^2 + c*bdv^^^3=0) = (bdv=0 | (1 + b*bdv + c*bdv^^^2=0))"
|
agriesma@322
|
276 |
d3_reduce_equation3
|
agriesma@322
|
277 |
"(a*bdv + bdv^^^2 + c*bdv^^^3=0) = (bdv=0 | (a + bdv + c*bdv^^^2=0))"
|
agriesma@322
|
278 |
d3_reduce_equation4
|
agriesma@322
|
279 |
"( bdv + bdv^^^2 + c*bdv^^^3=0) = (bdv=0 | (1 + bdv + c*bdv^^^2=0))"
|
agriesma@322
|
280 |
d3_reduce_equation5
|
agriesma@322
|
281 |
"(a*bdv + b*bdv^^^2 + bdv^^^3=0) = (bdv=0 | (a + b*bdv + bdv^^^2=0))"
|
agriesma@322
|
282 |
d3_reduce_equation6
|
agriesma@322
|
283 |
"( bdv + b*bdv^^^2 + bdv^^^3=0) = (bdv=0 | (1 + b*bdv + bdv^^^2=0))"
|
agriesma@322
|
284 |
d3_reduce_equation7
|
agriesma@322
|
285 |
"(a*bdv + bdv^^^2 + bdv^^^3=0) = (bdv=0 | (1 + bdv + bdv^^^2=0))"
|
agriesma@322
|
286 |
d3_reduce_equation8
|
agriesma@322
|
287 |
"( bdv + bdv^^^2 + bdv^^^3=0) = (bdv=0 | (1 + bdv + bdv^^^2=0))"
|
agriesma@322
|
288 |
d3_reduce_equation9
|
agriesma@322
|
289 |
"(a*bdv + c*bdv^^^3=0) = (bdv=0 | (a + c*bdv^^^2=0))"
|
agriesma@322
|
290 |
d3_reduce_equation10
|
agriesma@322
|
291 |
"( bdv + c*bdv^^^3=0) = (bdv=0 | (1 + c*bdv^^^2=0))"
|
agriesma@322
|
292 |
d3_reduce_equation11
|
agriesma@322
|
293 |
"(a*bdv + bdv^^^3=0) = (bdv=0 | (a + bdv^^^2=0))"
|
agriesma@322
|
294 |
d3_reduce_equation12
|
agriesma@322
|
295 |
"( bdv + bdv^^^3=0) = (bdv=0 | (1 + bdv^^^2=0))"
|
agriesma@322
|
296 |
d3_reduce_equation13
|
agriesma@322
|
297 |
"( b*bdv^^^2 + c*bdv^^^3=0) = (bdv=0 | ( b*bdv + c*bdv^^^2=0))"
|
agriesma@322
|
298 |
d3_reduce_equation14
|
agriesma@322
|
299 |
"( bdv^^^2 + c*bdv^^^3=0) = (bdv=0 | ( bdv + c*bdv^^^2=0))"
|
agriesma@322
|
300 |
d3_reduce_equation15
|
agriesma@322
|
301 |
"( b*bdv^^^2 + bdv^^^3=0) = (bdv=0 | ( b*bdv + bdv^^^2=0))"
|
agriesma@322
|
302 |
d3_reduce_equation16
|
agriesma@322
|
303 |
"( bdv^^^2 + bdv^^^3=0) = (bdv=0 | ( bdv + bdv^^^2=0))"
|
agriesma@322
|
304 |
d3_isolate_add1
|
agriesma@322
|
305 |
"[|Not(bdv occurs_in a)|] ==> (a + b*bdv^^^3=0) = (b*bdv^^^3= (-1)*a)"
|
agriesma@322
|
306 |
d3_isolate_add2
|
agriesma@322
|
307 |
"[|Not(bdv occurs_in a)|] ==> (a + bdv^^^3=0) = ( bdv^^^3= (-1)*a)"
|
agriesma@322
|
308 |
d3_isolate_div
|
agriesma@322
|
309 |
"[|Not(b=0);Not(bdv occurs_in a)|] ==> (b*bdv^^^3=c) = (bdv^^^3=c/b)"
|
agriesma@322
|
310 |
d3_root_equation2
|
agriesma@322
|
311 |
"(bdv^^^3=0) = (bdv=0)"
|
agriesma@322
|
312 |
d3_root_equation1
|
agriesma@322
|
313 |
"(bdv^^^3=c) = (bdv = nroot 3 c)"
|
agriesma@322
|
314 |
|
agriesma@322
|
315 |
(* ---- degree 4 ----*)
|
agriesma@322
|
316 |
(* FIXME es wir nicht getestet ob u>0 *)
|
agriesma@322
|
317 |
d4_sub_u1
|
agriesma@322
|
318 |
"(c+b*bdv^^^2+a*bdv^^^4=0) =
|
agriesma@322
|
319 |
((a*u^^^2+b*u+c=0) & (bdv^^^2=u))"
|
agriesma@322
|
320 |
|
agriesma@322
|
321 |
(* ---- 7.3.02 von Termorder ---- *)
|
agriesma@322
|
322 |
|
agriesma@322
|
323 |
bdv_collect_1 "l * bdv + m * bdv = (l + m) * bdv"
|
agriesma@322
|
324 |
bdv_collect_2 "bdv + m * bdv = (1 + m) * bdv"
|
agriesma@322
|
325 |
bdv_collect_3 "l * bdv + bdv = (l + 1) * bdv"
|
agriesma@322
|
326 |
|
agriesma@322
|
327 |
(* bdv_collect_assoc0_1 "l * bdv + m * bdv + k = (l + m) * bdv + k"
|
agriesma@322
|
328 |
bdv_collect_assoc0_2 "bdv + m * bdv + k = (1 + m) * bdv + k"
|
agriesma@322
|
329 |
bdv_collect_assoc0_3 "l * bdv + bdv + k = (l + 1) * bdv + k"
|
agriesma@322
|
330 |
*)
|
agriesma@322
|
331 |
bdv_collect_assoc1_1 "l * bdv + (m * bdv + k) = (l + m) * bdv + k"
|
agriesma@322
|
332 |
bdv_collect_assoc1_2 "bdv + (m * bdv + k) = (1 + m) * bdv + k"
|
agriesma@322
|
333 |
bdv_collect_assoc1_3 "l * bdv + (bdv + k) = (l + 1) * bdv + k"
|
agriesma@322
|
334 |
|
agriesma@322
|
335 |
bdv_collect_assoc2_1 "k + l * bdv + m * bdv = k + (l + m) * bdv"
|
agriesma@322
|
336 |
bdv_collect_assoc2_2 "k + bdv + m * bdv = k + (1 + m) * bdv"
|
agriesma@322
|
337 |
bdv_collect_assoc2_3 "k + l * bdv + bdv = k + (l + 1) * bdv"
|
agriesma@322
|
338 |
|
agriesma@322
|
339 |
|
agriesma@322
|
340 |
bdv_n_collect_1 "l * bdv^^^n + m * bdv^^^n = (l + m) * bdv^^^n"
|
agriesma@322
|
341 |
bdv_n_collect_2 " bdv^^^n + m * bdv^^^n = (1 + m) * bdv^^^n"
|
agriesma@322
|
342 |
bdv_n_collect_3 "l * bdv^^^n + bdv^^^n = (l + 1) * bdv^^^n" (*order!*)
|
agriesma@322
|
343 |
|
agriesma@322
|
344 |
bdv_n_collect_assoc1_1 "l * bdv^^^n + (m * bdv^^^n + k) = (l + m) * bdv^^^n + k"
|
agriesma@322
|
345 |
bdv_n_collect_assoc1_2 "bdv^^^n + (m * bdv^^^n + k) = (1 + m) * bdv^^^n + k"
|
agriesma@322
|
346 |
bdv_n_collect_assoc1_3 "l * bdv^^^n + (bdv^^^n + k) = (l + 1) * bdv^^^n + k"
|
agriesma@322
|
347 |
|
agriesma@322
|
348 |
bdv_n_collect_assoc2_1 "k + l * bdv^^^n + m * bdv^^^n = k + (l + m) * bdv^^^n"
|
agriesma@322
|
349 |
bdv_n_collect_assoc2_2 "k + bdv^^^n + m * bdv^^^n = k + (1 + m) * bdv^^^n"
|
agriesma@322
|
350 |
bdv_n_collect_assoc2_3 "k + l * bdv^^^n + bdv^^^n = k + (l + 1) * bdv^^^n"
|
agriesma@322
|
351 |
|
agriesma@322
|
352 |
(*WN.14.3.03*)
|
agriesma@322
|
353 |
real_minus_div "- (a / b) = (-1 * a) / b"
|
agriesma@322
|
354 |
|
agriesma@322
|
355 |
separate_bdv "(a * bdv) / b = (a / b) * bdv"
|
agriesma@322
|
356 |
separate_bdv_n "(a * bdv ^^^ n) / b = (a / b) * bdv ^^^ n"
|
agriesma@322
|
357 |
separate_1_bdv "bdv / b = (1 / b) * bdv"
|
agriesma@322
|
358 |
separate_1_bdv_n "bdv ^^^ n / b = (1 / b) * bdv ^^^ n"
|
agriesma@322
|
359 |
|
agriesma@322
|
360 |
end
|
agriesma@322
|
361 |
|
agriesma@322
|
362 |
|
agriesma@322
|
363 |
|
agriesma@322
|
364 |
|
agriesma@322
|
365 |
|
agriesma@322
|
366 |
|