src/Tools/isac/Knowledge/Biegelinie.thy
author Mathias Lehnfeld <s1210629013@students.fh-hagenberg.at>
Sat, 01 Feb 2014 16:44:45 +0100
changeset 55373 4f3f530f3cf6
parent 55363 d78bc1342183
child 55380 7be2ad0e4acb
permissions -rw-r--r--
ad 967c8a1eb6b1 (2): add functions accessing Theory_Data in parallel to those accessing 'mets = Unsynchronized.ref'
neuper@37906
     1
(* chapter 'Biegelinie' from the textbook: 
neuper@37906
     2
   Timischl, Kaiser. Ingenieur-Mathematik 3. Wien 1999. p.268-271.
neuper@37999
     3
   author: Walther Neuper 050826,
neuper@37906
     4
   (c) due to copyright terms
neuper@37906
     5
*)
neuper@37906
     6
bonzai@41919
     7
theory Biegelinie imports Integrate Equation EqSystem Atools begin
neuper@37906
     8
neuper@37906
     9
consts
neuper@37906
    10
neuper@42385
    11
  qq    :: "real => real"             (* Streckenlast               *)
neuper@37999
    12
  Q     :: "real => real"             (* Querkraft                  *)
neuper@37999
    13
  Q'    :: "real => real"             (* Ableitung der Querkraft    *)
neuper@37999
    14
  M'_b  :: "real => real" ("M'_b")    (* Biegemoment                *)
neuper@37999
    15
  M'_b' :: "real => real" ("M'_b'")   (* Ableitung des Biegemoments *)
neuper@37999
    16
  y''   :: "real => real"             (* 2.Ableitung der Biegeline  *)
neuper@37999
    17
  y'    :: "real => real"             (* Neigung der Biegeline      *)
neuper@37999
    18
(*y     :: "real => real"             (* Biegeline                  *)*)
neuper@37999
    19
  EI    :: "real"                     (* Biegesteifigkeit           *)
neuper@37906
    20
neuper@37906
    21
  (*new Descriptions in the related problems*)
neuper@37999
    22
  Traegerlaenge            :: "real => una"
neuper@37999
    23
  Streckenlast             :: "real => una"
neuper@37999
    24
  BiegemomentVerlauf       :: "bool => una"
neuper@37999
    25
  Biegelinie               :: "(real => real) => una"
neuper@37999
    26
  Randbedingungen          :: "bool list => una"
neuper@37999
    27
  RandbedingungenBiegung   :: "bool list => una"
neuper@37999
    28
  RandbedingungenNeigung   :: "bool list => una"
neuper@37999
    29
  RandbedingungenMoment    :: "bool list => una"
neuper@37999
    30
  RandbedingungenQuerkraft :: "bool list => una"
neuper@37999
    31
  FunktionsVariable        :: "real => una"
neuper@37999
    32
  Funktionen               :: "bool list => una"
neuper@37999
    33
  Gleichungen              :: "bool list => una"
neuper@37906
    34
neuper@37906
    35
  (*Script-names*)
neuper@37906
    36
  Biegelinie2Script        :: "[real,real,real,real=>real,bool list,
neuper@37906
    37
				bool] => bool"	
neuper@37906
    38
	("((Script Biegelinie2Script (_ _ _ _ _ =))// (_))" 9)
neuper@37906
    39
  BiegelinieScript         :: "[real,real,real,real=>real,bool list,bool list,
neuper@37906
    40
				bool] => bool"	
neuper@37906
    41
	("((Script BiegelinieScript (_ _ _ _ _ _ =))// (_))" 9)
neuper@37906
    42
  Biege2xIntegrierenScript :: "[real,real,real,bool,real=>real,bool list,
neuper@37906
    43
				bool] => bool"		
neuper@37906
    44
	("((Script Biege2xIntegrierenScript (_ _ _ _ _ _ =))// (_))" 9)
neuper@37906
    45
  Biege4x4SystemScript     :: "[real,real,real,real=>real,bool list,  
neuper@37906
    46
				bool] => bool"	
neuper@37906
    47
	("((Script Biege4x4SystemScript (_ _ _ _ _ =))// (_))" 9)
neuper@37906
    48
  Biege1xIntegrierenScript :: 
neuper@37906
    49
	            "[real,real,real,real=>real,bool list,bool list,bool list,
neuper@37906
    50
		      bool] => bool"	
neuper@37906
    51
	("((Script Biege1xIntegrierenScript (_ _ _ _ _ _ _ =))// (_))" 9)
neuper@37906
    52
  Belastung2BiegelScript   :: "[real,real,
neuper@37906
    53
	                        bool list] => bool list"	
neuper@37906
    54
	("((Script Belastung2BiegelScript (_ _ =))// (_))" 9)
neuper@37906
    55
  SetzeRandbedScript       :: "[bool list,bool list,
neuper@37906
    56
	                        bool list] => bool list"	
neuper@37906
    57
	("((Script SetzeRandbedScript (_ _ =))// (_))" 9)
neuper@37906
    58
neuper@52148
    59
axiomatization where
neuper@37906
    60
neuper@52148
    61
  Querkraft_Belastung:   "Q' x = -qq x" and
neuper@52148
    62
  Belastung_Querkraft:   "-qq x = Q' x" and
neuper@37906
    63
neuper@52148
    64
  Moment_Querkraft:      "M_b' x = Q x" and
neuper@52148
    65
  Querkraft_Moment:      "Q x = M_b' x" and
neuper@37906
    66
neuper@52148
    67
  Neigung_Moment:        "y'' x = -M_b x/ EI" and
neuper@52148
    68
  Moment_Neigung:        "M_b x = -EI * y'' x" and
neuper@37906
    69
neuper@37906
    70
  (*according to rls 'simplify_Integral': .. = 1/a * .. instead .. = ../ a*)
neuper@37983
    71
  make_fun_explicit:     "Not (a =!= 0) ==> (a * (f x) = b) = (f x = 1/a * b)"
neuper@37906
    72
neuper@37954
    73
ML {*
neuper@37972
    74
val thy = @{theory};
neuper@37972
    75
neuper@37954
    76
(** theory elements for transfer into html **)
neuper@37954
    77
neuper@37954
    78
store_isa ["IsacKnowledge"] [];
neuper@37972
    79
store_thy thy 
neuper@37954
    80
	  ["Walther Neuper 2005 supported by a grant from NMI Austria"];
neuper@37972
    81
store_isa ["IsacKnowledge", theory2thyID thy, "Theorems"] 
neuper@37954
    82
	  ["Walther Neuper 2005 supported by a grant from NMI Austria"];
neuper@42411
    83
store_thm thy "IsacKnowledge" ("Belastung_Querkraft", prop_of @{thm Belastung_Querkraft})
neuper@37954
    84
	  ["Walther Neuper 2005 supported by a grant from NMI Austria"];
neuper@42411
    85
store_thm thy "IsacKnowledge" ("Moment_Neigung", prop_of @{thm Moment_Neigung})
neuper@37954
    86
	  ["Walther Neuper 2005 supported by a grant from NMI Austria"];
neuper@42411
    87
store_thm thy "IsacKnowledge" ("Moment_Querkraft", prop_of @{thm Moment_Querkraft})
neuper@37954
    88
	  ["Walther Neuper 2005 supported by a grant from NMI Austria"];
neuper@42411
    89
store_thm thy "IsacKnowledge" ("Neigung_Moment", prop_of @{thm Neigung_Moment})
neuper@37954
    90
	  ["Walther Neuper 2005 supported by a grant from NMI Austria"];
neuper@42411
    91
store_thm thy "IsacKnowledge" ("Querkraft_Belastung", prop_of @{thm Querkraft_Belastung})
neuper@37954
    92
	  ["Walther Neuper 2005 supported by a grant from NMI Austria"];
neuper@42411
    93
store_thm thy "IsacKnowledge" ("Querkraft_Moment", prop_of @{thm Querkraft_Moment})
neuper@37954
    94
	  ["Walther Neuper 2005 supported by a grant from NMI Austria"];
neuper@42411
    95
store_thm thy "IsacKnowledge" ("make_fun_explicit", prop_of @{thm make_fun_explicit})
neuper@37954
    96
	  ["Walther Neuper 2005 supported by a grant from NMI Austria"];
neuper@37954
    97
neuper@37999
    98
*}
neuper@37954
    99
(** problems **)
s1210629013@55359
   100
