diff -r a28b5fc129b7 -r 22235e4dbe5f src/Tools/isac/Knowledge/EqSystem.thy --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/Tools/isac/Knowledge/EqSystem.thy Wed Aug 25 16:20:07 2010 +0200 @@ -0,0 +1,72 @@ +(* equational systems, minimal -- for use in Biegelinie + author: Walther Neuper + 050826, + (c) due to copyright terms + +remove_thy"EqSystem"; +use_thy"Knowledge/EqSystem"; + +use_thy_only"Knowledge/EqSystem"; + +remove_thy"Typefix"; +use_thy"Knowledge/Isac"; +*) + +EqSystem = Rational + Root + + +consts + + occur'_exactly'_in :: + "[real list, real list, 'a] => bool" ("_ from'_ _ occur'_exactly'_in _") + + (*descriptions in the related problems*) + solveForVars :: real list => toreall + solution :: bool list => toreall + + (*the CAS-command, eg. "solveSystem [x+y=1,y=2] [x,y]"*) + solveSystem :: "[bool list, real list] => bool list" + + (*Script-names*) + SolveSystemScript :: "[bool list, real list, bool list] \ + \=> bool list" + ("((Script SolveSystemScript (_ _ =))// (_))" 9) + +rules +(*stated as axioms, todo: prove as theorems + 'bdv' is a constant handled on the meta-level + specifically as a 'bound variable' *) + + commute_0_equality "(0 = a) = (a = 0)" + + (*WN0510 see simliar rules 'isolate_' 'separate_' (by RL) + [bdv_1,bdv_2,bdv_3,bdv_4] work also for 2 and 3 bdvs, ugly !*) + separate_bdvs_add + "[| [] from_ [bdv_1,bdv_2,bdv_3,bdv_4] occur_exactly_in a |]\ + \ ==> (a + b = c) = (b = c + -1*a)" + separate_bdvs0 + "[| some_of [bdv_1,bdv_2,bdv_3,bdv_4] occur_in b; Not (b=!=0) |]\ + \ ==> (a = b) = (a + -1*b = 0)" + separate_bdvs_add1 + "[| some_of [bdv_1,bdv_2,bdv_3,bdv_4] occur_in c |]\ + \ ==> (a = b + c) = (a + -1*c = b)" + separate_bdvs_add2 + "[| Not (some_of [bdv_1,bdv_2,bdv_3,bdv_4] occur_in a) |]\ + \ ==> (a + b = c) = (b = -1*a + c)" + + + + separate_bdvs_mult + "[| [] from_ [bdv_1,bdv_2,bdv_3,bdv_4] occur_exactly_in a; Not (a=!=0) |]\ + \ ==>(a * b = c) = (b = c / a)" + + (*requires rew_ord for termination, eg. ord_simplify_Integral; + works for lists of any length, interestingly !?!*) + order_system_NxN "[a,b] = [b,a]" + +(* +remove_thy"EqSystem"; +use_thy_only"Knowledge/EqSystem"; +use_thy"Knowledge/EqSystem"; +use"Knowledge/EqSystem.ML"; + *) +end \ No newline at end of file