test/Tools/isac/Knowledge/eqsystem.sml
author Walther Neuper <walther.neuper@jku.at>
Thu, 19 Dec 2019 16:41:57 +0100
changeset 59749 cc3b1807f72e
parent 59627 2679ff6624eb
child 59773 d88bb023c380
permissions -rw-r--r--
cleanup fun solve, shift from Solve --> Step_Solve
neuper@37906
     1
(* tests on systems of equations
neuper@42391
     2
   author: Walther Neuper 050826,
neuper@37906
     3
   (c) due to copyright terms
neuper@37906
     4
*)
neuper@37906
     5
neuper@52070
     6
trace_rewrite := false;
neuper@37906
     7
"-----------------------------------------------------------------";
neuper@37906
     8
"table of contents -----------------------------------------------";
neuper@37906
     9
"-----------------------------------------------------------------";
neuper@37906
    10
"----------- occur_exactly_in ------------------------------------";
neuper@37906
    11
"----------- problems --------------------------------------------";
neuper@37906
    12
"----------- rewrite-order ord_simplify_System -------------------";
wneuper@59370
    13
"----------- rewrite in [EqSystem,normalise,2x2] -----------------";
wneuper@59370
    14
"----------- rewrite example from 2nd [EqSystem,normalise,2x2] ---";
neuper@37906
    15
"----------- rewrite in [EqSystem,top_down_substitution,2x2] -----";
wneuper@59370
    16
"----------- rewrite in [EqSystem,normalise,4x4] -----------------";
neuper@37906
    17
"----------- script [EqSystem,top_down_substitution,2x2] Vers.1 --";
neuper@37906
    18
"----------- refine [linear,system]-------------------------------";
neuper@37906
    19
"----------- refine [2x2,linear,system] search error--------------";
wneuper@59370
    20
"----------- me [EqSystem,normalise,2x2] -------------------------";
wneuper@59370
    21
"----------- me [linear,system] ..normalise..top_down_sub..-------";
neuper@37906
    22
"----------- all systems from Biegelinie -------------------------";
neuper@37906
    23
"----------- 4x4 systems from Biegelinie -------------------------";
neuper@37906
    24
"-----------------------------------------------------------------";
neuper@37906
    25
"-----------------------------------------------------------------";
neuper@37906
    26
"-----------------------------------------------------------------";
neuper@37906
    27
t@42166
    28
val thy = @{theory "EqSystem"};
neuper@48761
    29
val ctxt = Proof_Context.init_global thy;
neuper@37906
    30
neuper@37906
    31
"----------- occur_exactly_in ------------------------------------";
neuper@37906
    32
"----------- occur_exactly_in ------------------------------------";
neuper@37906
    33
"----------- occur_exactly_in ------------------------------------";
neuper@37906
    34
val all = [str2term"c", str2term"c_2", str2term"c_3"];
neuper@37906
    35
val t = str2term"0 = -1 * q_0 * L ^^^ 2 / 2 + L * c + c_2";
neuper@37906
    36
neuper@37906
    37
if occur_exactly_in [str2term"c", str2term"c_2"] all t
neuper@38031
    38
then () else error "eqsystem.sml occur_exactly_in 1";
neuper@37906
    39
neuper@37906
    40
if not (occur_exactly_in [str2term"c", str2term"c_2", str2term"c_3"] all t)
neuper@38031
    41
then () else error "eqsystem.sml occur_exactly_in 2";
neuper@37906
    42
neuper@37906
    43
if not (occur_exactly_in [str2term"c_2"] all t)
neuper@38031
    44
then () else error "eqsystem.sml occur_exactly_in 3";
neuper@37906
    45
neuper@42390
    46
val t = str2term"[c,c_2] from [c,c_2,c_3] occur_exactly_in -1 * q_0 * L ^^^ 2 / 2 + L * c + c_2";
neuper@42390
    47
eval_occur_exactly_in 0 "EqSystem.occur'_exactly'_in" t 0;
neuper@42390
    48