setup {* KEStore_Elems.add_pbts
s1210629013@55339
   101
  [(prep_pbt thy "pbl_bieg" [] e_pblID
s1210629013@55339
   102
      (["Biegelinien"],
s1210629013@55339
   103
        [("#Given" ,["Traegerlaenge l_l", "Streckenlast q_q"]),
s1210629013@55339
   104
          (*("#Where",["0 < l_l"]), ...wait for &lt; and handling Arbfix*)
s1210629013@55339
   105
          ("#Find"  ,["Biegelinie b_b"]),
s1210629013@55339
   106
          ("#Relate",["Randbedingungen r_b"])],
s1210629013@55339
   107
        append_rls "e_rls" e_rls [], NONE, [["IntegrierenUndKonstanteBestimmen2"]])),
s1210629013@55339
   108
    (prep_pbt thy "pbl_bieg_mom" [] e_pblID
s1210629013@55339
   109
      (["MomentBestimmte","Biegelinien"],
s1210629013@55339
   110
        [("#Given" ,["Traegerlaenge l_l", "Streckenlast q_q"]),
s1210629013@55339
   111
          (*("#Where",["0 < l_l"]), ...wait for &lt; and handling Arbfix*)
s1210629013@55339
   112
          ("#Find"  ,["Biegelinie b_b"]),
s1210629013@55339
   113
          ("#Relate",["RandbedingungenBiegung r_b","RandbedingungenMoment r_m"])
s1210629013@55339
   114
        ],
s1210629013@55339
   115
        append_rls "e_rls" e_rls [], NONE, [["IntegrierenUndKonstanteBestimmen"]])),
s1210629013@55339
   116
    (prep_pbt thy "pbl_bieg_momg" [] e_pblID
s1210629013@55339
   117
      (["MomentGegebene","Biegelinien"], [], append_rls "e_rls" e_rls [], NONE,
s1210629013@55339
   118
        [["IntegrierenUndKonstanteBestimmen","2xIntegrieren"]])),
s1210629013@55339
   119
    (prep_pbt thy "pbl_bieg_einf" [] e_pblID
s1210629013@55339
   120
      (["einfache","Biegelinien"], [], append_rls "e_rls" e_rls [], NONE,
s1210629013@55339
   121
        [["IntegrierenUndKonstanteBestimmen","4x4System"]])),
s1210629013@55339
   122
    (prep_pbt thy "pbl_bieg_momquer" [] e_pblID
s1210629013@55339
   123
      (["QuerkraftUndMomentBestimmte","Biegelinien"], [], append_rls "e_rls" e_rls [], NONE,
s1210629013@55339
   124
        [["IntegrierenUndKonstanteBestimmen","1xIntegrieren"]])),
s1210629013@55339
   125
    (prep_pbt thy "pbl_bieg_vonq" [] e_pblID
s1210629013@55339
   126
      (["vonBelastungZu","Biegelinien"],
s1210629013@55339
   127
          [("#Given" ,["Streckenlast q_q","FunktionsVariable v_v"]),
s1210629013@55339
   128
            ("#Find"  ,["Funktionen funs'''"])],
s1210629013@55339
   129
        append_rls "e_rls" e_rls [], NONE, [["Biegelinien","ausBelastung"]])),
s1210629013@55339
   130
    (prep_pbt thy "pbl_bieg_randbed" [] e_pblID
s1210629013@55339
   131
      (["setzeRandbedingungen","Biegelinien"],
s1210629013@55339
   132
          [("#Given" ,["Funktionen fun_s","Randbedingungen r_b"]),
s1210629013@55339
   133
            ("#Find"  ,["Gleichungen equs'''"])],
s1210629013@55339
   134
        append_rls "e_rls" e_rls [], NONE, [["Biegelinien","setzeRandbedingungenEin"]])),
s1210629013@55339
   135
    (prep_pbt thy "pbl_equ_fromfun" [] e_pblID
s1210629013@55339
   136
      (["makeFunctionTo","equation"],
s1210629013@55339
   137
          [("#Given" ,["functionEq fu_n","substitution su_b"]),
s1210629013@55339
   138
            ("#Find"  ,["equality equ'''"])],
s1210629013@55339
   139
        append_rls "e_rls" e_rls [], NONE, [["Equation","fromFunction"]]))] *}
neuper@37999
   140
ML {*
neuper@37954
   141
(** methods **)
neuper@37954
   142
neuper@37954
   143
val srls = Rls {id="srls_IntegrierenUnd..", 
neuper@37954
   144
		preconds = [], 
neuper@37954
   145
		rew_ord = ("termlessI",termlessI), 
neuper@37954
   146
		erls = append_rls "erls_in_srls_IntegrierenUnd.." e_rls
neuper@37999
   147
				  [(*for asm in NTH_CONS ...*)
neuper@38045
   148
				   Calc ("Orderings.ord_class.less",eval_equ "#less_"),
neuper@37999
   149
				   (*2nd NTH_CONS pushes n+-1 into asms*)
neuper@38014
   150
				   Calc("Groups.plus_class.plus", eval_binop "#add_")
neuper@37954
   151
				   ], 
neuper@42451
   152
		srls = Erls, calc = [], errpatts = [],
neuper@37999
   153
		rules = [Thm ("NTH_CONS",num_str @{thm NTH_CONS}),
neuper@38014
   154
			 Calc("Groups.plus_class.plus", eval_binop "#add_"),
neuper@37999
   155
			 Thm ("NTH_NIL",num_str @{thm NTH_NIL}),
neuper@37954
   156
			 Calc("Tools.lhs", eval_lhs"eval_lhs_"),
neuper@37954
   157
			 Calc("Tools.rhs", eval_rhs"eval_rhs_"),
neuper@37954
   158
			 Calc("Atools.argument'_in",
neuper@37954
   159
			      eval_argument_in "Atools.argument'_in")
neuper@37954
   160
			 ],
neuper@37954
   161
		scr = EmptyScr};
neuper@37954
   162
    
neuper@37954
   163
val srls2 = 
neuper@37954
   164
    Rls {id="srls_IntegrierenUnd..", 
neuper@37954
   165
	 preconds = [], 
neuper@37954
   166
	 rew_ord = ("termlessI",termlessI), 
neuper@37954
   167
	 erls = append_rls "erls_in_srls_IntegrierenUnd.." e_rls
neuper@37999
   168
			   [(*for asm in NTH_CONS ...*)
neuper@38045
   169
			    Calc ("Orderings.ord_class.less",eval_equ "#less_"),
neuper@37999
   170
			    (*2nd NTH_CONS pushes n+-1 into asms*)
neuper@38014
   171
			    Calc("Groups.plus_class.plus", eval_binop "#add_")
neuper@37954
   172
			    ], 
neuper@42451
   173
	 srls = Erls, calc = [], errpatts = [],
neuper@37999
   174
	 rules = [Thm ("NTH_CONS",num_str @{thm NTH_CONS}),
neuper@38014
   175
		  Calc("Groups.plus_class.plus", eval_binop "#add_"),
neuper@37999
   176
		  Thm ("NTH_NIL", num_str @{thm NTH_NIL}),
neuper@37954
   177
		  Calc("Tools.lhs", eval_lhs "eval_lhs_"),
neuper@37954
   178
		  Calc("Atools.filter'_sameFunId",
neuper@37954
   179
		       eval_filter_sameFunId "Atools.filter'_sameFunId"),
neuper@37954
   180
		  (*WN070514 just for smltest/../biegelinie.sml ...*)
neuper@37954
   181
		  Calc("Atools.sameFunId", eval_sameFunId "Atools.sameFunId"),
neuper@37969
   182
		  Thm ("filter_Cons", num_str @{thm filter_Cons}),
neuper@37969
   183
		  Thm ("filter_Nil", num_str @{thm filter_Nil}),
neuper@37969
   184
		  Thm ("if_True", num_str @{thm if_True}),
neuper@37969
   185
		  Thm ("if_False", num_str @{thm if_False}),
neuper@37969
   186
		  Thm ("hd_thm", num_str @{thm hd_thm})
neuper@37954
   187
		  ],
neuper@37954
   188
	 scr = EmptyScr};
neuper@37999
   189
*}
neuper@37999
   190
neuper@37999
   191
