1 (* equational systems, minimal -- for use in Biegelinie
4 (c) due to copyright terms
7 use_thy"Knowledge/EqSystem";
9 use_thy_only"Knowledge/EqSystem";
12 use_thy"Knowledge/Isac";
15 EqSystem = Rational + Root +
20 "[real list, real list, 'a] => bool" ("_ from'_ _ occur'_exactly'_in _")
22 (*descriptions in the related problems*)
23 solveForVars :: real list => toreall
24 solution :: bool list => toreall
26 (*the CAS-command, eg. "solveSystem [x+y=1,y=2] [x,y]"*)
27 solveSystem :: "[bool list, real list] => bool list"
30 SolveSystemScript :: "[bool list, real list, bool list] \
32 ("((Script SolveSystemScript (_ _ =))// (_))" 9)
35 (*stated as axioms, todo: prove as theorems
36 'bdv' is a constant handled on the meta-level
37 specifically as a 'bound variable' *)
39 commute_0_equality "(0 = a) = (a = 0)"
41 (*WN0510 see simliar rules 'isolate_' 'separate_' (by RL)
42 [bdv_1,bdv_2,bdv_3,bdv_4] work also for 2 and 3 bdvs, ugly !*)
44 "[| [] from_ [bdv_1,bdv_2,bdv_3,bdv_4] occur_exactly_in a |]\
45 \ ==> (a + b = c) = (b = c + -1*a)"
47 "[| some_of [bdv_1,bdv_2,bdv_3,bdv_4] occur_in b; Not (b=!=0) |]\
48 \ ==> (a = b) = (a + -1*b = 0)"
50 "[| some_of [bdv_1,bdv_2,bdv_3,bdv_4] occur_in c |]\
51 \ ==> (a = b + c) = (a + -1*c = b)"
53 "[| Not (some_of [bdv_1,bdv_2,bdv_3,bdv_4] occur_in a) |]\
54 \ ==> (a + b = c) = (b = -1*a + c)"
59 "[| [] from_ [bdv_1,bdv_2,bdv_3,bdv_4] occur_exactly_in a; Not (a=!=0) |]\
60 \ ==>(a * b = c) = (b = c / a)"
62 (*requires rew_ord for termination, eg. ord_simplify_Integral;
63 works for lists of any length, interestingly !?!*)
64 order_system_NxN "[a,b] = [b,a]"
68 use_thy_only"Knowledge/EqSystem";
69 use_thy"Knowledge/EqSystem";
70 use"Knowledge/EqSystem.ML";