val SOME (str, t') = eval_occur_exactly_in 0 "EqSystem.occur'_exactly'_in" t 0;
neuper@42390
    49
if str = "[c, c_2] from [c, c_2,\n" ^
neuper@42390
    50
  "               c_3] occur_exactly_in -1 * q_0 * L ^^^ 2 / 2 + L * c + c_2 = True"
neuper@42390
    51
then () else error "eval_occur_exactly_in [c, c_2]";
neuper@37906
    52
neuper@42390
    53
val t = str2term ("[c,c_2,c_3] from [c,c_2,c_3] occur_exactly_in " ^
neuper@42390
    54
		  "-1 * q_0 * L ^^^ 2 / 2 + L * c + c_2");
neuper@37926
    55
val SOME (str, t') = eval_occur_exactly_in 0 "EqSystem.occur'_exactly'_in" t 0;
neuper@42390
    56
if str = "[c, c_2,\n c_3] from [c, c_2,\n" ^
neuper@42390
    57
"            c_3] occur_exactly_in -1 * q_0 * L ^^^ 2 / 2 + L * c + c_2 = False"
neuper@42390
    58
then () else error "eval_occur_exactly_in [c, c_2, c_3]";
neuper@37906
    59
neuper@42168
    60
val t = str2term"[c_2] from [c,c_2,c_3] occur_exactly_in \
neuper@37906
    61
		\-1 * q_0 * L ^^^ 2 / 2 + L * c + c_2";
neuper@37926
    62
val SOME (str, t') = eval_occur_exactly_in 0 "EqSystem.occur'_exactly'_in" t 0;
neuper@42390
    63
if str = "[c_2] from [c, c_2,\n" ^
neuper@42390
    64
  "            c_3] occur_exactly_in -1 * q_0 * L ^^^ 2 / 2 + L * c + c_2 = False"
neuper@42390
    65
then () else error "eval_occur_exactly_in [c, c_2, c_3]";
neuper@37906
    66
neuper@42168
    67
val t = str2term"[] from [c,c_2,c_3] occur_exactly_in 0";
neuper@37926
    68
val SOME (str, t') = eval_occur_exactly_in 0 "EqSystem.occur'_exactly'_in" t 0;
neuper@42390
    69
if str = "[] from [c, c_2, c_3] occur_exactly_in 0 = True" then ()
neuper@38031
    70
else error "eval_occur_exactly_in [c, c_2, c_3]";
neuper@37906
    71
neuper@37906
    72
val t = 
neuper@37906
    73
    str2term
neuper@42168
    74
	"[] from [c, c_2, c_3, c_4] occur_exactly_in -1 * (q_0 * L ^^^ 2) /2";
neuper@37926
    75
val SOME (str, t') = eval_occur_exactly_in 0 "EqSystem.occur'_exactly'_in" t 0;
neuper@42390
    76
if str = "[] from [c, c_2, c_3, c_4] occur_exactly_in \
neuper@37906
    77
	 \-1 * (q_0 * L ^^^ 2) / 2 = True" then ()
neuper@38031
    78
else error "eval_occur_exactly_in [c, c_2, c_3, c_4]";
neuper@37906
    79
neuper@37906
    80
"----------- problems --------------------------------------------";
neuper@37906
    81
"----------- problems --------------------------------------------";
neuper@37906
    82
"----------- problems --------------------------------------------";
neuper@42168
    83
val t = str2term "LENGTH [x+y=1,y=2] = 2";
neuper@37906
    84
atomty t;
neuper@37906
    85
val testrls = append_rls "testrls" e_rls 
neuper@42390
    86
			 [(Thm ("LENGTH_NIL",num_str @{thm LENGTH_NIL})),
neuper@42390
    87
			  (Thm ("LENGTH_CONS",num_str @{thm LENGTH_CONS})),
neuper@38014
    88
			  Calc ("Groups.plus_class.plus", eval_binop "#add_"),
neuper@41922
    89
			  Calc ("HOL.eq",eval_equal "#equal_")
neuper@37906
    90
			  ];
neuper@37926
    91
val SOME (t',_) = rewrite_set_ thy false testrls t;
neuper@42390
    92
if term2str t' = "True" then () 
neuper@38031
    93
else error "eqsystem.sml: length_ [x+y=1,y=2] = 2";
neuper@37906
    94
neuper@42391
    95
val SOME t = parse thy "solution LL";
wneuper@59188
    96
atomty (Thm.term_of t);
neuper@42391
    97
val SOME t = parse thy "solution LL";
wneuper@59188
    98
atomty (Thm.term_of t);
neuper@37906
    99
neuper@37906
   100
val t = str2term 
neuper@42390
   101
"(tl (tl (tl v_s))) from v_s occur_exactly_in (NTH 1 (e_s::bool list))";
neuper@37906
   102
atomty t;
neuper@42390
   103
val t = str2term ("(tl (tl (tl [c, c_2, c_3, c_4]))) from [c, c_2, c_3, c_4] occur_exactly_in " ^
neuper@42390
   104
  "(NTH 1 [c_4 = 1, 2 = 2, 3 = 3, 4 = 4])");
neuper@37926
   105
val SOME (t,_) = 
neuper@37906
   106
    rewrite_set_ thy true 
neuper@37906
   107
		 (append_rls "prls_" e_rls 
neuper@42390
   108
			     [Thm ("NTH_CONS",num_str @{thm NTH_CONS}),
neuper@42390
   109
			      Thm ("NTH_NIL",num_str @{thm NTH_NIL}),
neuper@42390
   110
			      Thm ("TL_CONS",num_str @{thm tl_Cons}),
neuper@42390
   111
			      Thm ("TL_NIL",num_str @{thm tl_Nil}),
neuper@42390
   112
			      Calc ("EqSystem.occur'_exactly'_in", eval_occur_exactly_in "#eval_occur_exactly_in_")
neuper@37906
   113
			      ]) t;
neuper@48760
   114
if t = @{term True} then () 
neuper@38031
   115
else error "eqsystem.sml ..occur_exactly_in (nth_ 1 [c_4..";
neuper@37906
   116
neuper@37906
   117
"----------- rewrite-order ord_simplify_System -------------------";
neuper@37906
   118
"----------- rewrite-order ord_simplify_System -------------------";
neuper@37906
   119
"----------- rewrite-order ord_simplify_System -------------------";
neuper@37906
   120
"M_b x = c * x + -1 * q_0 * (x ^^^ 2 / 2) + c_2";
wneuper@59118
   121
"--- add.commute ---"; (* ... add_commute cf. b42e334c97ee *)
neuper@37906
   122
if ord_simplify_System false thy [] (str2term"-1 * q_0 * (x ^^^ 2 / 2)", 
neuper@37906
   123
				       str2term"c * x") then ()
neuper@38031
   124
else error "integrate.sml, (-1 * q_0 * (x ^^^ 2 / 2)) < (c * x) not#1";
neuper@37906
   125
neuper@37906
   126
if ord_simplify_System false thy [] (str2term"-1 * q_0 * (x ^^^ 2 / 2)", 
neuper@37906
   127
				       str2term"c_2") then ()
neuper@38031
   128
else error "integrate.sml, (-1 * q_0 * (x ^^^ 2 / 2)) < (c_2) not#2";
neuper@37906
   129
neuper@37906
   130
if ord_simplify_System false thy [] (str2term"c * x", 
neuper@37906
   131
				       str2term"c_2") then ()
neuper@38031
   132
else error "integrate.sml, (c * x) < (c_2) not#3";
neuper@37906
   133
neuper@37906
   134
"--- mult_commute ---";
neuper@37906
   135
if ord_simplify_System false thy [] (str2term"x * c", 
neuper@37906
   136
				       str2term"c * x") then ()
neuper@38031
   137
else error "integrate.sml, (x * c) < (c * x) not#4";
neuper@37906
   138
neuper@37906
   139
if ord_simplify_System false thy [] (str2term"-1 * q_0 * (x ^^^ 2 / 2) * c", 
neuper@37906
   140
				       str2term"-1 * q_0 * c * (x ^^^ 2 / 2)") 
neuper@38031
   141
then () else error "integrate.sml, (. * .) < (. * .) not#5";
neuper@37906
   142
neuper@37906
   143
if ord_simplify_System false thy [] (str2term"-1 * q_0 * (x ^^^ 2 / 2) * c", 
neuper@37906
   144
				       str2term"c * -1 * q_0 * (x ^^^ 2 / 2)") 
neuper@38031
   145
then () else error "integrate.sml, (. * .) < (. * .) not#6";
neuper@37906
   146
neuper@37906
   147
wneuper@59370
   148
"----------- rewrite in [EqSystem,normalise,2x2] -----------------";
wneuper@59370
   149
"----------- rewrite in [EqSystem,normalise,2x2] -----------------";
wneuper@59370
   150
"----------- rewrite in [EqSystem,normalise,2x2] -----------------";
neuper@37906
   151
val t = str2term"[0 = -1 * q_0 * L ^^^ 2 / 2 + L * c + c_2,\
neuper@37906
   152
	        \0 = -1 * q_0 * 0 ^^^ 2 / 2 + 0 * c + c_2]";
neuper@37906
   153
val bdvs = [(str2term"bdv_1",str2term"c"),
neuper@37906
   154
	    (str2term"bdv_2",str2term"c_2")];
neuper@37926
   155
val SOME(t,_)= rewrite_set_inst_ thy true bdvs simplify_System_parenthesized t;
neuper@37906
   156
if term2str t = "[0 = -1 * q_0 * L ^^^ 2 / 2 + (L * c + c_2), 0 = c_2]"
neuper@38031
   157
then () else error "eqsystem.sml rewrite in 2x2 simplify_System_par.1";
neuper@37906
   158
neuper@37926
   159
val SOME (t,_) = rewrite_set_inst_ thy true bdvs isolate_bdvs t;
t@42197
   160
if term2str t = "[L * c + c_2 = 0 + -1 * (-1 * q_0 * L ^^^ 2 / 2), c_2 = 0]"then () else error "eqsystem.sml rewrite in 2x2 isolate_bdvs";
neuper@37906
   161
neuper@37926
   162
val SOME(t,_)= rewrite_set_inst_ thy true bdvs simplify_System t;
neuper@37906
   163
if term2str t = "[L * c + c_2 = q_0 * L ^^^ 2 / 2, c_2 = 0]"
neuper@38031
   164
then () else error "eqsystem.sml rewrite in 2x2 simplify_System_par.2";
neuper@37906
   165
t@42197
   166
"--- 3--- see EqSystem.thy (*..if replaced by 'and' ...";
neuper@37926
   167
val SOME (t,_) = rewrite_set_ thy true order_system t;
neuper@37906
   168
if term2str t = "[c_2 = 0, L * c + c_2 = q_0 * L ^^^ 2 / 2]"
neuper@38031
   169
then () else error "eqsystem.sml rewrite in 2x2 simplify_System_par.3";
t@42197
   170
"--- 4---";
neuper@37906
   171
wneuper@59370
   172
"----------- rewrite example from 2nd [EqSystem,normalise,2x2] ---";
wneuper@59370
   173
"----------- rewrite example from 2nd [EqSystem,normalise,2x2] ---";
wneuper@59370
   174
"----------- rewrite example from 2nd [EqSystem,normalise,2x2] ---";
wneuper@59592
   175
val thy = @{theory "Isac_Knowledge"} (*because of Undeclared constant "Biegelinie.EI*);
neuper@37906
   176
val t = 
neuper@37906
   177
    str2term"[0 = c_2 + c * 0 + 1 / EI * (L * q_0 / 12 * 0 ^^^ 3 +         \
neuper@37906
   178
	    \                                     -1 * q_0 / 24 * 0 ^^^ 4),\
neuper@37906
   179
	    \ 0 = c_2 + c * L + 1 / EI * (L * q_0 / 12 * L ^^^ 3 +         \
neuper@37906
   180
	    \                                     -1 * q_0 / 24 * L ^^^ 4)]";
neuper@37926
   181
val SOME (t,_) = rewrite_set_ thy true norm_Rational t;
wneuper@59533
   182
if term2str t =
wneuper@59533
   183
    "[0 = c_2, 0 = (24 * c_2 * EI + 24 * L * c * EI + L ^^^ 4 * q_0) / (24 * EI)]"
neuper@38031
   184
then () else error "eqsystem.sml rewrite in 2x2 simplify_System_par.0b";
neuper@37906
   185
neuper@37926
   186
val SOME(t,_)= rewrite_set_inst_ thy true bdvs simplify_System_parenthesized t;
wneuper@59531
   187
if term2str t = (*"[0 = 0 / EI + c_2, 0 = q_0 * L ^^^ 4 / (24 * EI) + (L * c + c_2)]"*)
wneuper@59531
   188
                           "[0 = c_2, 0 = q_0 * L ^^^ 4 / (24 * EI) + (L * c + c_2)]"
neuper@38031
   189
then () else error "eqsystem.sml rewrite in 2x2 simplify_System_par.1b";
neuper@37906
   190
neuper@37926
   191
val SOME (t,_) = rewrite_set_inst_ thy true bdvs isolate_bdvs t;
wneuper@59531
   192
if term2str t = (*"[c_2 = 0 + -1 * (0 / EI),\n L * c + c_2 = 0 + -1 * (q_0 * L ^^^ 4 / (24 * EI))]"*)
wneuper@59531
   193
                                    "[c_2 = 0, L * c + c_2 = 0 + -1 * (q_0 * L ^^^ 4 / (24 * EI))]"
neuper@38031
   194
then () else error "eqsystem.sml rewrite in 2x2 isolate_bdvs b";
neuper@37906
   195
neuper@37926
   196
val SOME(t,_)= rewrite_set_inst_ thy true bdvs simplify_System t;
wneuper@59531
   197
if term2str t = (*"[c_2 = 0 / EI, L * c + c_2 = -1 * q_0 * L ^^^ 4 / (24 * EI)]"*)
wneuper@59531
   198
                       "[c_2 = 0, L * c + c_2 = -1 * q_0 * L ^^^ 4 / (24 * EI)]"
neuper@38031
   199
then () else error "eqsystem.sml rewrite in 2x2 simplify_System.2b";
neuper@37906
   200
neuper@37906
   201
val xxx = rewrite_set_ thy true order_system t;
neuper@37906
   202
if is_none xxx
neuper@38031
   203
then () else error "eqsystem.sml rewrite in 2x2 simplify_System.3b";
neuper@37906
   204
neuper@37906
   205
neuper@37906
   206
"----------- rewrite in [EqSystem,top_down_substitution,2x2] -----";
neuper@37906
   207
"----------- rewrite in [EqSystem,top_down_substitution,2x2] -----";
neuper@37906
   208
"----------- rewrite in [EqSystem,top_down_substitution,2x2] -----";
neuper@37906
   209
val e1__ = str2term "c_2 = 77";
neuper@37906
   210
val e2__ = str2term "L * c + c_2 = q_0 * L ^^^ 2 / 2";
neuper@37906
   211
val bdvs = [(str2term"bdv_1",str2term"c"),
neuper@37906
   212
	    (str2term"bdv_2",str2term"c_2")];
neuper@37926
   213
val SOME (e2__,_) = rewrite_terms_ thy dummy_ord Erls [e1__] e2__;
neuper@37906
   214
if term2str e2__ = "L * c + 77 = q_0 * L ^^^ 2 / 2" then ()
neuper@38031
   215
else error "eqsystem.sml top_down_substitution,2x2] subst";
neuper@37906
   216
neuper@37926
   217
val SOME (e2__,_) = 
neuper@37906
   218
    rewrite_set_inst_ thy true bdvs simplify_System_parenthesized e2__;
neuper@37906
   219
if term2str e2__ = "77 + L * c = q_0 * L ^^^ 2 / 2" then ()
neuper@38031
   220
else error "eqsystem.sml top_down_substitution,2x2] simpl_par";
neuper@37906
   221
neuper@37926
   222
val SOME (e2__,_) = rewrite_set_inst_ thy true bdvs isolate_bdvs e2__;
neuper@37906
   223
if term2str e2__ = "c = (q_0 * L ^^^ 2 / 2 + -1 * 77) / L" then ()
neuper@38031
   224
else error "eqsystem.sml top_down_substitution,2x2] isolate";
neuper@37906
   225
neuper@37906
   226
val t = str2term "[c_2 = 77, c = (q_0 * L ^^^ 2 / 2 + -1 * 77) / L]";
neuper@37926
   227
val SOME (t,_) = rewrite_set_ thy true order_system t;
neuper@37906
   228
if term2str t = "[c = (q_0 * L ^^^ 2 / 2 + -1 * 77) / L, c_2 = 77]" then ()
neuper@38031
   229
else error "eqsystem.sml top_down_substitution,2x2] order_system";
neuper@37906
   230
neuper@37906
   231
if not (ord_simplify_System
neuper@37906
   232
	    false thy [] 
neuper@37906
   233
	    (str2term"[c_2 = 77, c = (q_0 * L ^^^ 2 / 2 + -1 * 77) / L]", 
neuper@37906
   234
	     str2term"[c = (q_0 * L ^^^ 2 / 2 + -1 * 77) / L, c_2 = 77]")) 
neuper@38031
   235
then () else error "eqsystem.sml, order_result rew_ord";
neuper@37906
   236
neuper@37906
   237
wneuper@59370
   238
"----------- rewrite in [EqSystem,normalise,4x4] -----------------";
wneuper@59370
   239
"----------- rewrite in [EqSystem,normalise,4x4] -----------------";
wneuper@59370
   240
"----------- rewrite in [EqSystem,normalise,4x4] -----------------";
wneuper@59370
   241
(*STOPPED.WN06?: revise rewrite in [EqSystem,normalise,4x4] from before 0609*)
neuper@37906
   242
val t = str2term"[0 = -1 * q_0 * 0 ^^^ 2 / 2 + 0 * c_3 + c_4,\
neuper@37906
   243
	        \0 = -1 * q_0 * L ^^^ 2 / 2 + L * c_3 + c_4,\
neuper@37906
   244
		\c + c_2 + c_3 + c_4 = 0,\
neuper@37906
   245
		\c_2 + c_3 + c_4 = 0]";
neuper@37906
   246
val bdvs = [(str2term"bdv_1",str2term"c"),
neuper@37906
   247
	    (str2term"bdv_2",str2term"c_2"),
neuper@37906
   248
	    (str2term"bdv_3",str2term"c_3"),
neuper@37906
   249
	    (str2term"bdv_4",str2term"c_4")];
neuper@37926
   250
val SOME (t,_) = 
neuper@37906
   251
    rewrite_set_inst_ thy true bdvs simplify_System_parenthesized t;
neuper@37906
   252
if term2str t = "[0 = c_4, 0 = -1 * q_0 * L ^^^ 2 / 2 + (L * c_3 + c_4),\n\
neuper@37906
   253
	        \ c + (c_2 + (c_3 + c_4)) = 0, c_2 + (c_3 + c_4) = 0]"
neuper@38031
   254
then () else error "eqsystem.sml rewrite in 4x4 simplify_System_paren";
neuper@37906
   255
neuper@37926
   256
val SOME (t,_) = rewrite_set_inst_ thy true bdvs isolate_bdvs t;
neuper@37906
   257
if term2str t = "[c_4 = 0, \
neuper@37906
   258
	        \L * c_3 + c_4 = 0 + -1 * (-1 * q_0 * L ^^^ 2 / 2),\n \
neuper@37906
   259
		\c + (c_2 + (c_3 + c_4)) = 0, c_2 + (c_3 + c_4) = 0]"
neuper@38031
   260
then () else error "eqsystem.sml rewrite in 4x4 isolate_bdvs";
neuper@37906
   261
neuper@37926
   262
val SOME(t,_)= rewrite_set_inst_ thy true bdvs simplify_System_parenthesized t;
neuper@37906
   263
if term2str t = "[c_4 = 0,\
neuper@37906
   264
		\ L * c_3 + c_4 = q_0 * L ^^^ 2 / 2,\
neuper@37906
   265
		\ c + (c_2 + (c_3 + c_4)) = 0,\n\
neuper@37906
   266
		\ c_2 + (c_3 + c_4) = 0]"
