213 |
213 |
214 "----------- rls make_polynomial_in ------------------------------"; |
214 "----------- rls make_polynomial_in ------------------------------"; |
215 "----------- rls make_polynomial_in ------------------------------"; |
215 "----------- rls make_polynomial_in ------------------------------"; |
216 "----------- rls make_polynomial_in ------------------------------"; |
216 "----------- rls make_polynomial_in ------------------------------"; |
217 val thy = @{theory}; |
217 val thy = @{theory}; |
|
218 val ctxt = @{context}; |
218 (*Punkte aus dem TestBericht, die ich in rlang.sml nicht zuordnen konnte:*) |
219 (*Punkte aus dem TestBericht, die ich in rlang.sml nicht zuordnen konnte:*) |
219 (*WN.19.3.03 ---v-*) |
220 (*WN.19.3.03 ---v-*) |
220 (*3(b)*)val (bdv,v) = (TermC.str2term "''bdv''", TermC.str2term "R1"); |
221 (*3(b)*)val (bdv,v) = (TermC.str2term "''bdv''", TermC.str2term "R1"); |
221 val t = TermC.str2term "- 1 * (R * R2) + R2 * R1 + - 1 * (R * R1) = 0"; |
222 val t = TermC.str2term "- 1 * (R * R2) + R2 * R1 + - 1 * (R * R1) = 0"; |
222 val SOME (t',_) = rewrite_set_inst_ thy false [(bdv,v)] make_polynomial_in t; |
223 val SOME (t',_) = rewrite_set_inst_ ctxt false [(bdv,v)] make_polynomial_in t; |
223 if UnparseC.term t' = "- 1 * R * R2 + R2 * R1 + - 1 * R * R1 = 0" then () |
224 if UnparseC.term t' = "- 1 * R * R2 + R2 * R1 + - 1 * R * R1 = 0" then () |
224 else error "make_polynomial_in (- 1 * (R * R2) + R2 * R1 + - 1 * (R * R1) = 0)"; |
225 else error "make_polynomial_in (- 1 * (R * R2) + R2 * R1 + - 1 * (R * R1) = 0)"; |
225 "- 1 * R * R2 + (R2 + - 1 * R) * R1 = 0"; |
226 "- 1 * R * R2 + (R2 + - 1 * R) * R1 = 0"; |
226 (*WN.19.3.03 ---^-*) |
227 (*WN.19.3.03 ---^-*) |
227 |
228 |
228 (*3(c)*)val (bdv,v) = (TermC.str2term "bdv", TermC.str2term "p"); |
229 (*3(c)*)val (bdv,v) = (TermC.str2term "bdv", TermC.str2term "p"); |
229 val t = TermC.str2term "y \<up> 2 + - 2 * (x * p) = 0"; |
230 val t = TermC.str2term "y \<up> 2 + - 2 * (x * p) = 0"; |
230 val SOME (t',_) = rewrite_set_inst_ thy false [(bdv,v)] make_polynomial_in t; |
231 val SOME (t',_) = rewrite_set_inst_ ctxt false [(bdv,v)] make_polynomial_in t; |
231 if UnparseC.term t' = "y \<up> 2 + - 2 * x * p = 0" then () |
232 if UnparseC.term t' = "y \<up> 2 + - 2 * x * p = 0" then () |
232 else error "make_polynomial_in (y \<up> 2 + - 2 * (x * p) = 0)"; |
233 else error "make_polynomial_in (y \<up> 2 + - 2 * (x * p) = 0)"; |
233 |
234 |
234 (*3(d)*)val (bdv,v) = (TermC.str2term "''bdv''", TermC.str2term "x2"); |
235 (*3(d)*)val (bdv,v) = (TermC.str2term "''bdv''", TermC.str2term "x2"); |
235 val t = TermC.str2term |
236 val t = TermC.str2term |
236 "A + x1 * (y3 * (1 / 2)) + x3 * (y2 * (1 / 2)) + - 1 * (x1 * (y2 * (1 / 2))) + - 1 * (x3 * (y1 * (1 / 2 ))) + y1 * (1 / 2 * x2) + - 1 * (y3 * (1 / 2 * x2)) = 0"; |
237 "A + x1 * (y3 * (1 / 2)) + x3 * (y2 * (1 / 2)) + - 1 * (x1 * (y2 * (1 / 2))) + - 1 * (x3 * (y1 * (1 / 2 ))) + y1 * (1 / 2 * x2) + - 1 * (y3 * (1 / 2 * x2)) = 0"; |
237 val SOME (t',_) = rewrite_set_inst_ thy false [(bdv,v)] make_polynomial_in t; |
238 val SOME (t',_) = rewrite_set_inst_ ctxt false [(bdv,v)] make_polynomial_in t; |
238 if UnparseC.term t' = |
239 if UnparseC.term t' = |
239 "A + x1 * y3 * (1 / 2) + x3 * y2 * (1 / 2) + - 1 * x1 * y2 * (1 / 2) +\n- 1 * x3 * y1 * (1 / 2) +\ny1 * (1 / 2) * x2 +\n- 1 * y3 * (1 / 2) * x2 =\n0" |
240 "A + x1 * y3 * (1 / 2) + x3 * y2 * (1 / 2) + - 1 * x1 * y2 * (1 / 2) +\n- 1 * x3 * y1 * (1 / 2) +\ny1 * (1 / 2) * x2 +\n- 1 * y3 * (1 / 2) * x2 =\n0" |
240 then () |
241 then () |
241 else error "make_polynomial_in (A + x1 * (y3 * (1 / 2)) + x3 * (y2 * (1 / 2)) + - 1..."; |
242 else error "make_polynomial_in (A + x1 * (y3 * (1 / 2)) + x3 * (y2 * (1 / 2)) + - 1..."; |
242 "A + x1 * y3 * (1 / 2) + x3 * y2 * (1 / 2) + - x1 * y2 * (1 / 2) + - x3 * y1 * (1 / 2) + (y1 * (1 / 2) + - y3 * (1 / 2)) * x2 = 0"; |
243 "A + x1 * y3 * (1 / 2) + x3 * y2 * (1 / 2) + - x1 * y2 * (1 / 2) + - x3 * y1 * (1 / 2) + (y1 * (1 / 2) + - y3 * (1 / 2)) * x2 = 0"; |
243 |
244 |
244 val SOME (t',_) = rewrite_set_inst_ thy false [(bdv,v)] make_ratpoly_in t; |
245 val SOME (t',_) = rewrite_set_inst_ ctxt false [(bdv,v)] make_ratpoly_in t; |
245 if UnparseC.term t' = |
246 if UnparseC.term t' = |
246 "A / 1 + x1 * y3 / 2 + x3 * y2 / 2 + - 1 * x1 * y2 / 2 + - 1 * x3 * y1 / 2 +\ny1 * x2 / 2 +\n- 1 * y3 * x2 / 2 =\n0" |
247 "A / 1 + x1 * y3 / 2 + x3 * y2 / 2 + - 1 * x1 * y2 / 2 + - 1 * x3 * y1 / 2 +\ny1 * x2 / 2 +\n- 1 * y3 * x2 / 2 =\n0" |
247 then () |
248 then () |
248 else error "make_ratpoly_in (A + x1 * (y3 * (1 / 2)) + x3 * (y2 * (1 / 2)) + - 1..."; |
249 else error "make_ratpoly_in (A + x1 * (y3 * (1 / 2)) + x3 * (y2 * (1 / 2)) + - 1..."; |
249 "A + x1 * y3 * (1 / 2) + x3 * y2 * (1 / 2) + - 1 * x1 * y2 * (1 / 2) + - 1 * x3 * y1 * (1 / 2) + (y1 * (1 / 2) + - 1 * y3 * (1 / 2)) * x2 = 0"; |
250 "A + x1 * y3 * (1 / 2) + x3 * y2 * (1 / 2) + - 1 * x1 * y2 * (1 / 2) + - 1 * x3 * y1 * (1 / 2) + (y1 * (1 / 2) + - 1 * y3 * (1 / 2)) * x2 = 0"; |
250 |
251 |
251 (*3(e)*)val (bdv,v) = (TermC.str2term "bdv", TermC.str2term "a"); |
252 (*3(e)*)val (bdv,v) = (TermC.str2term "bdv", TermC.str2term "a"); |
252 val t = TermC.str2term |
253 val t = TermC.str2term |
253 "A \<up> 2 + c \<up> 2 * (c / d) \<up> 2 + (-4 * (c / d) \<up> 2) * a \<up> 2 = 0"; |
254 "A \<up> 2 + c \<up> 2 * (c / d) \<up> 2 + (-4 * (c / d) \<up> 2) * a \<up> 2 = 0"; |
254 val NONE = rewrite_set_inst_ thy false [(bdv,v)] make_polynomial_in t; |
255 val NONE = rewrite_set_inst_ ctxt false [(bdv,v)] make_polynomial_in t; |
255 (* the invisible parentheses are as expected *) |
256 (* the invisible parentheses are as expected *) |
256 |
257 |
257 val t = TermC.str2term "(x + 1) * (x + 2) - (3 * x - 2) \<up> 2 - ((2 * x - 1) \<up> 2 + (3 * x - 1) * (x + 1)) = 0"; |
258 val t = TermC.str2term "(x + 1) * (x + 2) - (3 * x - 2) \<up> 2 - ((2 * x - 1) \<up> 2 + (3 * x - 1) * (x + 1)) = 0"; |
258 Rewrite.trace_on:= false; (*true false*) |
259 rewrite_set_ ctxt false expand_binoms t; |
259 rewrite_set_ thy false expand_binoms t; |
|
260 Rewrite.trace_on:=false; (*true false*) |
|
261 |
260 |
262 |
261 |
263 "----------- interSteps ([1],Res); on Schalk Is86Bsp5-------------"; |
262 "----------- interSteps ([1],Res); on Schalk Is86Bsp5-------------"; |
264 "----------- interSteps ([1],Res); on Schalk Is86Bsp5-------------"; |
263 "----------- interSteps ([1],Res); on Schalk Is86Bsp5-------------"; |
265 "----------- interSteps ([1],Res); on Schalk Is86Bsp5-------------"; |
264 "----------- interSteps ([1],Res); on Schalk Is86Bsp5-------------"; |
279 "----------- rls d2_polyeq_bdv_only_simplify ---------------------"; |
278 "----------- rls d2_polyeq_bdv_only_simplify ---------------------"; |
280 "----------- rls d2_polyeq_bdv_only_simplify ---------------------"; |
279 "----------- rls d2_polyeq_bdv_only_simplify ---------------------"; |
281 "----------- rls d2_polyeq_bdv_only_simplify ---------------------"; |
280 "----------- rls d2_polyeq_bdv_only_simplify ---------------------"; |
282 val t = TermC.str2term "-6 * x + 5 * x \<up> 2 = (0::real)"; |
281 val t = TermC.str2term "-6 * x + 5 * x \<up> 2 = (0::real)"; |
283 val subst = [(TermC.str2term "(bdv::real)", TermC.str2term "(x::real)")]; |
282 val subst = [(TermC.str2term "(bdv::real)", TermC.str2term "(x::real)")]; |
284 val SOME (t''''', _) = rewrite_set_inst_ thy true subst d2_polyeq_bdv_only_simplify t; |
283 val SOME (t''''', _) = rewrite_set_inst_ ctxt true subst d2_polyeq_bdv_only_simplify t; |
285 (* steps in rls d2_polyeq_bdv_only_simplify:*) |
284 (* steps in rls d2_polyeq_bdv_only_simplify:*) |
286 |
285 |
287 (*-6 * x + 5 * x ^ 2 = 0 : Rewrite_Inst (["(''bdv'',x)"],("d2_prescind1", "")) --> x * (-6 + 5 * x) = 0*) |
286 (*-6 * x + 5 * x ^ 2 = 0 : Rewrite_Inst (["(''bdv'',x)"],("d2_prescind1", "")) --> x * (-6 + 5 * x) = 0*) |
288 t |> UnparseC.term; t |> TermC.atomty; |
287 t |> UnparseC.term; t |> TermC.atomty; |
289 val thm = @{thm d2_prescind1}; |
288 val thm = @{thm d2_prescind1}; |
290 thm |> Thm.prop_of |> UnparseC.term; thm |> Thm.prop_of |> TermC.atomty; |
289 thm |> Thm.prop_of |> UnparseC.term; thm |> Thm.prop_of |> TermC.atomty; |
291 val SOME (t', _) = rewrite_inst_ thy e_rew_ord Rule_Set.empty true subst thm t; UnparseC.term t'; |
290 val SOME (t', _) = rewrite_inst_ ctxt e_rew_ord Rule_Set.empty true subst thm t; UnparseC.term t'; |
292 |
291 |
293 (*x * (-6 + 5 * x) = 0 : Rewrite_Inst (["(''bdv'',x)"],("d2_reduce_equation1", "")) |
292 (*x * (-6 + 5 * x) = 0 : Rewrite_Inst (["(''bdv'',x)"],("d2_reduce_equation1", "")) |
294 --> x = 0 | -6 + 5 * x = 0*) |
293 --> x = 0 | -6 + 5 * x = 0*) |
295 t' |> UnparseC.term; t' |> TermC.atomty; |
294 t' |> UnparseC.term; t' |> TermC.atomty; |
296 val thm = @{thm d2_reduce_equation1}; |
295 val thm = @{thm d2_reduce_equation1}; |
297 thm |> Thm.prop_of |> UnparseC.term; thm |> Thm.prop_of |> TermC.atomty; |
296 thm |> Thm.prop_of |> UnparseC.term; thm |> Thm.prop_of |> TermC.atomty; |
298 val SOME (t'', _) = rewrite_inst_ thy e_rew_ord Rule_Set.empty true subst thm t'; UnparseC.term t''; |
297 val SOME (t'', _) = rewrite_inst_ ctxt e_rew_ord Rule_Set.empty true subst thm t'; UnparseC.term t''; |
299 (* NONE with d2_reduce_equation1: "(bdv*(a +b*bdv)=0) = ((bdv=0)|(a+b*bdv=0))" |
298 (* NONE with d2_reduce_equation1: "(bdv*(a +b*bdv)=0) = ((bdv=0)|(a+b*bdv=0))" |
300 instead d2_reduce_equation1: "(bdv*(a +b*bdv)=0) = ((bdv=0)|(a+b*bdv=(0::real)))" |
299 instead d2_reduce_equation1: "(bdv*(a +b*bdv)=0) = ((bdv=0)|(a+b*bdv=(0::real)))" |
301 *) |
300 *) |
302 if UnparseC.term t'' = "x = 0 \<or> - 6 + 5 * x = 0" then () |
301 if UnparseC.term t'' = "x = 0 \<or> - 6 + 5 * x = 0" then () |
303 else error "rls d2_polyeq_bdv_only_simplify broken"; |
302 else error "rls d2_polyeq_bdv_only_simplify broken"; |