ML {*
neuper@37954
   192
store_met
neuper@42387
   193
  (prep_met thy "met_biege" [] e_metID 
neuper@42387
   194
	    (["IntegrierenUndKonstanteBestimmen"],
neuper@42387
   195
	     [("#Given" ,["Traegerlaenge l_l", "Streckenlast q__q", "FunktionsVariable v_v"]),
neuper@37999
   196
		(*("#Where",["0 < l_l"]), ...wait for &lt; and handling Arbfix*)
neuper@42387
   197
		      ("#Find"  ,["Biegelinie b_b"]),
neuper@42387
   198
		      ("#Relate",["RandbedingungenBiegung r_b", "RandbedingungenMoment r_m"])],
neuper@42387
   199
	     {rew_ord'="tless_true", 
neuper@42387
   200
	      rls' = append_rls "erls_IntegrierenUndK.." e_rls 
neuper@42387
   201
				        [Calc ("Atools.ident",eval_ident "#ident_"),
neuper@42387
   202
				         Thm ("not_true",num_str @{thm not_true}),
neuper@42387
   203
				         Thm ("not_false",num_str @{thm not_false})], 
neuper@42425
   204
				       calc = [], srls = srls, prls = Erls, crls = Atools_erls, errpats = [], nrls = Erls},
neuper@42387
   205
"Script BiegelinieScript                                                 " ^
neuper@42387
   206
"(l_l::real) (q__q::real) (v_v::real) (b_b::real=>real)                  " ^
neuper@42387
   207
"(r_b::bool list) (r_m::bool list) =                                     " ^
neuper@42387
   208
"  (let q___q = Take (qq v_v = q__q);                                    " ^
neuper@42387
   209
"       q___q = ((Rewrite sym_neg_equal_iff_equal True) @@               " ^
neuper@42387
   210
"              (Rewrite Belastung_Querkraft True)) q___q;                " ^
neuper@42387
   211
"      (Q__Q:: bool) =                                                   " ^
neuper@42387
   212
"             (SubProblem (Biegelinie',[named,integrate,function],       " ^
neuper@42387
   213
"                          [diff,integration,named])                     " ^
neuper@37999
   214
"                          [REAL (rhs q___q), REAL v_v, REAL_REAL Q]);   " ^
neuper@42387
   215
"       Q__Q = Rewrite Querkraft_Moment True Q__Q;                       " ^
neuper@42387
   216
"      (M__M::bool) =                                                    " ^
neuper@42387
   217
"             (SubProblem (Biegelinie',[named,integrate,function],       " ^
neuper@42387
   218
"                          [diff,integration,named])                     " ^
neuper@37999
   219
"                          [REAL (rhs Q__Q), REAL v_v, REAL_REAL M_b]);  " ^
neuper@42387
   220
                                        (*([5], Res), M_b x = c_2 + c * x + -1 * q_0 / 2 * x ^^^ 2*)
neuper@37999
   221
"       e__1 = NTH 1 r_m;                                                " ^
neuper@42387
   222
"      (x__1::real) = argument_in (lhs e__1);                            " ^
neuper@42387
   223
"      (M__1::bool) = (Substitute [v_v = x__1]) M__M;                    " ^
neuper@42387
   224
                                        (*([6], Res), M_b 0 = c_2 + c * 0 + -1 * q_0 / 2 * 0 ^^^ 2*)
neuper@42387
   225
"       M__1        = (Substitute [e__1]) M__1;                          " ^
neuper@42387
   226
                                        (*([7], Res), 0 = c_2 + c * 0 + -1 * q_0 / 2 * 0 ^^^ 2*)
neuper@42387
   227
"       M__2 = Take M__M;                                                " ^
neuper@42387
   228
                                        (*([8], Frm), M_b x = c_2 + c * x + -1 * q_0 / 2 * x ^^^ 2*)
neuper@42387
   229
(*without above Take 'Substitute [v_v = x__2]' takes _last formula from ctree_*)
neuper@37999
   230
"       e__2 = NTH 2 r_m;                                                " ^
neuper@42387
   231
"      (x__2::real) = argument_in (lhs e__2);                            " ^
neuper@42387
   232
"      (M__2::bool) = (Substitute [v_v = x__2]) M__M;                    " ^
neuper@42387
   233
                                        (*([8], Res), M_b L = c_2 + c * L + -1 * q_0 / 2 * L ^^^ 2*)
neuper@42387
   234
"       M__2        = (Substitute [e__2]) M__2;                          " ^
neuper@42387
   235
                                        (**)
neuper@42387
   236
"      (c_1_2::bool list) =                                              " ^
neuper@55276
   237
"             (SubProblem (Biegelinie',[LINEAR,system],[no_met])         " ^
neuper@42387
   238
"                          [BOOL_LIST [M__1, M__2], REAL_LIST [c,c_2]]); " ^
neuper@42387
   239
"       M__M = Take  M__M;                                               " ^
neuper@37999
   240
"       M__M = ((Substitute c_1_2) @@                                    " ^
neuper@42387
   241
"              (Try (Rewrite_Set_Inst [(bdv_1, c),(bdv_2, c_2)]          " ^
neuper@42387
   242
"                                   simplify_System False)) @@           " ^
neuper@42387
   243
"              (Rewrite Moment_Neigung False) @@                         " ^
neuper@42387
   244
"              (Rewrite make_fun_explicit False)) M__M;                  " ^
neuper@37954
   245
(*----------------------- and the same once more ------------------------*)
neuper@42387
   246
"      (N__N:: bool) =                                                   " ^
neuper@42387
   247
"             (SubProblem (Biegelinie',[named,integrate,function],       " ^
neuper@42387
   248
"                          [diff,integration,named])                     " ^
neuper@37999
   249
"                          [REAL (rhs M__M), REAL v_v, REAL_REAL y']);   " ^
neuper@42387
   250
"      (B__B:: bool) =                                                   " ^
neuper@42387
   251
"             (SubProblem (Biegelinie',[named,integrate,function],       " ^
neuper@42387
   252
"                          [diff,integration,named])                     " ^
neuper@37999
   253
"                          [REAL (rhs N__N), REAL v_v, REAL_REAL y]);    " ^
neuper@37999
   254
"       e__1 = NTH 1 r_b;                                                " ^
neuper@42387
   255
"      (x__1::real) = argument_in (lhs e__1);                            " ^
neuper@42387
   256
"      (B__1::bool) = (Substitute [v_v = x__1]) B__B;                    " ^
neuper@42387
   257
"       B__1        = (Substitute [e__1]) B__1 ;                         " ^
neuper@42387
   258
"       B__2 = Take B__B;                                                " ^
neuper@37999
   259
"       e__2 = NTH 2 r_b;                                                " ^
neuper@42387
   260
"      (x__2::real) = argument_in (lhs e__2);                            " ^
neuper@42387
   261
"      (B__2::bool) = (Substitute [v_v = x__2]) B__B;                    " ^
neuper@42387
   262
"       B__2        = (Substitute [e__2]) B__2 ;                         " ^
neuper@42387
   263
"      (c_1_2::bool list) =                                              " ^
neuper@55276
   264
"             (SubProblem (Biegelinie',[LINEAR,system],[no_met])         " ^
neuper@42387
   265
"                          [BOOL_LIST [B__1, B__2], REAL_LIST [c,c_2]]); " ^
neuper@42387
   266
"       B__B = Take  B__B;                                               " ^
neuper@37999
   267
"       B__B = ((Substitute c_1_2) @@                                    " ^
neuper@42387
   268
"              (Rewrite_Set_Inst [(bdv, x)] make_ratpoly_in False)) B__B " ^
neuper@37999
   269
" in B__B)"
neuper@37954
   270
));
neuper@37999
   271
*}
neuper@37999
   272