neuper@38031
   267
then () else error "eqsystem.sml rewrite in 4x4 simplify_System_p..2";
neuper@37906
   268
neuper@37926
   269
val SOME (t,_) = rewrite_set_ thy true order_system t;
neuper@37906
   270
if term2str t = "[c_4 = 0,\
neuper@37906
   271
		\ L * c_3 + c_4 = q_0 * L ^^^ 2 / 2,\
neuper@37906
   272
		\ c_2 + (c_3 + c_4) = 0,\n\
neuper@37906
   273
		\ c + (c_2 + (c_3 + c_4)) = 0]"
neuper@38031
   274
then () else error "eqsystem.sml rewrite in 4x4 order_system";
neuper@37906
   275
neuper@37906
   276
"----------- refine [linear,system]-------------------------------";
neuper@37906
   277
"----------- refine [linear,system]-------------------------------";
neuper@37906
   278
"----------- refine [linear,system]-------------------------------";
neuper@42391
   279
val fmz =
neuper@42391
   280
  ["equalities [0 = -1 * q_0 * 0 ^^^ 2 / 2 + 0 * c + c_2," ^
neuper@42391
   281
               "0 = -1 * q_0 * L ^^^ 2 / 2 + L * c + (c_2::real)]", 
neuper@42391
   282
	   "solveForVars [c, c_2]", "solution LL"];
neuper@42391
   283
neuper@55276
   284
(*WN120313 in "solution L" above "refine fmz ["LINEAR","system"]" caused an error...*)
neuper@55276
   285
"~~~~~ fun refine, args:"; val ((fmz:fmz_), (pblID:pblID)) = (fmz, ["LINEAR","system"]);
neuper@42391
   286
"~~~~~ fun refin', args:"; val ((pblRD: pblRD), fmz, pbls, ((Ptyp (pI, [py], [])): pbt ptyp)) =
neuper@42391
   287
   ((rev o tl) pblID, fmz, [(*match list*)],
neuper@55276
   288
     ((Ptyp ("LINEAR", [get_pbt ["LINEAR","system"]], [])): pbt ptyp));
neuper@42391
   289
      val {thy, ppc, where_, prls, ...} = py ;
neuper@42391
   290
"~~~~~ fun prep_ori, args:"; val (fmz, thy, pbt) = (fmz, thy, ppc);
neuper@48761
   291
        val ctxt = Proof_Context.init_global thy;
neuper@42391
   292
"~~~~~ fun declare_constraints, args:"; val (t, ctxt) = (nth 1 fmz, ctxt);
neuper@42391
   293
      fun get_vars ((v,T)::vs) = (case raw_explode v |> Library.read_int of
neuper@42391
   294
              (_, _::_) => (Free (v,T)::get_vars vs)
neuper@42391
   295
            | (_, []  ) => get_vars vs) (*filter out nums as long as 
neuper@42391
   296
                                          we have Free ("123",_)*)
neuper@42391
   297
        | get_vars [] = [];
neuper@42391
   298
                                        t = "equalities [0 = -1 * q_0 * 0 ^^^ 2 / 2 + 0 * c + c_2,"^
neuper@42391
   299
                                            "0 = -1 * q_0 * L ^^^ 2 / 2 + L * c + (c_2::real)]";
neuper@42391
   300
      val ts = Term.add_frees (Syntax.read_term ctxt t) [] |> get_vars;
neuper@42391
   301
val ctxt = Variable.declare_constraints (nth 1 ts) ctxt;
neuper@42391
   302
val ctxt = Variable.declare_constraints (nth 2 ts) ctxt;
neuper@42391
   303
val ctxt = Variable.declare_constraints (nth 3 ts) ctxt;
neuper@42391
   304
val ctxt = Variable.declare_constraints (nth 4 ts) ctxt;
neuper@42391
   305
                                        val t = nth 2 fmz; t = "solveForVars [c, c_2]";
neuper@42391
   306
      val ts = Term.add_frees (Syntax.read_term ctxt t) [] |> get_vars;
neuper@42391
   307
val ctxt = Variable.declare_constraints (nth 1 ts) ctxt;
neuper@42391
   308
                                        val t = nth 3 fmz; t = "solution LL";
neuper@42391
   309
      (*(Syntax.read_term ctxt t); 
neuper@42391
   310
Type unification failed: Clash of types "real" and "_ list"
neuper@42391
   311
Type error in application: incompatible operand type
neuper@42391
   312
neuper@42391
   313
Operator:  solution :: bool list \<Rightarrow> toreall
neuper@42391
   314
Operand:   L :: real                 ========== L was already present in equalities ========== *)
neuper@42391
   315
neuper@42391
   316
"===== case 1 =====";
neuper@55276
   317
val matches = refine fmz ["LINEAR","system"];
neuper@42391
   318
case matches of 
neuper@55276
   319
 [Matches (["LINEAR", "system"], _),
neuper@55276
   320
  Matches (["2x2", "LINEAR", "system"], _),
neuper@55276
   321
  NoMatch (["triangular", "2x2", "LINEAR", "system"], _),
wneuper@59367
   322
		  Matches (["normalise", "2x2", "LINEAR", "system"],
neuper@42391
   323
			    {Find = [Correct "solution LL"],
neuper@42391
   324
			     With = [],
neuper@42391
   325
			     Given =
neuper@42391
   326
			       [Correct
neuper@37906
   327
				"equalities\n [0 = -1 * q_0 * 0 ^^^ 2 / 2 + 0 * c + c_2,\n  0 = -1 * q_0 * L ^^^ 2 / 2 + L * c + c_2]",
neuper@42391
   328
				        Correct "solveForVars [c, c_2]"],
neuper@42391
   329
				     Where = [],
neuper@42391
   330
				     Relate = []})] => ()
wneuper@59370
   331
| _ => error "eqsystem.sml refine ['normalise','2x2'...]";
neuper@37906
   332
neuper@42391
   333
"===== case 2 =====";
neuper@37906
   334
val fmz = ["equalities [c_2 = 0, L * c + c_2 = q_0 * L ^^^ 2 / 2]", 
neuper@42391
   335
	   "solveForVars [c, c_2]", "solution LL"];