ML {*
neuper@37954
   273
store_met
neuper@42387
   274
  (prep_met thy "met_biege_2" [] e_metID
neuper@42387
   275
	    (["IntegrierenUndKonstanteBestimmen2"],
neuper@42387
   276
	     [("#Given" ,["Traegerlaenge l_l", "Streckenlast q__q", "FunktionsVariable v_v"]),
neuper@37999
   277
		(*("#Where",["0 < l_l"]), ...wait for &lt; and handling Arbfix*)
neuper@42387
   278
		      ("#Find"  ,["Biegelinie b_b"]),
neuper@42387
   279
		      ("#Relate",["Randbedingungen r_b"])],
neuper@42387
   280
	    {rew_ord'="tless_true", 
neuper@42387
   281
	     rls' = append_rls "erls_IntegrierenUndK.." e_rls 
neuper@42387
   282
				       [Calc ("Atools.ident",eval_ident "#ident_"),
neuper@42387
   283
				        Thm ("not_true",num_str @{thm not_true}),
neuper@42387
   284
				        Thm ("not_false",num_str @{thm not_false})], 
neuper@42387
   285
				     calc = [], 
neuper@42387
   286
				     srls = append_rls "erls_IntegrierenUndK.." e_rls 
neuper@42387
   287
				       [Calc("Tools.rhs", eval_rhs"eval_rhs_"),
neuper@42387
   288
				        Calc ("Atools.ident",eval_ident "#ident_"),
neuper@42387
   289
				        Thm ("last_thmI",num_str @{thm last_thmI}),
neuper@42387
   290
				        Thm ("if_True",num_str @{thm if_True}),
neuper@42387
   291
				        Thm ("if_False",num_str @{thm if_False})],
neuper@42425
   292
				     prls = Erls, crls = Atools_erls, errpats = [], nrls = Erls},
neuper@42387
   293
"Script Biegelinie2Script                                                  " ^
neuper@37999
   294
"(l_l::real) (q__q::real) (v_v::real) (b_b::real=>real) (r_b::bool list) = " ^
neuper@42387
   295
"  (let                                                                    " ^
neuper@42387
   296
"      (fun_s:: bool list) =                                               " ^
neuper@42387
   297
"             (SubProblem (Biegelinie',[vonBelastungZu,Biegelinien],       " ^
neuper@42387
   298
"                          [Biegelinien,ausBelastung])                     " ^
neuper@42387
   299
"                          [REAL q__q, REAL v_v]);                         " ^
neuper@42387
   300
"      (equ_s::bool list) =                                                " ^
neuper@42387
   301
"             (SubProblem (Biegelinie',[setzeRandbedingungen,Biegelinien], " ^
neuper@42387
   302
"                          [Biegelinien,setzeRandbedingungenEin])          " ^
neuper@37999
   303
"                          [BOOL_LIST fun_s, BOOL_LIST r_b]);              " ^
neuper@42387
   304
"      (con_s::bool list) =                                                " ^
neuper@55276
   305
"             (SubProblem (Biegelinie',[LINEAR,system],[no_met])           " ^
neuper@42387
   306
"                          [BOOL_LIST equ_s, REAL_LIST [c,c_2,c_3,c_4]]);  " ^
neuper@37999
   307
"       B_B = Take (lastI fun_s);                                          " ^
neuper@37999
   308
"       B_B = ((Substitute con_s) @@                                       " ^
neuper@42387
   309
"              (Rewrite_Set_Inst [(bdv, v_v)] make_ratpoly_in False)) B_B  " ^
neuper@37999
   310
" in B_B)"
neuper@37954
   311
));
neuper@37954
   312
neuper@37999
   313
*}
neuper@37999
   314
ML {*
neuper@37954
   315
store_met
neuper@37972
   316
    (prep_met thy "met_biege_intconst_2" [] e_metID
neuper@37954
   317
	      (["IntegrierenUndKonstanteBestimmen","2xIntegrieren"],
neuper@37954
   318
	       [],
neuper@37954
   319
	       {rew_ord'="tless_true", rls'=Erls, calc = [], 
neuper@37954
   320
		srls = e_rls, 
neuper@37954
   321
		prls=e_rls,
neuper@42425
   322
	     crls = Atools_erls, errpats = [], nrls = e_rls},
neuper@37954
   323
"empty_script"
neuper@37954
   324
));
neuper@37954
   325
neuper@37954
   326
store_met
neuper@37972
   327
    (prep_met thy "met_biege_intconst_4" [] e_metID
neuper@37954
   328
	      (["IntegrierenUndKonstanteBestimmen","4x4System"],
neuper@37954
   329
	       [],
neuper@37954
   330
	       {rew_ord'="tless_true", rls'=Erls, calc = [], 
neuper@37954
   331
		srls = e_rls, 
neuper@37954
   332
		prls=e_rls,
neuper@42425
   333
	     crls = Atools_erls, errpats = [], nrls = e_rls},
neuper@37954
   334
"empty_script"
neuper@37954
   335
));
neuper@37954
   336
neuper@37954
   337
store_met
neuper@37972
   338
    (prep_met thy "met_biege_intconst_1" [] e_metID
neuper@37954
   339
	      (["IntegrierenUndKonstanteBestimmen","1xIntegrieren"],
neuper@37954
   340
	       [],
neuper@37954
   341
	       {rew_ord'="tless_true", rls'=Erls, calc = [], 
neuper@37954
   342
		srls = e_rls, 
neuper@37954
   343
		prls=e_rls,
neuper@42425
   344
	     crls = Atools_erls, errpats = [], nrls = e_rls},
neuper@37954
   345
"empty_script"
neuper@37954
   346
));
neuper@37954
   347
neuper@37954
   348
store_met
neuper@37972
   349
    (prep_met thy "met_biege2" [] e_metID
neuper@37954
   350
	      (["Biegelinien"],
neuper@37954
   351
	       [],
neuper@37954
   352
	       {rew_ord'="tless_true", rls'=Erls, calc = [], 
neuper@37954
   353
		srls = e_rls, 
neuper@37954
   354
		prls=e_rls,
neuper@42425
   355
	     crls = Atools_erls, errpats = [], nrls = e_rls},
neuper@37954
   356
"empty_script"
neuper@37954
   357
));
neuper@37954
   358
neuper@37999
   359
*}
neuper@37999
   360
ML {*
neuper@37954
   361
store_met
neuper@42387
   362
  (prep_met thy "met_biege_ausbelast" [] e_metID
neuper@42387
   363
	    (["Biegelinien", "ausBelastung"],
neuper@42387
   364
	     [("#Given" ,["Streckenlast q__q", "FunktionsVariable v_v"]),
neuper@42387
   365
	      ("#Find"  ,["Funktionen fun_s"])],
neuper@42387
   366
	     {rew_ord'="tless_true", 
neuper@42387
   367
	      rls' = append_rls "erls_ausBelastung" e_rls 
neuper@42387
   368
				        [Calc ("Atools.ident", eval_ident "#ident_"),
neuper@42387
   369
				         Thm ("not_true", num_str @{thm not_true}),
neuper@42387
   370
				         Thm ("not_false", num_str @{thm not_false})], 
neuper@42387
   371
				      calc = [], 
neuper@42387
   372
				      srls = append_rls "srls_ausBelastung" e_rls 
neuper@42387
   373
				        [Calc ("Tools.rhs", eval_rhs "eval_rhs_")], 
neuper@42425
   374
				      prls = e_rls, crls = Atools_erls, errpats = [], nrls = e_rls},
neuper@42387
   375
"Script Belastung2BiegelScript (q__q::real) (v_v::real) =               " ^
neuper@42387
   376
"  (let q___q = Take (qq v_v = q__q);                                  " ^
neuper@42387
   377
"       q___q = ((Rewrite sym_neg_equal_iff_equal True) @@              " ^
neuper@42387
   378
"              (Rewrite Belastung_Querkraft True)) q___q;               " ^
neuper@42387
   379
"      (Q__Q:: bool) =                                                  " ^
neuper@42387
   380
"             (SubProblem (Biegelinie',[named,integrate,function],      " ^
neuper@42387
   381
"                          [diff,integration,named])                    " ^
neuper@42387
   382
"                          [REAL (rhs q___q), REAL v_v, REAL_REAL Q]);  " ^
neuper@42387
   383
"       M__M = Rewrite Querkraft_Moment True Q__Q;                      " ^
neuper@42387
   384
"      (M__M::bool) =                                                   " ^
neuper@42387
   385
"             (SubProblem (Biegelinie',[named,integrate,function],      " ^
neuper@42387
   386
"                          [diff,integration,named])                    " ^
neuper@42387
   387
"                          [REAL (rhs M__M), REAL v_v, REAL_REAL M_b]); " ^
neuper@42387
   388
"       N__N = ((Rewrite Moment_Neigung False) @@                       " ^
neuper@42387
   389
"              (Rewrite make_fun_explicit False)) M__M;                 " ^
neuper@42387
   390
"      (N__N:: bool) =                                                  " ^
neuper@42387
   391
"             (SubProblem (Biegelinie',[named,integrate,function],      " ^
neuper@42387
   392
"                          [diff,integration,named])                    " ^
neuper@42387
   393
"                          [REAL (rhs N__N), REAL v_v, REAL_REAL y']);  " ^
neuper@42387
   394
"      (B__B:: bool) =                                                  " ^
neuper@42387
   395
"             (SubProblem (Biegelinie',[named,integrate,function],      " ^
neuper@42387
   396
"                          [diff,integration,named])                    " ^
neuper@42387
   397
"                          [REAL (rhs N__N), REAL v_v, REAL_REAL y])    " ^
neuper@37999
   398
" in [Q__Q, M__M, N__N, B__B])"
neuper@37954
   399
));
neuper@37954
   400
neuper@37999
   401
*}
neuper@37999
   402
ML {*
neuper@37954
   403
store_met
neuper@37972
   404
    (prep_met thy "met_biege_setzrand" [] e_metID
neuper@42387
   405
	      (["Biegelinien", "setzeRandbedingungenEin"],
neuper@42387
   406
	       [("#Given" , ["Funktionen fun_s", "Randbedingungen r_b"]),
neuper@42387
   407
	        ("#Find"  , ["Gleichungen equs'''"])],
neuper@37954
   408
	       {rew_ord'="tless_true", rls'=Erls, calc = [], 
neuper@37954
   409
		srls = srls2, 
neuper@37954
   410
		prls=e_rls,
neuper@42425
   411
	     crls = Atools_erls, errpats = [], nrls = e_rls},
neuper@37999
   412
"Script SetzeRandbedScript (fun_s::bool list) (r_b::bool list) = " ^
neuper@37999
   413
" (let b_1 = NTH 1 r_b;                                         " ^
neuper@37999
   414
"      f_s = filter_sameFunId (lhs b_1) fun_s;                   " ^
neuper@37999
   415
"      (e_1::bool) =                                             " ^
neuper@37999
   416
"             (SubProblem (Biegelinie',[makeFunctionTo,equation]," ^
neuper@37954
   417
"                          [Equation,fromFunction])              " ^
neuper@37999
   418
"                          [BOOL (hd f_s), BOOL b_1]);         " ^
neuper@37999
   419
"      b_2 = NTH 2 r_b;                                         " ^
neuper@37999
   420
"      f_s = filter_sameFunId (lhs b_2) fun_s;                   " ^
neuper@37999
   421
"      (e_2::bool) =                                             " ^
neuper@37999
   422
"             (SubProblem (Biegelinie',[makeFunctionTo,equation]," ^
neuper@37954
   423
"                          [Equation,fromFunction])              " ^
neuper@37999
   424
"                          [BOOL (hd f_s), BOOL b_2]);         " ^
neuper@37999
   425
"      b_3 = NTH 3 r_b;                                         " ^
neuper@37999
   426
"      f_s = filter_sameFunId (lhs b_3) fun_s;                   " ^
neuper@37999
   427
"      (e_3::bool) =                                             " ^
neuper@37999
   428
"             (SubProblem (Biegelinie',[makeFunctionTo,equation]," ^
neuper@37954
   429
"                          [Equation,fromFunction])              " ^
neuper@37999
   430
"                          [BOOL (hd f_s), BOOL b_3]);         " ^
neuper@37999
   431
"      b_4 = NTH 4 r_b;                                         " ^
neuper@37999
   432
"      f_s = filter_sameFunId (lhs b_4) fun_s;                   " ^
neuper@37999
   433
"      (e_4::bool) =                                             " ^
neuper@37999
   434
"             (SubProblem (Biegelinie',[makeFunctionTo,equation]," ^
neuper@37954
   435
"                          [Equation,fromFunction])              " ^
neuper@37999
   436
"                          [BOOL (hd f_s), BOOL b_4])          " ^
neuper@42387
   437
" in [e_1, e_2, e_3, e_4])"
neuper@37954
   438
(* filter requires more than 1 sec !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
neuper@37999
   439
"Script SetzeRandbedScript (fun_s::bool list) (r_b::bool list) = " ^
neuper@37999
   440
" (let b_1 = NTH 1 r_b;                                         " ^
neuper@37999
   441
"      f_s = filter (sameFunId (lhs b_1)) fun_s;                 " ^
neuper@37999
   442
"      (e_1::bool) =                                             " ^
neuper@37999
   443
"             (SubProblem (Biegelinie',[makeFunctionTo,equation]," ^
neuper@37954
   444
"                          [Equation,fromFunction])              " ^
neuper@37999
   445
"                          [BOOL (hd f_s), BOOL b_1]);         " ^
neuper@37999
   446
"      b_2 = NTH 2 r_b;                                         " ^
neuper@37999
   447
"      f_s = filter (sameFunId (lhs b_2)) fun_s;                 " ^
neuper@37999
   448
"      (e_2::bool) =                                             " ^
neuper@37999
   449
"             (SubProblem (Biegelinie',[makeFunctionTo,equation]," ^
neuper@37954
   450
"                          [Equation,fromFunction])              " ^
neuper@37999
   451
"                          [BOOL (hd f_s), BOOL b_2]);         " ^
neuper@37999
   452
"      b_3 = NTH 3 r_b;                                         " ^
neuper@37999
   453
"      f_s = filter (sameFunId (lhs b_3)) fun_s;                 " ^
neuper@37999
   454
"      (e_3::bool) =                                             " ^
neuper@37999
   455
"             (SubProblem (Biegelinie',[makeFunctionTo,equation]," ^
neuper@37954
   456
"                          [Equation,fromFunction])              " ^
neuper@37999
   457
"                          [BOOL (hd f_s), BOOL b_3]);         " ^
neuper@37999
   458
"      b_4 = NTH 4 r_b;                                         " ^
neuper@37999
   459
"      f_s = filter (sameFunId (lhs b_4)) fun_s;                 " ^
neuper@37999
   460
"      (e_4::bool) =                                             " ^
neuper@37999
   461
"             (SubProblem (Biegelinie',[makeFunctionTo,equation]," ^
neuper@37954
   462
"                          [Equation,fromFunction])              " ^
neuper@37999
   463
"                          [BOOL (hd f_s), BOOL b_4])          " ^
neuper@37999
   464
" in [e_1,e_2,e_3,e_4])"*)
neuper@37954
   465
));
neuper@37954
   466
neuper@37999
   467
*}
neuper@37999
   468
ML {*
neuper@37954
   469
store_met
neuper@42387
   470
  (prep_met thy "met_equ_fromfun" [] e_metID
neuper@42387
   471
	    (["Equation","fromFunction"],
neuper@42387
   472
	     [("#Given" ,["functionEq fu_n","substitution su_b"]),
neuper@42387
   473
	      ("#Find"  ,["equality equ'''"])],
neuper@42387
   474
	     {rew_ord'="tless_true", rls'=Erls, calc = [], 
neuper@42387
   475
	      srls = append_rls "srls_in_EquationfromFunc" e_rls
neuper@42387
   476
				        [Calc("Tools.lhs", eval_lhs"eval_lhs_"),
neuper@42387
   477
				         Calc("Atools.argument'_in", eval_argument_in "Atools.argument'_in")], 
neuper@42425
   478
				       prls=e_rls, crls = Atools_erls, errpats = [], nrls = e_rls},
neuper@37954
   479
(*(M_b x = c_2 + c * x + -1 * q_0 / 2 * x ^^^ 2) (M_b L = 0) -->
neuper@37954
   480
       0 = c_2 + c * L + -1 * q_0 / 2 * L ^^^ 2*)
neuper@37999
   481
"Script Function2Equality (fu_n::bool) (su_b::bool) =" ^
neuper@37999
   482
" (let fu_n = Take fu_n;                             " ^
neuper@37999
   483
"      bd_v = argument_in (lhs fu_n);                " ^
neuper@37999
   484
"      va_l = argument_in (lhs su_b);                " ^
neuper@37999
   485
"      eq_u = (Substitute [bd_v = va_l]) fu_n;       " ^
neuper@42387
   486
                                        (*([1], Res), M_b L = c_2 + c * L + -1 * q_0 / 2 * L ^^^ 2*)
neuper@42387
   487
"      eq_u = (Substitute [su_b]) eq_u               " ^
neuper@42387
   488
" in (Rewrite_Set norm_Rational False) eq_u)         "
neuper@37954
   489
));
neuper@37954
   490
*}
neuper@37954
   491
s1210629013@55373
   492