neuper@55276
   336
val matches = refine fmz ["LINEAR","system"];
neuper@37906
   337
case matches of [_,_,
neuper@42391
   338
		  Matches
neuper@55276
   339
		    (["triangular", "2x2", "LINEAR", "system"],
neuper@42391
   340
		      {Find = [Correct "solution LL"],
neuper@37906
   341
		       With = [],
neuper@37906
   342
		       Given =
neuper@42391
   343
		        [Correct "equalities [c_2 = 0, L * c + c_2 = q_0 * L ^^^ 2 / 2]",
neuper@42391
   344
		         Correct "solveForVars [c, c_2]"],
neuper@42391
   345
		       Where = [Correct
neuper@42391
   346
			"tl [c, c_2] from [c, c_2] occur_exactly_in NTH 1\n      [c_2 = 0, L * c + c_2 = q_0 * L ^^^ 2 / 2]",
neuper@42391
   347
			                Correct
neuper@42391
   348
				"[c, c_2] from [c, c_2] occur_exactly_in NTH 2\n   [c_2 = 0, L * c + c_2 = q_0 * L ^^^ 2 / 2]"],
neuper@37906
   349
		       Relate = []})] => ()
neuper@42391
   350
| _ => error "eqsystem.sml refine ['triangular','2x2'...]";
neuper@37906
   351
neuper@37906
   352
(*WN051014---------------------------------------------------------------- 
neuper@55276
   353
  the above 'val matches = refine fmz ["LINEAR","system"]'
neuper@37906
   354
  didn't work anymore; we investigated in these steps:*)
neuper@37906
   355
val fmz = ["equalities [c_2 = 0, L * c + c_2 = q_0 * L ^^^ 2 / 2]", 
neuper@42391
   356
	  "solveForVars [c, c_2]", "solution LL"];
neuper@55276
   357
val matches = refine fmz ["triangular", "2x2", "LINEAR","system"];
neuper@37906
   358
(*... resulted in 
neuper@37906
   359
   False "[c, c_2] from_ [c, c_2] occur_exactly_in nth_ 2\n    
neuper@37906
   360
          [c_2 = 0, L * c + c_2 = q_0 * L ^^^ 2 / 2]"]*)
neuper@42391
   361
val t = str2term ("[c, c_2] from [c, c_2] occur_exactly_in NTH 2" ^   
neuper@42391
   362
		  "[c_2 = 0, L * c + c_2 = q_0 * L ^^^ 2 / 2]");
neuper@52101
   363
trace_rewrite := false;
neuper@37926
   364
val SOME (t',_) = rewrite_set_ thy false prls_triangular t;
neuper@37906
   365
(*found:...
neuper@42390
   366
##  try thm: NTH_CONS
neuper@37906
   367
###  eval asms: 1 < 2 + - 1
neuper@37906
   368
==> nth_ (2 + - 1) [L * c + c_2 = q_0 * L ^^^ 2 / 2] =
neuper@37906
   369
    nth_ (2 + - 1 + - 1) []
neuper@37906
   370
####  rls: erls_prls_triangular on: 1 < 2 + - 1
neuper@37906
   371
#####  try calc: op <'
neuper@37906
   372
###  asms accepted: ["1 < 2 + - 1"]   stored: ["1 < 2 + -1"]
neuper@37906
   373
neuper@38014
   374
... i.e Calc ("Groups.plus_class.plus", eval_binop "#add_") was missing in erls_prls_triangular*)
neuper@37906
   375
trace_rewrite:=false;
t@42166
   376
neuper@42391
   377
"===== case 3: relaxed preconditions for triangular system =====";
neuper@42391
   378
val fmz = ["equalities [L * q_0 = c,                               \
neuper@42391
   379
	   \            0 = (2 * c_2 + 2 * L * c + -1 * L ^^^ 2 * q_0) / 2,\
neuper@42391
   380
	   \            0 = c_4,                                           \
neuper@42391
   381
	   \            0 = c_3]", 
neuper@42391
   382
	   "solveForVars [c, c_2, c_3, c_4]", "solution LL"];
neuper@42391
   383
(*============ inhibit exn WN120314 TODO: investigate type error (same) in these 2 cases:
neuper@42391
   384
probably exn thrown by fun declare_constraints
neuper@42391
   385
/-------------------------------------------------------\
neuper@42391
   386
Type unification failed
neuper@42391
   387
Type error in application: incompatible operand type
neuper@37906
   388
neuper@42391
   389
Operator:  op # c_3 :: 'a list \<Rightarrow> 'a list
neuper@42391
   390
Operand:   [c_4] :: 'b list
neuper@42391
   391
\-------------------------------------------------------/
neuper@55276
   392
val matches = refine fmz ["LINEAR","system"];
neuper@37906
   393
case matches of 
neuper@55276
   394
    [Matches (["LINEAR", "system"], _),
neuper@55276
   395
     NoMatch (["2x2", "LINEAR", "system"], _),
neuper@55276
   396
     NoMatch (["3x3", "LINEAR", "system"], _),
neuper@55276
   397
     Matches (["4x4", "LINEAR", "system"], _),
neuper@55276
   398
     NoMatch (["triangular", "4x4", "LINEAR", "system"], _),
wneuper@59367
   399
     Matches (["normalise", "4x4", "LINEAR", "system"], _)] => ()
neuper@38031
   400
  | _ => error "eqsystem.sml: refine relaxed triangular sys NoMatch";
neuper@37906
   401
(*WN060914 does NOT match, because 3rd and 4th equ are not ordered*)
neuper@37906
   402
neuper@42391
   403
"===== case 4 =====";
neuper@37906
   404
val fmz = ["equalities [L * q_0 = c,                                       \
neuper@37906
   405
	   \            0 = (2 * c_2 + 2 * L * c + -1 * L ^^^ 2 * q_0) / 2,\
neuper@37906
   406
	   \            0 = c_3,                           \
neuper@37906
   407
	   \            0 = c_4]", 
neuper@42391
   408
	   "solveForVars [c, c_2, c_3, c_4]", "solution LL"];
neuper@55276
   409
val matches = refine fmz ["triangular", "4x4", "LINEAR","system"];
neuper@37906
   410
case matches of 
neuper@55276
   411
    [Matches (["triangular", "4x4", "LINEAR", "system"], _)] => ()
neuper@38031
   412
  | _ => error "eqsystem.sml: refine relaxed triangular sys Matches";
neuper@55276
   413
val matches = refine fmz ["LINEAR","system"];
neuper@42391
   414
============ inhibit exn WN120314 ==============================================*)
neuper@37906
   415
neuper@37906
   416
"----------- refine [2x2,linear,system] search error--------------";
neuper@37906
   417
"----------- refine [2x2,linear,system] search error--------------";
neuper@37906
   418
"----------- refine [2x2,linear,system] search error--------------";
neuper@55276
   419
(*didn't go into ["2x2", "LINEAR", "system"]; 
neuper@37906
   420
  we investigated in these steps:*)
neuper@37906
   421
val fmz = ["equalities [0 = -1 * q_0 * 0 ^^^ 2 / 2 + 0 * c + c_2,\
neuper@37906
   422
	               \0 = -1 * q_0 * L ^^^ 2 / 2 + L * c + c_2]", 
neuper@42391
   423
	   "solveForVars [c, c_2]", "solution LL"];
neuper@52101
   424
trace_rewrite := false;
neuper@55276
   425
val matches = refine fmz ["2x2", "LINEAR","system"];
neuper@37906
   426
trace_rewrite:=false;
wneuper@59348
   427
(*default_print_depth 11;*) matches; (*default_print_depth 3;*)
neuper@37906
   428
(*brought: 'False "length_ es_ = 2"'*)
neuper@37906
   429
neuper@37906
   430