setup {* KEStore_Elems.add_mets
s1210629013@55373
   493
  [prep_met thy "met_biege" [] e_metID 
s1210629013@55373
   494
	    (["IntegrierenUndKonstanteBestimmen"],
s1210629013@55373
   495
	      [("#Given" ,["Traegerlaenge l_l", "Streckenlast q__q", "FunktionsVariable v_v"]),
s1210629013@55373
   496
		      (*("#Where",["0 < l_l"]), ...wait for &lt; and handling Arbfix*)
s1210629013@55373
   497
		      ("#Find"  ,["Biegelinie b_b"]),
s1210629013@55373
   498
		      ("#Relate",["RandbedingungenBiegung r_b", "RandbedingungenMoment r_m"])],
s1210629013@55373
   499
	    {rew_ord'="tless_true",
s1210629013@55373
   500
        rls' = append_rls "erls_IntegrierenUndK.." e_rls 
s1210629013@55373
   501
				    [Calc ("Atools.ident",eval_ident "#ident_"),
s1210629013@55373
   502
				      Thm ("not_true",num_str @{thm not_true}),
s1210629013@55373
   503
				      Thm ("not_false",num_str @{thm not_false})], 
s1210629013@55373
   504
				calc = [], srls = srls, prls = Erls, crls = Atools_erls, errpats = [], nrls = Erls},
s1210629013@55373
   505
        "Script BiegelinieScript                                                 " ^
s1210629013@55373
   506
          "(l_l::real) (q__q::real) (v_v::real) (b_b::real=>real)                  " ^
s1210629013@55373
   507
          "(r_b::bool list) (r_m::bool list) =                                     " ^
s1210629013@55373
   508
          "  (let q___q = Take (qq v_v = q__q);                                    " ^
s1210629013@55373
   509
          "       q___q = ((Rewrite sym_neg_equal_iff_equal True) @@               " ^
s1210629013@55373
   510
          "              (Rewrite Belastung_Querkraft True)) q___q;                " ^
s1210629013@55373
   511
          "      (Q__Q:: bool) =                                                   " ^
s1210629013@55373
   512
          "             (SubProblem (Biegelinie',[named,integrate,function],       " ^
s1210629013@55373
   513
          "                          [diff,integration,named])                     " ^
s1210629013@55373
   514
          "                          [REAL (rhs q___q), REAL v_v, REAL_REAL Q]);   " ^
s1210629013@55373
   515
          "       Q__Q = Rewrite Querkraft_Moment True Q__Q;                       " ^
s1210629013@55373
   516
          "      (M__M::bool) =                                                    " ^
s1210629013@55373
   517
          "             (SubProblem (Biegelinie',[named,integrate,function],       " ^
s1210629013@55373
   518
          "                          [diff,integration,named])                     " ^
s1210629013@55373
   519
          "                          [REAL (rhs Q__Q), REAL v_v, REAL_REAL M_b]);  " ^
s1210629013@55373
   520
                                        (*([5], Res), M_b x = c_2 + c * x + -1 * q_0 / 2 * x ^^^ 2*)
s1210629013@55373
   521
          "       e__1 = NTH 1 r_m;                                                " ^
s1210629013@55373
   522
          "      (x__1::real) = argument_in (lhs e__1);                            " ^
s1210629013@55373
   523
          "      (M__1::bool) = (Substitute [v_v = x__1]) M__M;                    " ^
s1210629013@55373
   524
                                        (*([6], Res), M_b 0 = c_2 + c * 0 + -1 * q_0 / 2 * 0 ^^^ 2*)
s1210629013@55373
   525
          "       M__1        = (Substitute [e__1]) M__1;                          " ^
s1210629013@55373
   526
                                            (*([7], Res), 0 = c_2 + c * 0 + -1 * q_0 / 2 * 0 ^^^ 2*)
s1210629013@55373
   527
          "       M__2 = Take M__M;                                                " ^
s1210629013@55373
   528
                                        (*([8], Frm), M_b x = c_2 + c * x + -1 * q_0 / 2 * x ^^^ 2*)
s1210629013@55373
   529
          (*without above Take 'Substitute [v_v = x__2]' takes _last formula from ctree_*)
s1210629013@55373
   530
          "       e__2 = NTH 2 r_m;                                                " ^
s1210629013@55373
   531
          "      (x__2::real) = argument_in (lhs e__2);                            " ^
s1210629013@55373
   532
          "      (M__2::bool) = (Substitute [v_v = x__2]) M__M;                    " ^
s1210629013@55373
   533
                                        (*([8], Res), M_b L = c_2 + c * L + -1 * q_0 / 2 * L ^^^ 2*)
s1210629013@55373
   534
          "       M__2        = (Substitute [e__2]) M__2;                          " ^
s1210629013@55373
   535
          "      (c_1_2::bool list) =                                              " ^
s1210629013@55373
   536
          "             (SubProblem (Biegelinie',[LINEAR,system],[no_met])         " ^
s1210629013@55373
   537
          "                          [BOOL_LIST [M__1, M__2], REAL_LIST [c,c_2]]); " ^
s1210629013@55373
   538
          "       M__M = Take  M__M;                                               " ^
s1210629013@55373
   539
          "       M__M = ((Substitute c_1_2) @@                                    " ^
s1210629013@55373
   540
          "              (Try (Rewrite_Set_Inst [(bdv_1, c),(bdv_2, c_2)]          " ^
s1210629013@55373
   541
          "                                   simplify_System False)) @@           " ^
s1210629013@55373
   542
          "              (Rewrite Moment_Neigung False) @@                         " ^
s1210629013@55373
   543
          "              (Rewrite make_fun_explicit False)) M__M;                  " ^
s1210629013@55373
   544
          (*----------------------- and the same once more ------------------------*)
s1210629013@55373
   545
          "      (N__N:: bool) =                                                   " ^
s1210629013@55373
   546
          "             (SubProblem (Biegelinie',[named,integrate,function],       " ^
s1210629013@55373
   547
          "                          [diff,integration,named])                     " ^
s1210629013@55373
   548
          "                          [REAL (rhs M__M), REAL v_v, REAL_REAL y']);   " ^
s1210629013@55373
   549
          "      (B__B:: bool) =                                                   " ^
s1210629013@55373
   550
          "             (SubProblem (Biegelinie',[named,integrate,function],       " ^
s1210629013@55373
   551
          "                          [diff,integration,named])                     " ^
s1210629013@55373
   552
          "                          [REAL (rhs N__N), REAL v_v, REAL_REAL y]);    " ^
s1210629013@55373
   553
          "       e__1 = NTH 1 r_b;                                                " ^
s1210629013@55373
   554
          "      (x__1::real) = argument_in (lhs e__1);                            " ^
s1210629013@55373
   555
          "      (B__1::bool) = (Substitute [v_v = x__1]) B__B;                    " ^
s1210629013@55373
   556
          "       B__1        = (Substitute [e__1]) B__1 ;                         " ^
s1210629013@55373
   557
          "       B__2 = Take B__B;                                                " ^
s1210629013@55373
   558
          "       e__2 = NTH 2 r_b;                                                " ^
s1210629013@55373
   559
          "      (x__2::real) = argument_in (lhs e__2);                            " ^
s1210629013@55373
   560
          "      (B__2::bool) = (Substitute [v_v = x__2]) B__B;                    " ^
s1210629013@55373
   561
          "       B__2        = (Substitute [e__2]) B__2 ;                         " ^
s1210629013@55373
   562
          "      (c_1_2::bool list) =                                              " ^
s1210629013@55373
   563
          "             (SubProblem (Biegelinie',[LINEAR,system],[no_met])         " ^
s1210629013@55373
   564
          "                          [BOOL_LIST [B__1, B__2], REAL_LIST [c,c_2]]); " ^
s1210629013@55373
   565
          "       B__B = Take  B__B;                                               " ^
s1210629013@55373
   566
          "       B__B = ((Substitute c_1_2) @@                                    " ^
s1210629013@55373
   567
          "              (Rewrite_Set_Inst [(bdv, x)] make_ratpoly_in False)) B__B " ^
s1210629013@55373
   568
          " in B__B)"),
s1210629013@55373
   569
    prep_met thy "met_biege_2" [] e_metID
s1210629013@55373
   570
	    (["IntegrierenUndKonstanteBestimmen2"],
s1210629013@55373
   571
	      [("#Given" ,["Traegerlaenge l_l", "Streckenlast q__q", "FunktionsVariable v_v"]),
s1210629013@55373
   572
		      (*("#Where",["0 < l_l"]), ...wait for &lt; and handling Arbfix*)
s1210629013@55373
   573
		      ("#Find"  ,["Biegelinie b_b"]),
s1210629013@55373
   574
		      ("#Relate",["Randbedingungen r_b"])],
s1210629013@55373
   575
	      {rew_ord'="tless_true", 
s1210629013@55373
   576
	        rls' = append_rls "erls_IntegrierenUndK.." e_rls 
s1210629013@55373
   577
				      [Calc ("Atools.ident",eval_ident "#ident_"),
s1210629013@55373
   578
				        Thm ("not_true",num_str @{thm not_true}),
s1210629013@55373
   579
				        Thm ("not_false",num_str @{thm not_false})], 
s1210629013@55373
   580
				  calc = [], 
s1210629013@55373
   581
				  srls = append_rls "erls_IntegrierenUndK.." e_rls 
s1210629013@55373
   582
				      [Calc("Tools.rhs", eval_rhs"eval_rhs_"),
s1210629013@55373
   583
				        Calc ("Atools.ident",eval_ident "#ident_"),
s1210629013@55373
   584
				        Thm ("last_thmI",num_str @{thm last_thmI}),
s1210629013@55373
   585
				        Thm ("if_True",num_str @{thm if_True}),
s1210629013@55373
   586
				        Thm ("if_False",num_str @{thm if_False})],
s1210629013@55373
   587
				  prls = Erls, crls = Atools_erls, errpats = [], nrls = Erls},
s1210629013@55373
   588
        "Script Biegelinie2Script                                                  " ^
s1210629013@55373
   589
          "(l_l::real) (q__q::real) (v_v::real) (b_b::real=>real) (r_b::bool list) = " ^
s1210629013@55373
   590
          "  (let                                                                    " ^
s1210629013@55373
   591
          "      (fun_s:: bool list) =                                               " ^
s1210629013@55373
   592
          "             (SubProblem (Biegelinie',[vonBelastungZu,Biegelinien],       " ^
s1210629013@55373
   593
          "                          [Biegelinien,ausBelastung])                     " ^
s1210629013@55373
   594
          "                          [REAL q__q, REAL v_v]);                         " ^
s1210629013@55373
   595
          "      (equ_s::bool list) =                                                " ^
s1210629013@55373
   596
          "             (SubProblem (Biegelinie',[setzeRandbedingungen,Biegelinien], " ^
s1210629013@55373
   597
          "                          [Biegelinien,setzeRandbedingungenEin])          " ^
s1210629013@55373
   598
          "                          [BOOL_LIST fun_s, BOOL_LIST r_b]);              " ^
s1210629013@55373
   599
          "      (con_s::bool list) =                                                " ^
s1210629013@55373
   600
          "             (SubProblem (Biegelinie',[LINEAR,system],[no_met])           " ^
s1210629013@55373
   601
          "                          [BOOL_LIST equ_s, REAL_LIST [c,c_2,c_3,c_4]]);  " ^
s1210629013@55373
   602
          "       B_B = Take (lastI fun_s);                                          " ^
s1210629013@55373
   603
          "       B_B = ((Substitute con_s) @@                                       " ^
s1210629013@55373
   604
          "              (Rewrite_Set_Inst [(bdv, v_v)] make_ratpoly_in False)) B_B  " ^
s1210629013@55373
   605
          " in B_B)"),
s1210629013@55373
   606
    prep_met thy "met_biege_intconst_2" [] e_metID
s1210629013@55373
   607
	    (["IntegrierenUndKonstanteBestimmen","2xIntegrieren"], [],
s1210629013@55373
   608
	      {rew_ord'="tless_true", rls'=Erls, calc = [], srls = e_rls, prls=e_rls, crls = Atools_erls,
s1210629013@55373
   609
          errpats = [], nrls = e_rls},
s1210629013@55373
   610
        "empty_script"),
s1210629013@55373
   611
    prep_met thy "met_biege_intconst_4" [] e_metID
s1210629013@55373
   612
	    (["IntegrierenUndKonstanteBestimmen","4x4System"], [],
s1210629013@55373
   613
	      {rew_ord'="tless_true", rls'=Erls, calc = [], srls = e_rls, prls=e_rls, crls = Atools_erls,
s1210629013@55373
   614
          errpats = [], nrls = e_rls},
s1210629013@55373
   615
        "empty_script"),
s1210629013@55373
   616
    prep_met thy "met_biege_intconst_1" [] e_metID
s1210629013@55373
   617
	    (["IntegrierenUndKonstanteBestimmen","1xIntegrieren"], [],
s1210629013@55373
   618
        {rew_ord'="tless_true", rls'=Erls, calc = [], srls = e_rls, prls=e_rls, crls = Atools_erls,
s1210629013@55373
   619
          errpats = [], nrls = e_rls},
s1210629013@55373
   620
        "empty_script"),
s1210629013@55373
   621
    prep_met thy "met_biege2" [] e_metID
s1210629013@55373
   622
	    (["Biegelinien"], [],
s1210629013@55373
   623
	      {rew_ord'="tless_true", rls'=Erls, calc = [], srls = e_rls, prls=e_rls, crls = Atools_erls,
s1210629013@55373
   624
          errpats = [], nrls = e_rls},
s1210629013@55373
   625
        "empty_script"),
s1210629013@55373
   626
    prep_met thy "met_biege_ausbelast" [] e_metID
s1210629013@55373
   627
	    (["Biegelinien", "ausBelastung"],
s1210629013@55373
   628
	      [("#Given" ,["Streckenlast q__q", "FunktionsVariable v_v"]),
s1210629013@55373
   629
	        ("#Find"  ,["Funktionen fun_s"])],
s1210629013@55373
   630
	      {rew_ord'="tless_true", 
s1210629013@55373
   631
	        rls' = append_rls "erls_ausBelastung" e_rls 
s1210629013@55373
   632
				      [Calc ("Atools.ident", eval_ident "#ident_"),
s1210629013@55373
   633
				        Thm ("not_true", num_str @{thm not_true}),
s1210629013@55373
   634
				        Thm ("not_false", num_str @{thm not_false})], 
s1210629013@55373
   635
				  calc = [], 
s1210629013@55373
   636
				  srls = append_rls "srls_ausBelastung" e_rls 
s1210629013@55373
   637
				      [Calc ("Tools.rhs", eval_rhs "eval_rhs_")], 
s1210629013@55373
   638
				  prls = e_rls, crls = Atools_erls, errpats = [], nrls = e_rls},
s1210629013@55373
   639
        "Script Belastung2BiegelScript (q__q::real) (v_v::real) =               " ^
s1210629013@55373
   640
          "  (let q___q = Take (qq v_v = q__q);                                  " ^
s1210629013@55373
   641
          "       q___q = ((Rewrite sym_neg_equal_iff_equal True) @@              " ^
s1210629013@55373
   642
          "              (Rewrite Belastung_Querkraft True)) q___q;               " ^
s1210629013@55373
   643
          "      (Q__Q:: bool) =                                                  " ^
s1210629013@55373
   644
          "             (SubProblem (Biegelinie',[named,integrate,function],      " ^
s1210629013@55373
   645
          "                          [diff,integration,named])                    " ^
s1210629013@55373
   646
          "                          [REAL (rhs q___q), REAL v_v, REAL_REAL Q]);  " ^
s1210629013@55373
   647
          "       M__M = Rewrite Querkraft_Moment True Q__Q;                      " ^
s1210629013@55373
   648
          "      (M__M::bool) =                                                   " ^
s1210629013@55373
   649
          "             (SubProblem (Biegelinie',[named,integrate,function],      " ^
s1210629013@55373
   650
          "                          [diff,integration,named])                    " ^
s1210629013@55373
   651
          "                          [REAL (rhs M__M), REAL v_v, REAL_REAL M_b]); " ^
s1210629013@55373
   652
          "       N__N = ((Rewrite Moment_Neigung False) @@                       " ^
s1210629013@55373
   653
          "              (Rewrite make_fun_explicit False)) M__M;                 " ^
s1210629013@55373
   654
          "      (N__N:: bool) =                                                  " ^
s1210629013@55373
   655
          "             (SubProblem (Biegelinie',[named,integrate,function],      " ^
s1210629013@55373
   656
          "                          [diff,integration,named])                    " ^
s1210629013@55373
   657
          "                          [REAL (rhs N__N), REAL v_v, REAL_REAL y']);  " ^
s1210629013@55373
   658
          "      (B__B:: bool) =                                                  " ^
s1210629013@55373
   659
          "             (SubProblem (Biegelinie',[named,integrate,function],      " ^
s1210629013@55373
   660
          "                          [diff,integration,named])                    " ^
s1210629013@55373
   661
          "                          [REAL (rhs N__N), REAL v_v, REAL_REAL y])    " ^
s1210629013@55373
   662
          " in [Q__Q, M__M, N__N, B__B])"),
s1210629013@55373
   663
    prep_met thy "met_biege_setzrand" [] e_metID
s1210629013@55373
   664
	    (["Biegelinien", "setzeRandbedingungenEin"],
s1210629013@55373
   665
	      [("#Given" , ["Funktionen fun_s", "Randbedingungen r_b"]),
s1210629013@55373
   666
	        ("#Find"  , ["Gleichungen equs'''"])],
s1210629013@55373
   667
	      {rew_ord'="tless_true", rls'=Erls, calc = [], srls = srls2, prls=e_rls, crls = Atools_erls,
s1210629013@55373
   668
          errpats = [], nrls = e_rls},
s1210629013@55373
   669
        "Script SetzeRandbedScript (fun_s::bool list) (r_b::bool list) = " ^
s1210629013@55373
   670
          " (let b_1 = NTH 1 r_b;                                         " ^
s1210629013@55373
   671
          "      f_s = filter_sameFunId (lhs b_1) fun_s;                   " ^
s1210629013@55373
   672
          "      (e_1::bool) =                                             " ^
s1210629013@55373
   673
          "             (SubProblem (Biegelinie',[makeFunctionTo,equation]," ^
s1210629013@55373
   674
          "                          [Equation,fromFunction])              " ^
s1210629013@55373
   675
          "                          [BOOL (hd f_s), BOOL b_1]);         " ^
s1210629013@55373
   676
          "      b_2 = NTH 2 r_b;                                         " ^
s1210629013@55373
   677
          "      f_s = filter_sameFunId (lhs b_2) fun_s;                   " ^
s1210629013@55373
   678
          "      (e_2::bool) =                                             " ^
s1210629013@55373
   679
          "             (SubProblem (Biegelinie',[makeFunctionTo,equation]," ^
s1210629013@55373
   680
          "                          [Equation,fromFunction])              " ^
s1210629013@55373
   681
          "                          [BOOL (hd f_s), BOOL b_2]);         " ^
s1210629013@55373
   682
          "      b_3 = NTH 3 r_b;                                         " ^
s1210629013@55373
   683
          "      f_s = filter_sameFunId (lhs b_3) fun_s;                   " ^
s1210629013@55373
   684
          "      (e_3::bool) =                                             " ^
s1210629013@55373
   685
          "             (SubProblem (Biegelinie',[makeFunctionTo,equation]," ^
s1210629013@55373
   686
          "                          [Equation,fromFunction])              " ^
s1210629013@55373
   687
          "                          [BOOL (hd f_s), BOOL b_3]);         " ^
s1210629013@55373
   688
          "      b_4 = NTH 4 r_b;                                         " ^
s1210629013@55373
   689
          "      f_s = filter_sameFunId (lhs b_4) fun_s;                   " ^
s1210629013@55373
   690
          "      (e_4::bool) =                                             " ^
s1210629013@55373
   691
          "             (SubProblem (Biegelinie',[makeFunctionTo,equation]," ^
s1210629013@55373
   692
          "                          [Equation,fromFunction])              " ^
s1210629013@55373
   693
          "                          [BOOL (hd f_s), BOOL b_4])          " ^
s1210629013@55373
   694
          " in [e_1, e_2, e_3, e_4])"
s1210629013@55373
   695
          (* filter requires more than 1 sec !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
s1210629013@55373
   696
          "Script SetzeRandbedScript (fun_s::bool list) (r_b::bool list) = " ^
s1210629013@55373
   697
          " (let b_1 = NTH 1 r_b;                                         " ^
s1210629013@55373
   698
          "      f_s = filter (sameFunId (lhs b_1)) fun_s;                 " ^
s1210629013@55373
   699
          "      (e_1::bool) =                                             " ^
s1210629013@55373
   700
          "             (SubProblem (Biegelinie',[makeFunctionTo,equation]," ^
s1210629013@55373
   701
          "                          [Equation,fromFunction])              " ^
s1210629013@55373
   702
          "                          [BOOL (hd f_s), BOOL b_1]);         " ^
s1210629013@55373
   703
          "      b_2 = NTH 2 r_b;                                         " ^
s1210629013@55373
   704
          "      f_s = filter (sameFunId (lhs b_2)) fun_s;                 " ^
s1210629013@55373
   705
          "      (e_2::bool) =                                             " ^
s1210629013@55373
   706
          "             (SubProblem (Biegelinie',[makeFunctionTo,equation]," ^
s1210629013@55373
   707
          "                          [Equation,fromFunction])              " ^
s1210629013@55373
   708
          "                          [BOOL (hd f_s), BOOL b_2]);         " ^
s1210629013@55373
   709
          "      b_3 = NTH 3 r_b;                                         " ^
s1210629013@55373
   710
          "      f_s = filter (sameFunId (lhs b_3)) fun_s;                 " ^
s1210629013@55373
   711
          "      (e_3::bool) =                                             " ^
s1210629013@55373
   712
          "             (SubProblem (Biegelinie',[makeFunctionTo,equation]," ^
s1210629013@55373
   713
          "                          [Equation,fromFunction])              " ^
s1210629013@55373
   714
          "                          [BOOL (hd f_s), BOOL b_3]);         " ^
s1210629013@55373
   715
          "      b_4 = NTH 4 r_b;                                         " ^
s1210629013@55373
   716
          "      f_s = filter (sameFunId (lhs b_4)) fun_s;                 " ^
s1210629013@55373
   717
          "      (e_4::bool) =                                             " ^
s1210629013@55373
   718
          "             (SubProblem (Biegelinie',[makeFunctionTo,equation]," ^
s1210629013@55373
   719
          "                          [Equation,fromFunction])              " ^
s1210629013@55373
   720
          "                          [BOOL (hd f_s), BOOL b_4])          " ^
s1210629013@55373
   721
          " in [e_1,e_2,e_3,e_4])"*)),
s1210629013@55373
   722
    prep_met thy "met_equ_fromfun" [] e_metID
s1210629013@55373
   723
	    (["Equation","fromFunction"],
s1210629013@55373
   724
	      [("#Given" ,["functionEq fu_n","substitution su_b"]),
s1210629013@55373
   725
	        ("#Find"  ,["equality equ'''"])],
s1210629013@55373
   726
	      {rew_ord'="tless_true", rls'=Erls, calc = [],
s1210629013@55373
   727
          srls = append_rls "srls_in_EquationfromFunc" e_rls
s1210629013@55373
   728
				      [Calc("Tools.lhs", eval_lhs"eval_lhs_"),
s1210629013@55373
   729
				        Calc("Atools.argument'_in", eval_argument_in "Atools.argument'_in")], 
s1210629013@55373
   730
				  prls=e_rls, crls = Atools_erls, errpats = [], nrls = e_rls},
s1210629013@55373
   731
        (*(M_b x = c_2 + c * x + -1 * q_0 / 2 * x ^^^ 2) (M_b L = 0) -->
s1210629013@55373
   732
               0 = c_2 + c * L + -1 * q_0 / 2 * L ^^^ 2*)
s1210629013@55373
   733
        "Script Function2Equality (fu_n::bool) (su_b::bool) =" ^
s1210629013@55373
   734
        " (let fu_n = Take fu_n;                             " ^
s1210629013@55373
   735
        "      bd_v = argument_in (lhs fu_n);                " ^
s1210629013@55373
   736
        "      va_l = argument_in (lhs su_b);                " ^
s1210629013@55373
   737
        "      eq_u = (Substitute [bd_v = va_l]) fu_n;       " ^
s1210629013@55373
   738
                                        (*([1], Res), M_b L = c_2 + c * L + -1 * q_0 / 2 * L ^^^ 2*)
s1210629013@55373
   739
        "      eq_u = (Substitute [su_b]) eq_u               " ^
s1210629013@55373
   740
        " in (Rewrite_Set norm_Rational False) eq_u)         ")]
s1210629013@55373
   741
*}
s1210629013@55373
   742
neuper@37906
   743
end
neuper@37906
   744