(*-----fun refin' (pblRD:pblRD) fmz pbls ((Ptyp (pI,[py],[])):pbt ptyp) =
neuper@37906
   431
(* val ((pblRD:pblRD), fmz, pbls, ((Ptyp (pI,[py],[])):pbt ptyp)) =
neuper@55276
   432
       (rev ["LINEAR","system"], fmz, [(*match list*)],
neuper@55276
   433
	((Ptyp ("2x2",[get_pbt ["2x2","LINEAR","system"]],[])):pbt ptyp));
neuper@37906
   434
   *)
neuper@37906
   435
> show_types:=true; term2str (hd where_); show_types:=false;
neuper@37906
   436
val it = "length_ (es_::real list) = (2::real)" : string
neuper@37906
   437
neuper@37906
   438
=========================================================================\
neuper@37906
   439
-------fun prep_pbt
neuper@37906
   440
(* val (thy, (pblID, dsc_dats: (string * (string list)) list, 
neuper@37906
   441
		  ev:rls, ca: string option, metIDs:metID list)) =
neuper@37906
   442
       (EqSystem.thy, (["system"],
neuper@37995
   443
		       [("#Given" ,["equalities es_", "solveForVars v_s"]),
neuper@37906
   444
			("#Find"  ,["solution ss___"](*___ is copy-named*))
neuper@37906
   445
			],
neuper@37906
   446
		       append_rls "e_rls" e_rls [(*for preds in where_*)], 
neuper@37995
   447
		       SOME "solveSystem es_ v_s", 
neuper@37906
   448
		       []));
neuper@37906
   449
   *)
neuper@37995
   450
> val [("#Given", [equalities_es_, "solveForVars v_s"])] = gi;
neuper@37906
   451
val equalities_es_ = "equalities es_" : string
wneuper@59188
   452
> val (dd, ii) = (split_did o Thm.term_of o the o (parse thy)) equalities_es_;
neuper@37906
   453
> show_types:=true; term2str ii; show_types:=false;
neuper@37906
   454
val it = "es_::bool list" : string
neuper@37906
   455
~~~~~~~~~~~~~~~^^^^^^^^^ OK~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
neuper@37906
   456
neuper@55276
   457
> val {where_,...} = get_pbt ["2x2", "LINEAR","system"];
neuper@37906
   458
> show_types:=true; term2str (hd where_); show_types:=false;
neuper@37906
   459
neuper@37906
   460
=========================================================================/
neuper@37906
   461
neuper@37906
   462
-----fun refin' ff:
wneuper@59592
   463
> (writeln o (itms2str_ (thy2ctxt @{theory Isac_Knowledge}))) itms;
neuper@37906
   464
[
neuper@37906
   465
(1 ,[1] ,true ,#Given ,Cor equalities
neuper@37906
   466
 [0 = -1 * q_0 * 0 ^^^ 2 / 2 + 0 * c + c_2,
neuper@37906
   467
  0 = -1 * q_0 * L ^^^ 2 / 2 + L * c + c_2] ,(es_, [[0 = -1 * q_0 * 0 ^^^ 2 / 2 + 0 * c + c_2,
neuper@37906
   468
 0 = -1 * q_0 * L ^^^ 2 / 2 + L * c + c_2]])),
neuper@37995
   469
(2 ,[1] ,true ,#Given ,Cor solveForVars [c, c_2] ,(v_s, [[c, c_2]])),
neuper@37906
   470
(3 ,[1] ,true ,#Find ,Cor solution L ,(ss___, [L]))]
neuper@37906
   471
neuper@37906
   472
> (writeln o pres2str) pre';
neuper@37906
   473
[
neuper@37906
   474
(false, length_ es_ = 2),
neuper@37906
   475
(true, length_ [c, c_2] = 2)]
neuper@37906
   476
neuper@37906
   477
----- fun match_oris':
wneuper@59592
   478
> (writeln o (itms2str_ (thy2ctxt @{theory Isac_Knowledge}))) itms;
neuper@37906
   479
> (writeln o pres2str) pre';
neuper@37906
   480
..as in refin'
neuper@37906
   481
neuper@37906
   482
----- fun check_preconds'
neuper@37906
   483
> (writeln o env2str) env;
neuper@37906
   484
["
neuper@37906
   485
(es_, [0 = -1 * q_0 * 0 ^^^ 2 / 2 + 0 * c + c_2,
neuper@37906
   486
 0 = -1 * q_0 * L ^^^ 2 / 2 + L * c + c_2])","
neuper@37995
   487
(v_s, [c, c_2])","
neuper@37906
   488
(ss___, L)"]
neuper@37906
   489
neuper@37906
   490
> val es_ = (fst o hd) env;
neuper@37906
   491
val es_ = Free ("es_", "bool List.list") : Term.term
neuper@37906
   492
neuper@37906
   493
> val pre1 = hd pres;
neuper@37906
   494
atomty pre1;
neuper@37906
   495
***
neuper@37906
   496
*** Const (op =, [real, real] => bool)
neuper@37906
   497
*** . Const (ListG.length_, real list => real)
neuper@37906
   498
*** . . Free (es_, real list)
neuper@37906
   499
~~~~~~~~~~~~~~~~~~~^^^^^^^^^ should be bool list~~~~~~~~~~~~~~~~~~~
neuper@37906
   500
*** . Free (2, real)
neuper@37906
   501
***
neuper@37906
   502
neuper@37906
   503
THE REASON WAS A non-type-constrained variable IN #WHERE OF PROBLEM
neuper@37906
   504
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
neuper@37906
   505
*)
neuper@37906
   506
wneuper@59370
   507
"----------- me [EqSystem,normalise,2x2] -------------------------";
wneuper@59370
   508
"----------- me [EqSystem,normalise,2x2] -------------------------";
wneuper@59370
   509
"----------- me [EqSystem,normalise,2x2] -------------------------";
neuper@37906
   510
val fmz = ["equalities [0 = -1 * q_0 * 0 ^^^ 2 / 2 + 0 * c + c_2,\
neuper@37906
   511
	               \0 = -1 * q_0 * L ^^^ 2 / 2 + L * c + c_2]", 
neuper@42391
   512
	   "solveForVars [c, c_2]", "solution LL"];
neuper@37906
   513
val (dI',pI',mI') =
wneuper@59367
   514
  ("Biegelinie",["normalise", "2x2", "LINEAR", "system"],
wneuper@59367
   515
   ["EqSystem","normalise","2x2"]);
neuper@37906
   516
val p = e_pos'; val c = []; 
neuper@37906
   517
val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
neuper@37906
   518
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37906
   519
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37906
   520
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37906
   521
val (p,_,f,nxt,_,pt) = me nxt p c pt;
walther@59749
   522
case nxt of Specify_Method ["EqSystem", "normalise", "2x2"] => ()
wneuper@59370
   523
	  | _ => error "eqsystem.sml [EqSystem,normalise,2x2] specify";
neuper@37906
   524
neuper@37906
   525
val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37906
   526
val (p,_,f,nxt,_,pt) = me nxt p c pt;f2str f;
neuper@37906
   527
val (p,_,f,nxt,_,pt) = me nxt p c pt;f2str f(*["(bdv_1, c)", "(bdv_2, hd (tl [c, c_2] ... corrected srls; ran only AFTER use"RCODE-root.sml", store_met was NOT SUFFICIENT*);
neuper@37906
   528
val (p,_,f,nxt,_,pt) = me nxt p c pt;f2str f;
neuper@37906
   529
val (p,_,f,nxt,_,pt) = me nxt p c pt;f2str f;
neuper@37906
   530
val (p,_,f,nxt,_,pt) = me nxt p c pt;f2str f;
neuper@37906
   531
case nxt of
walther@59749
   532
    (Subproblem ("Biegelinie", ["triangular", "2x2", "LINEAR",_])) => ()
wneuper@59370
   533
  | _ => error "eqsystem.sml me [EqSystem,normalise,2x2] SubProblem";
neuper@37906
   534
neuper@37906
   535
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37906
   536
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37906
   537
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37906
   538
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37906
   539
case nxt of
walther@59749
   540
    (Specify_Method ["EqSystem", "top_down_substitution", "2x2"]) => ()
neuper@38031
   541
  | _ => error "eqsystem.sml me [EqSys...2x2] top_down_substitution";
neuper@37906
   542
neuper@37906
   543
val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37924
   544
val PblObj {probl,...} = get_obj I pt [5];
wneuper@59592
   545
    (writeln o (itms2str_ (thy2ctxt @{theory Isac_Knowledge}))) probl;
neuper@37906
   546
(*[
neuper@37906
   547
(1 ,[1] ,true ,#Given ,Cor equalities [c_2 = 0, L * c + c_2 = q_0 * L ^^^ 2 / 2] ,(es_, [[c_2 = 0, L * c + c_2 = q_0 * L ^^^ 2 / 2]])),
neuper@37995
   548
(2 ,[1] ,true ,#Given ,Cor solveForVars [c, c_2] ,(v_s, [[c, c_2]])),
neuper@37906
   549
(3 ,[1] ,true ,#Find ,Cor solution ss___ ,(ss___, [ss___]))]
neuper@37906
   550
*)
neuper@37906
   551
val (p,_,f,nxt,_,pt) = me nxt p c pt;f2str f;
neuper@37906
   552
val (p,_,f,nxt,_,pt) = me nxt p c pt;f2str f;
neuper@37906
   553
val (p,_,f,nxt,_,pt) = me nxt p c pt;f2str f;
neuper@37906
   554
val (p,_,f,nxt,_,pt) = me nxt p c pt;f2str f;
neuper@37906
   555
val (p,_,f,nxt,_,pt) = me nxt p c pt;f2str f;
neuper@37906
   556
val (p,_,f,nxt,_,pt) = me nxt p c pt;f2str f;
neuper@37906
   557
val (p,_,f,nxt,_,pt) = me nxt p c pt;f2str f;
neuper@37906
   558
val (p,_,f,nxt,_,pt) = me nxt p c pt;f2str f;
neuper@37906
   559
case nxt of
walther@59749
   560
    (Check_Postcond ["triangular", "2x2", "LINEAR", "system"]) => ()
neuper@38031
   561
  | _ => error "eqsystem.sml me Subpbl .[EqSys...2x2] finished";
neuper@37906
   562
val (p,_,f,nxt,_,pt) = me nxt p c pt;f2str f;
neuper@37906
   563
val (p,_,f,nxt,_,pt) = me nxt p c pt;f2str f;
neuper@37906
   564
if f2str f = "[c = L * q_0 / 2, c_2 = 0]" then ()
neuper@38031
   565
else error "eqsystem.sml me [EqSys...2x2] finished f2str f";
neuper@37906
   566
case nxt of
walther@59749
   567
    (End_Proof') => ()
neuper@38031
   568
  | _ => error "eqsystem.sml me [EqSys...2x2] finished End_Proof'";
neuper@37906
   569
wneuper@59370
   570
"----------- me [linear,system] ..normalise..top_down_sub..-------";
wneuper@59370
   571
"----------- me [linear,system] ..normalise..top_down_sub..-------";
wneuper@59370
   572
"----------- me [linear,system] ..normalise..top_down_sub..-------";
neuper@37906
   573
val fmz = 
neuper@37906
   574
    ["equalities\
neuper@37906
   575
     \[0 = c_2 + c * 0 + 1 / EI * (L * q_0 / 12 * 0 ^^^ 3 +                \
neuper@37906
   576
     \                                            -1 * q_0 / 24 * 0 ^^^ 4),\
neuper@37906
   577
     \ 0 = c_2 + c * L + 1 / EI * (L * q_0 / 12 * L ^^^ 3 +                \
neuper@37906
   578
     \                                            -1 * q_0 / 24 * L ^^^ 4)]",
neuper@42391
   579
     "solveForVars [c, c_2]", "solution LL"];
neuper@37906
   580
val (dI',pI',mI') =
neuper@55276
   581
  ("Biegelinie",["LINEAR", "system"], ["no_met"]);
neuper@37906
   582
val p = e_pos'; val c = []; 
neuper@37906
   583
val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
neuper@37906
   584
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37906
   585
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37906
   586
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37906
   587
val (p,_,f,nxt,_,pt) = me nxt p c pt;
walther@59749
   588
case nxt of (Specify_Method ["EqSystem", "normalise", "2x2"]) => ()
neuper@38031
   589
	  | _ => error "eqsystem.sml [linear,system] specify b";
neuper@37906
   590
val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37906
   591
val (p,_,f,nxt,_,pt) = me nxt p c pt;f2str f;
neuper@37906
   592
val (p,_,f,nxt,_,pt) = me nxt p c pt;f2str f;
neuper@37906
   593
val (p,_,f,nxt,_,pt) = me nxt p c pt;f2str f;
neuper@37906
   594
val (p,_,f,nxt,_,pt) = me nxt p c pt;f2str f;
neuper@37906
   595
val (p,_,f,nxt,_,pt) = me nxt p c pt;f2str f;
neuper@37906
   596
if f2str f = 
wneuper@59531
   597
"[c_2 = 0, L * c + c_2 = -1 * q_0 * L ^^^ 4 / (24 * EI)]"
neuper@38031
   598
then () else error "eqsystem.sml me simpl. before SubProblem b";
neuper@37906
   599
case nxt of
walther@59749
   600
    (Subproblem ("Biegelinie", ["triangular", "2x2", "LINEAR",_])) => ()
neuper@38031
   601
  | _ => error "eqsystem.sml me [linear,system] SubProblem b";
neuper@37906
   602
neuper@37906
   603
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37906
   604
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37906
   605
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37906
   606
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37906
   607
case nxt of
walther@59749
   608
    (Specify_Method ["EqSystem", "top_down_substitution", "2x2"]) => ()
neuper@38031
   609
  | _ => error "eqsystem.sml me [EqSys...2x2] top_down_substitution b";
neuper@37906
   610
neuper@37906
   611
val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37924
   612
val PblObj {probl,...} = get_obj I pt [5];
wneuper@59592
   613
    (writeln o (itms2str_ (thy2ctxt @{theory Isac_Knowledge}))) probl;
neuper@37906
   614
(*[
neuper@37906
   615
(1 ,[1] ,true ,#Given ,Cor equalities [c_2 = 0, L * c + c_2 = q_0 * L ^^^ 2 / 2] ,(es_, [[c_2 = 0, L * c + c_2 = q_0 * L ^^^ 2 / 2]])),
neuper@37995
   616
(2 ,[1] ,true ,#Given ,Cor solveForVars [c, c_2] ,(v_s, [[c, c_2]])),
neuper@37906
   617
(3 ,[1] ,true ,#Find ,Cor solution ss___ ,(ss___, [ss___]))]
neuper@37906
   618
*)
neuper@37906
   619
val (p,_,f,nxt,_,pt) = me nxt p c pt;f2str f;
neuper@37906
   620
val (p,_,f,nxt,_,pt) = me nxt p c pt;f2str f;
neuper@37906
   621
val (p,_,f,nxt,_,pt) = me nxt p c pt;f2str f;
neuper@37906
   622
val (p,_,f,nxt,_,pt) = me nxt p c pt;f2str f;
neuper@37906
   623
val (p,_,f,nxt,_,pt) = me nxt p c pt;f2str f;
neuper@37906
   624
val (p,_,f,nxt,_,pt) = me nxt p c pt;f2str f;
neuper@37906
   625
val (p,_,f,nxt,_,pt) = me nxt p c pt;f2str f;
neuper@37906
   626
val (p,_,f,nxt,_,pt) = me nxt p c pt;f2str f;
neuper@37906
   627
case nxt of
walther@59749
   628
    (Check_Postcond ["triangular", "2x2", "LINEAR", "system"]) => ()
neuper@38031
   629
  | _ => error "eqsystem.sml me Subpbl .[EqSys...2x2] finished b";
neuper@37906
   630
val (p,_,f,nxt,_,pt) = me nxt p c pt;f2str f;
neuper@37906
   631
val (p,_,f,nxt,_,pt) = me nxt p c pt;f2str f;
wneuper@59533
   632
wneuper@59533
   633
if f2str f = "[c = -1 * q_0 * L ^^^ 3 / (24 * EI), c_2 = 0]"
neuper@38031
   634
then () else error "eqsystem.sml me [EqSys...2x2] finished f2str f b";
neuper@37906
   635
case nxt of
walther@59749
   636
    (End_Proof') => ()
neuper@42391
   637
  | _ => error "eqsystem.sml me [EqSys...2x2] finished End_Proof'";
neuper@37906
   638
neuper@37906
   639
neuper@37906
   640
"----------- all systems from Biegelinie -------------------------";
neuper@37906
   641
"----------- all systems from Biegelinie -------------------------";
neuper@37906
   642
"----------- all systems from Biegelinie -------------------------";
wneuper@59592
   643
val thy = @{theory Isac_Knowledge}
neuper@52105
   644
val subst = 
neuper@52105
   645
  [(str2term "bdv_1", str2term "c"), (str2term "bdv_2", str2term "c_2"),
neuper@52105
   646
	(str2term "bdv_3", str2term "c_3"), (str2term "bdv_4", str2term "c_4")]; 
neuper@52105
   647
neuper@37906
   648
"------- Bsp 7.27";
s1210629013@55445
   649
reset_states ();
neuper@52105
   650
CalcTree [(
neuper@52105
   651
  ["Traegerlaenge L","Streckenlast q_0","Biegelinie y",
wneuper@59580
   652
	  "Randbedingungen [y 0 = (0::real), y L = 0, M_b 0 = 0, M_b L = 0]", "FunktionsVariable x"],
neuper@52105
   653
	("Biegelinie", ["Biegelinien"], ["IntegrierenUndKonstanteBestimmen2"]))];
neuper@37906
   654
moveActiveRoot 1;
neuper@37906
   655
(*
wneuper@59248
   656
trace_script := true; autoCalculate 1 CompleteCalc; trace_script := false;
neuper@37906
   657
##7.27##          ordered           substs
neuper@37906
   658
          c_4       c_2           
neuper@37906
   659
c c_2 c_3 c_4     c c_2             1->2: c
neuper@37906
   660
  c_2                       c_4	  
neuper@37906
   661
c c_2             c c_2 c_3 c_4     [2':c, 1:c_2, 3:c_4] -> 4:c_3*)
neuper@52105
   662
val t = str2term
neuper@52105
   663
  ("[0 = c_4, " ^
neuper@52105
   664
  "0 = c_4 + L * c_3 +(12 * L ^^^ 2 * c_2 + 4 * L ^^^ 3 * c + -1 * L ^^^ 4 * q_0) / (-24 * EI), " ^
neuper@52105
   665
  "0 = c_2, " ^
neuper@52105
   666
  "0 = (2 * c_2 + 2 * L * c + -1 * L ^^^ 2 * q_0) / 2]");
neuper@52105
   667
val SOME (t, _) = rewrite_set_ thy false isolate_bdvs_4x4 t;
neuper@52105
   668
if term2str t =
neuper@52105
   669
"[c_4 = 0,\n (12 * L ^^^ 2 * c_2 + 4 * L ^^^ 3 * c + -1 * L ^^^ 4 * q_0) / (-24 * EI) =\n -1 * (c_4 + L * c_3) + 0,\n c_2 = 0, (2 * c_2 + 2 * L * c + -1 * L ^^^ 2 * q_0) / 2 = 0]"
neuper@52105
   670
then () else error "Bsp 7.27";
neuper@37906
   671
neuper@52105
   672
"----- Bsp 7.27 go through the rewrites in met_eqsys_norm_4x4";
neuper@37906
   673
val t = str2term "0 = (2 * c_2 + 2 * L * c + -1 * L ^^^ 2 * q_0) / 2";
neuper@37926
   674
val NONE = rewrite_set_ thy false norm_Rational t;
neuper@37926
   675
val SOME (t,_) = 
neuper@37906
   676
    rewrite_set_inst_ thy false subst simplify_System_parenthesized t;
neuper@52105
   677
if term2str t = "0 = -1 * q_0 * L ^^^ 2 / 2 + (L * c + c_2)"
neuper@52105
   678
then () else error "Bsp 7.27 go through the rewrites in met_eqsys_norm_4x4";
neuper@52105
   679
neuper@37906
   680
"--- isolate_bdvs_4x4";
neuper@37906
   681
(*
neuper@37926
   682
val SOME (t,_) = rewrite_set_inst_ thy false subst isolate_bdvs_4x4 t;
neuper@37906
   683
term2str t;
neuper@37926
   684
val SOME (t,_) = rewrite_set_inst_ thy false subst simplify_System t;
neuper@37906
   685
term2str t;
neuper@37926
   686
val SOME (t,_) = rewrite_set_ thy false order_system t;
neuper@37906
   687
term2str t;
neuper@37906
   688
*)
neuper@37906
   689
neuper@37906
   690
"------- Bsp 7.28 ---------------vvvvvvvvvvvvv Momentenlinie postponed";
s1210629013@55445
   691
reset_states ();
neuper@52105
   692
CalcTree [((*WN130908  <ERROR> error in kernel </ERROR>*)
neuper@52105
   693
  ["Traegerlaenge L","Momentenlinie (-q_0 / L * x^^^3 / 6)",
neuper@37906
   694
	    "Biegelinie y",
neuper@37906
   695
	    "Randbedingungen [y L = 0, y' L = 0]",
neuper@37906
   696
	    "FunktionsVariable x"],
neuper@37991
   697
	   ("Biegelinie", ["vonMomentenlinieZu","Biegelinien"],
neuper@37906
   698
	    ["Biegelinien", "AusMomentenlinie"]))];
neuper@52105
   699
(*
neuper@37906
   700
moveActiveRoot 1;
wneuper@59248
   701
trace_script := true; autoCalculate 1 CompleteCalc; trace_script := false;
neuper@37906
   702
*)
neuper@37906
   703
neuper@37906
   704
"------- Bsp 7.69";
s1210629013@55445
   705
reset_states ();
neuper@52105
   706
CalcTree [(
neuper@52105
   707
  ["Traegerlaenge L", "Streckenlast q_0", "Biegelinie y",
wneuper@59580
   708
	  "Randbedingungen [y 0 = (0::real), y L = 0, y' 0 = 0, y' L = 0]", "FunktionsVariable x"],
neuper@52105
   709
	("Biegelinie", ["Biegelinien"], ["IntegrierenUndKonstanteBestimmen2"]))];
neuper@37906
   710
moveActiveRoot 1;
neuper@37906
   711
(*
wneuper@59248
   712
trace_script := true; autoCalculate 1 CompleteCalc; trace_script := false;
neuper@37906
   713
##7.69##          ordered           subst                   2x2
neuper@37906
   714
          c_4           c_3         
neuper@37906
   715
c c_2 c_3 c_4     c c_2 c_3	    1:c_3 -> 2:c c_2        2:         c c_2
neuper@37906
   716
      c_3                   c_4	 			   
neuper@37906
   717
c c_2 c_3         c c_2 c_3 c_4     3:c_4 -> 4:c c_2 c_3    1:c_3 -> 4:c c_2*)
neuper@52105
   718
val t = str2term 
neuper@52105
   719
  ("[0 = c_4 + 0 / (-1 * EI), " ^
neuper@52105
   720
  "0 = c_4 + L * c_3 + (12 * L ^^^ 2 * c_2 + 4 * L ^^^ 3 * c + -1 * L ^^^ 4 * q_0) / (-24 * EI), " ^
neuper@52105
   721
  "0 = c_3 + 0 / (-1 * EI), " ^
neuper@52105
   722
  "0 = c_3 + (6 * L * c_2 + 3 * L ^^^ 2 * c + -1 * L ^^^ 3 * q_0) / (-6 * EI)]");
neuper@37906
   723
neuper@37906
   724
"------- Bsp 7.70";
s1210629013@55445
   725
reset_states ();
neuper@52105
   726
CalcTree [(
neuper@52105
   727
  ["Traegerlaenge L", "Streckenlast q_0", "Biegelinie y",
wneuper@59580
   728
	  "Randbedingungen [Q 0 = q_0 * L, M_b L = 0, y 0 = (0::real), y' 0 = 0]", "FunktionsVariable x"],
neuper@52105
   729
	("Biegelinie", ["Biegelinien"], ["IntegrierenUndKonstanteBestimmen2"] ))];
neuper@37906
   730
moveActiveRoot 1;
neuper@37906
   731
(*
wneuper@59248
   732
trace_script := true; autoCalculate 1 CompleteCalc; trace_script := false;
neuper@37906
   733
##7.70##        |subst
neuper@37906
   734
c		|
neuper@37906
   735
c c_2           |1:c -> 2:c_2
neuper@37906
   736
      c_3	|
neuper@41977
   737
          c_4   |            STOPPED.WN06? test methods @@@@@@@@@@@@@@@@@@@@@@@*)
neuper@37906
   738
neuper@52105
   739
"----- 7.70 go through the rewrites in met_eqsys_norm_4x4";
neuper@52105
   740
val t = str2term
neuper@52105
   741
  ("[L * q_0 = c, " ^
neuper@52105
   742
  "0 = (2 * c_2 + 2 * L * c + -1 * L ^^^ 2 * q_0) / 2, " ^
neuper@52105
   743
  "0 = c_4, " ^
neuper@52105
   744
  "0 = c_3]");
neuper@52105
   745
val SOME (t,_) = rewrite_ thy e_rew_ord e_rls false (num_str @{thm commute_0_equality}) t;
neuper@52105
   746
val SOME (t,_) = rewrite_ thy e_rew_ord e_rls false (num_str @{thm commute_0_equality}) t;
neuper@52105
   747
val SOME (t,_) = rewrite_ thy e_rew_ord e_rls false (num_str @{thm commute_0_equality}) t;
neuper@52105
   748
if term2str t = 
neuper@52105
   749
  "[L * q_0 = c, (2 * c_2 + 2 * L * c + -1 * L ^^^ 2 * q_0) / 2 = 0, c_4 = 0,\n c_3 = 0]"
neuper@52105
   750
then () else error "7.70 go through the rewrites in met_eqsys_norm_4x4, 1";
neuper@42391
   751
neuper@52105
   752
val SOME (t,_) = rewrite_set_inst_ thy false subst simplify_System_parenthesized t;
neuper@52105
   753
if term2str t = "[L * q_0 = c, -1 * q_0 * L ^^^ 2 / 2 + (L * c + c_2) = 0, c_4 = 0, c_3 = 0]"
neuper@52105
   754
then () else error "7.70 go through the rewrites in met_eqsys_norm_4x4, 2";
neuper@52105
   755
neuper@37926
   756
val SOME (t,_) = rewrite_set_inst_ thy false subst isolate_bdvs_4x4 t;
neuper@52105
   757
if term2str t =
neuper@52105
   758
   "[c = (-1 * (L * q_0) + 0) / -1,\n" ^ 
neuper@52105
   759
   " L * c + c_2 = -1 * (-1 * q_0 * L ^^^ 2 / 2) + 0, c_4 = 0, c_3 = 0]"
neuper@52105
   760
then () else error "7.70 go through the rewrites in met_eqsys_norm_4x4, 3";
neuper@37906
   761
neuper@52105
   762
val SOME (t,_) = rewrite_set_inst_ thy false subst simplify_System_parenthesized t;
neuper@52105
   763
if term2str t = "[c = -1 * L * q_0 / -1, L * c + c_2 = q_0 * L ^^^ 2 / 2, c_4 = 0, c_3 = 0]"
neuper@52105
   764
then () else error "7.70 go through the rewrites in met_eqsys_norm_4x4, 4";
neuper@37906
   765
neuper@52105
   766
val SOME (t, _) = rewrite_set_ thy false order_system t;
neuper@52105
   767
if term2str t = "[c = -1 * L * q_0 / -1, L * c + c_2 = q_0 * L ^^^ 2 / 2, c_3 = 0, c_4 = 0]"
wneuper@59370
   768
then () else error "eqsystem.sml: exp 7.70 normalise 4x4 by rewrite changed";
neuper@37906
   769
wneuper@59370
   770
"----- 7.70 with met normalise: ";
neuper@52105
   771
val fmz = ["equalities" ^
neuper@52105
   772
  "[L * q_0 = c, " ^
neuper@52105
   773
  "0 = (2 * c_2 + 2 * L * c + -1 * L ^^^ 2 * q_0) / 2, " ^
neuper@52105
   774
  "0 = c_4, " ^
neuper@52105
   775
  "0 = c_3]", "solveForVars [c, c_2, c_3, c_4]", "solution LL"];
neuper@55276
   776
val (dI',pI',mI') = ("Biegelinie",["LINEAR", "system"], ["no_met"]);
neuper@52105
   777
val p = e_pos'; val c = [];
neuper@52105
   778
neuper@42391
   779
(*============ inhibit exn WN120314 TODO: investigate type error (same as above)==
neuper@42391
   780
  in next but one test below the same type error.
neuper@42391
   781
/-------------------------------------------------------\
neuper@42391
   782
Type unification failed
neuper@42391
   783
Type error in application: incompatible operand type
neuper@42391
   784
neuper@42391
   785
Operator:  op # c_3 :: 'a list \<Rightarrow> 'a list
neuper@42391
   786
Operand:   [c_4] :: 'b list
neuper@42391
   787
\-------------------------------------------------------/
neuper@42391
   788
neuper@42391
   789
val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
neuper@42391
   790
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@42391
   791
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@42391
   792
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@42391
   793
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@59367
   794
case nxt of (_,Apply_Method ["EqSystem", "normalise", "4x4"]) => ()
wneuper@59370
   795
	  | _ => error "eqsystem.sml [EqSystem,normalise,4x4] specify";
neuper@42391
   796
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f;
neuper@52105
   797
neuper@42391
   798
"----- outcommented before Isabelle2002 --> 2011 -------------------------";
neuper@52105
   799
(*-----------------------------------vvvWN080102 Exception- Match raised 
wneuper@59573
   800
  since associate Rewrite .. Rewrite'_Set
neuper@42391
   801
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f;
neuper@42391
   802
neuper@42391
   803
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f;
neuper@42391
   804
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f;
neuper@42391
   805
neuper@42391
   806
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f;
neuper@42391
   807
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f;
neuper@42391
   808
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f;
neuper@42391
   809
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f;
neuper@42391
   810
if f2str f ="[c = L * q_0, L * c + c_2 = q_0 * L ^^^ 2 / 2, c_3 = 0, c_4 = 0]" 
wneuper@59370
   811
then () else error "eqsystem.sml: exp 7.70 normalise 4x4 by met changed";
neuper@42391
   812
--------------------------------------------------------------------------*)
neuper@42391
   813
neuper@42391
   814
"----- 7.70 with met top_down_: me";
neuper@42391
   815
val fmz = ["equalities                                         \
neuper@42391
   816
	    \[c = L * q_0, L * c + c_2 = q_0 * L ^^^ 2 / 2, c_3 = 0, c_4 = 0]",
neuper@42391
   817
	    "solveForVars [c, c_2, c_3, c_4]", "solution LL"];
neuper@37906
   818
val (dI',pI',mI') =
neuper@55276
   819
  ("Biegelinie",["LINEAR", "system"],["no_met"]);
neuper@37906
   820
val p = e_pos'; val c = []; 
neuper@37906
   821
val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
neuper@37906
   822
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37906
   823
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37906
   824
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37906
   825
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37906
   826
case nxt of (_,Apply_Method ["EqSystem", "top_down_substitution", "4x4"]) => ()
neuper@38031
   827
	  | _ => error "eqsystem.sml [EqSystem,top_down_,4x4] specify";
neuper@37906
   828
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f;
neuper@37906
   829
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f;
neuper@37906
   830
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f;
neuper@37906
   831
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f;
neuper@37906
   832
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f;
neuper@37906
   833
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f;
neuper@37906
   834
if nxt = ("End_Proof'", End_Proof') andalso
neuper@37906
   835
   f2str f = "[c = L * q_0, c_2 = -1 * L ^^^ 2 * q_0 / 2, c_3 = 0, c_4 = 0]"
neuper@38031
   836
then () else error "eqsystem.sml: 7.70 with met top_down_: me";
neuper@42391
   837
============ inhibit exn WN120314 ==============================================*)
neuper@37906
   838
neuper@37906
   839
"------- Bsp 7.71";
s1210629013@55445
   840
reset_states ();
neuper@37906
   841
CalcTree [(["Traegerlaenge L","Streckenlast q_0","Biegelinie y",
wneuper@59580
   842
	     "Randbedingungen [M_b L = 0, y 0 = (0::real), y L = 0, y' 0 = 0]",
wneuper@59540
   843
	     "FunktionsVariable x", "GleichungsVariablen [c, c_2, c_3, c_4]",
wneuper@59540
   844
	     "AbleitungBiegelinie dy"],
neuper@37991
   845
	    ("Biegelinie", ["Biegelinien"],
neuper@37906
   846
	     ["IntegrierenUndKonstanteBestimmen2"] ))];
neuper@37906
   847
moveActiveRoot 1;
neuper@37906
   848
(*
wneuper@59248
   849
trace_script := true; autoCalculate 1 CompleteCalc; trace_script := false;
neuper@37906
   850
##7.71##       |ordered       |subst.singles (recurs) |2x2       |diagonal
neuper@37906
   851
c c_2          |c c_2	      |1'		      |1': c c_2 |
neuper@37906
   852
          c_4  |      c_3     |2:c_3 -> 4' :c c_2 c_4 |	         |
neuper@37906
   853
c c_2 c_3 c_4  |          c_4 |3'                     |	         |
neuper@37906
   854
      c_3      |c c_2 c_3 c_4 |3:c_4 -> 4'':c c_2     |4'':c c_2 |      *)
neuper@37906
   855
val t = str2term"[0 = (2 * c_2 + 2 * L * c + -1 * L ^^^ 2 * q_0) / 2, \
neuper@37906
   856
\ 0 = c_4 + 0 / (-1 * EI),                            \
neuper@37906
   857
\ 0 = c_4 + L * c_3 +(12 * L ^^^ 2 * c_2 + 4 * L ^^^ 3 * c + -1 * L ^^^ 4 * q_0) /(-24 * EI),\
neuper@37906
   858
\ 0 = c_3 + 0 / (-1 * EI)]";
neuper@37906
   859
neuper@37906
   860
"------- Bsp 7.72a ---------------vvvvvvvvvvvvv Momentenlinie postponed";
s1210629013@55445
   861
reset_states ();
neuper@37906
   862
CalcTree [(["Traegerlaenge L",
neuper@37906
   863
	    "Momentenlinie ((q_0 * L)/ 6 * x - q_0 /(6 * L) * x^3)",
neuper@37906
   864
	    "Biegelinie y",
wneuper@59580
   865
	    "Randbedingungen [y 0 = (0::real), y L = 0]",
neuper@37906
   866
	    "FunktionsVariable x"],
neuper@37991
   867
	   ("Biegelinie", ["vonMomentenlinieZu","Biegelinien"],
neuper@37906
   868
	    ["Biegelinien", "AusMomentenlinie"]))];
neuper@37906
   869
moveActiveRoot 1;
neuper@37906
   870
(*
wneuper@59248
   871
trace_script := true; autoCalculate 1 CompleteCalc; trace_script := false;
neuper@37906
   872
*)
neuper@37906
   873
neuper@37906
   874
"------- Bsp 7.72b";
s1210629013@55445
   875
reset_states ();
neuper@37906
   876
CalcTree [(["Traegerlaenge L","Streckenlast (q_0 / L * x)","Biegelinie y",
wneuper@59580
   877
	    "Randbedingungen [M_b 0 = 0, M_b L = 0, y 0 = (0::real), y L = 0]",
wneuper@59540
   878
	    "FunktionsVariable x", "GleichungsVariablen [c, c_2, c_3, c_4]",
wneuper@59540
   879
	    "AbleitungBiegelinie dy"],
neuper@37991
   880
	   ("Biegelinie", ["Biegelinien"],
neuper@37906
   881
	    ["IntegrierenUndKonstanteBestimmen2"] ))];
neuper@37906
   882
moveActiveRoot 1;
neuper@37906
   883
(*
wneuper@59248
   884
trace_script := true; autoCalculate 1 CompleteCalc; trace_script := false;
neuper@37906
   885
##7.72b##      |ord. |subst.singles         |ord.triang.
neuper@37906
   886
  c_2          |     |			    |c_2  
neuper@37906
   887
c c_2	       |     |1:c_2 -> 2':c	    |c_2 c
neuper@37906
   888
          c_4  |     |			    |
neuper@37906
   889
c c_2 c_3 c_4  |     |3:c_4 -> 4':c c_2 c_3 |c_2 c c_3*)
neuper@37906
   890
val t = str2term"[0 = c_2,                                            \
neuper@37906
   891
\ 0 = (6 * c_2 + 6 * L * c + -1 * L ^^^ 2 * q_0) / 6, \
neuper@37906
   892
\ 0 = c_4 + 0 / (-1 * EI),                            \
neuper@37906
   893
\ 0 = c_4 + L * c_3 + (60 * L ^^^ 2 * c_2 + 20 * L ^^^ 3 * c + -1 * L ^^^ 4 * q_0) / (-120 * EI)]";
neuper@37906
   894
neuper@37906
   895
"------- Bsp 7.73 ---------------vvvvvvvvvvvvv Momentenlinie postponed";
s1210629013@55445
   896
reset_states ();
neuper@37906
   897
CalcTree [(["Traegerlaenge L","Momentenlinie ???",(*description unclear*)
neuper@37906
   898
	    "Biegelinie y",
neuper@37906
   899
	    "Randbedingungen [y L = 0, y' L = 0]",
neuper@37906
   900
	    "FunktionsVariable x"],
neuper@37991
   901
	   ("Biegelinie", ["vonMomentenlinieZu","Biegelinien"],
neuper@37906
   902
	    ["Biegelinien", "AusMomentenlinie"]))];
neuper@37906
   903
moveActiveRoot 1;
neuper@37906
   904
(*
wneuper@59248
   905
trace_script := true; autoCalculate 1 CompleteCalc; trace_script := false;
neuper@37906
   906
*)
neuper@37906
   907
neuper@37906
   908
"----------- 4x4 systems from Biegelinie -------------------------";
neuper@37906
   909
"----------- 4x4 systems from Biegelinie -------------------------";
neuper@37906
   910
"----------- 4x4 systems from Biegelinie -------------------------";
neuper@41977
   911
(*STOPPED.WN08?? replace this test with 7.70 *)
neuper@37906
   912
"----- Bsp 7.27";
neuper@37906
   913
val fmz = ["equalities \
neuper@37906
   914
	   \[0 = c_4,                           \
neuper@37906
   915
	   \ 0 = c_4 + L * c_3 +(12 * L ^^^ 2 * c_2 + 4 * L ^^^ 3 * c + -1 * L ^^^ 4 * q_0) / (-24 * EI),                                       \
neuper@37906
   916
	   \ 0 = c_2,                                           \
neuper@37906
   917
	   \ 0 = (2 * c_2 + 2 * L * c + -1 * L ^^^ 2 * q_0) / 2]", 
neuper@42391
   918
	   "solveForVars [c, c_2, c_3, c_4]", "solution LL"];
neuper@37906
   919
val (dI',pI',mI') =
wneuper@59367
   920
  ("Biegelinie",["normalise", "4x4", "LINEAR", "system"],
wneuper@59367
   921
   ["EqSystem","normalise","4x4"]);
neuper@37906
   922
val p = e_pos'; val c = []; 
neuper@37906
   923
val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
neuper@37906
   924
val (p,_,f,nxt,_,pt) = me nxt p c pt; val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37906
   925
val (p,_,f,nxt,_,pt) = me nxt p c pt; val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37906
   926
val (p,_,f,nxt,_,pt) = me nxt p c pt; val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37906
   927
val (p,_,f,nxt,_,pt) = me nxt p c pt; val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37906
   928
"------------------------------------------- Apply_Method...";
neuper@37906
   929
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f;
neuper@37906
   930
"[0 = c_4,                                          \
neuper@37906
   931
\ 0 = c_4 + L * c_3 +\n (12 * L ^^^ 2 * c_2 + 4 * L ^^^ 3 * c + -1 * L ^^^ 4 * q_0) / (-24 * EI),                                   \
neuper@37906
   932
\ 0 = c_2,                                          \
neuper@37906
   933
\ 0 = (2 * c_2 + 2 * L * c + -1 * L ^^^ 2 * q_0) / 2]";
neuper@37906
   934
(*vvvWN080102 Exception- Match raised 
wneuper@59573
   935
  since associate Rewrite .. Rewrite'_Set
neuper@37906
   936
"------------------------------------------- simplify_System_parenthesized...";
neuper@37906
   937
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f;
neuper@37906
   938
"[0 = c_4,                                  \
neuper@37906
   939
\ 0 = -1 * q_0 * L ^^^ 4 / (-24 * EI) +     \
neuper@37906
   940
\     (4 * L ^^^ 3 * c / (-24 * EI) +       \
neuper@37906
   941
\     (12 * L ^^^ 2 * c_2 / (-24 * EI) +    \
neuper@37906
   942
\     (L * c_3 + c_4))),                    \
neuper@37906
   943
\ 0 = c_2,                                  \
neuper@37906
   944
\ 0 = -1 * q_0 * L ^^^ 2 / 2 + (L * c + c_2)]";
neuper@37906
   945
(*? "(4 * L ^^^ 3 / (-24 * EI) * c" statt "(4 * L ^^^ 3 * c / (-24 * EI)" ?*)
neuper@37906
   946
"------------------------------------------- isolate_bdvs...";
neuper@37906
   947
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f;
neuper@37906
   948
"[c_4 = 0,\
neuper@37906
   949
\ c_4 = 0 + -1 * (-1 * q_0 * L ^^^ 4 / (-24 * EI)) + -1 * (4 * L ^^^ 3 * c / (-24 * EI)) + -1 * (12 * L ^^^ 2 * c_2 / (-24 * EI)) + -1 * (L * c_3),\
neuper@37906
   950
\ c_2 = 0, \
neuper@37906
   951
\ c_2 = 0 + -1 * (-1 * q_0 * L ^^^ 2 / 2) + -1 * (L * c)]";
neuper@37906
   952
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f;
neuper@37906
   953
neuper@37906
   954
---------------------------------------------------------------------*)