test/Tools/isac/Knowledge/algein.sml
author Walther Neuper <walther.neuper@jku.at>
Wed, 20 May 2020 12:52:09 +0200
changeset 59997 46fe5a8c3911
parent 59983 f1fdb213717b
child 60230 0ca0f9363ad3
permissions -rw-r--r--
standard format for string lists
neuper@37906
     1
(* tests on AlgEin, Algebra Einf"uhrung, , Unterrichtsversuch IMST-Projekt
neuper@37906
     2
   author: Walther Neuper 2007
neuper@37906
     3
   (c) due to copyright terms
neuper@37906
     4
*)
neuper@37906
     5
neuper@37906
     6
"-----------------------------------------------------------------";
neuper@37906
     7
"table of contents -----------------------------------------------";
neuper@37906
     8
"-----------------------------------------------------------------";
neuper@37906
     9
"----------- build method 'Berechnung' 'erstSymbolisch' ----------";
neuper@37906
    10
"----------- me 'Berechnung' 'erstNumerisch' ---------------------";
neuper@37906
    11
"----------- auto 'Berechnung' 'erstSymbolisch' ------------------";
neuper@37906
    12
"----------- Widerspruch 3 = 777 ---------------------------------";
neuper@37906
    13
"-----------------------------------------------------------------";
neuper@37906
    14
"-----------------------------------------------------------------";
neuper@37906
    15
"-----------------------------------------------------------------";
neuper@37906
    16
t@42166
    17
val thy = @{theory "AlgEin"};
neuper@37906
    18
neuper@37906
    19
neuper@37906
    20
(* use"../smltest/IsacKnowledge/algein.sml";
neuper@37906
    21
   *)
neuper@37906
    22
neuper@37906
    23
"----------- build method 'Berechnung' 'erstSymbolisch' ----------";
neuper@37906
    24
"----------- build method 'Berechnung' 'erstSymbolisch' ----------";
neuper@37906
    25
"----------- build method 'Berechnung' 'erstSymbolisch' ----------";
neuper@37906
    26
val str =
wneuper@59585
    27
"Program RechnenSymbolScript (k_k::bool) (q__q::bool) \
neuper@42385
    28
\(u_u::bool list) (s_s::bool list) (o_o::bool list) (l_l::real) =\
neuper@42385
    29
\ (let t_t = (l_l = 1)\
neuper@42385
    30
\ in t_t)"
neuper@37906
    31
;
wneuper@59395
    32
val sc = (inst_abs o Thm.term_of o the o (parse thy)) str;
neuper@37906
    33
atomty sc;
neuper@37906
    34
atomt sc;
neuper@37906
    35
neuper@37906
    36
"----------- me 'Berechnung' 'erstNumerisch' ---------------------";
neuper@37906
    37
"----------- me 'Berechnung' 'erstNumerisch' ---------------------";
neuper@37906
    38
"----------- me 'Berechnung' 'erstNumerisch' ---------------------";
neuper@37906
    39
val fmz = 
walther@59997
    40
    ["KantenLaenge (k=(10::real))", "Querschnitt (q=(1::real))",
neuper@42385
    41
     "KantenUnten [b1 = k - 2*(q::real), b2 = k - 2*(q::real), b3 = k - 2*(q::real), b4 = k - 2*(q::real) ]", 
neuper@42385
    42
     "KantenSenkrecht [v1 = (k::real), v2 = (k::real), v3 = (k::real), v4 = (k::real)]", 
neuper@42385
    43
     "KantenOben  [t1 = k - 2*(q::real), t2 = k - 2*(q::real), t3 = k - 2*(q::real), t4 = k - 2*(q::real) ]",
neuper@37906
    44
     "GesamtLaenge L"];
neuper@37906
    45
val (dI',pI',mI') =
wneuper@59592
    46
  ("Isac_Knowledge",["numerischSymbolische", "Berechnung"],
walther@59997
    47
   ["Berechnung", "erstNumerisch"]);
neuper@37906
    48
val p = e_pos'; val c = [];
neuper@37906
    49
val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))](*nxt = ("Model_Pr*);
neuper@37906
    50
val (p,_,f,nxt,_,pt) = me nxt p c pt(*Add_Given "KantenLaenge (k = 10)"*);
neuper@37906
    51
val (p,_,f,nxt,_,pt) = me nxt p c pt(*Add_Given "Querschnitt (q = 1)"*);
neuper@37906
    52
val (p,_,f,nxt,_,pt) = me nxt p c pt(*Add_Given "KantenUnten [b1 = k - 2*q]"*);
neuper@37906
    53
val (p,_,f,nxt,_,pt) = me nxt p c pt(*..KantenUnten [b2 = k - 2 * q, b3=..b4*);
neuper@37906
    54
val (p,_,f,nxt,_,pt) = me nxt p c pt(*Add_Given "KantenSenkrecht [v1 = k]"*);
neuper@37906
    55
val (p,_,f,nxt,_,pt) = me nxt p c pt(*..KantenSenkrecht [v2 = k, v3 = k, v4]*);
neuper@37906
    56
val (p,_,f,nxt,_,pt) = me nxt p c pt(*Add_Given "KantenOben [b1 = k - 2 *q])*);
neuper@37906
    57
val (p,_,f,nxt,_,pt) = me nxt p c pt(*..KantenOben [b2 = k - 2 * q, b3 =, b4*);
neuper@37906
    58
val (p,_,f,nxt,_,pt) = me nxt p c pt(*Add_Find "GesamtLaenge L"*);
neuper@37991
    59
val (p,_,f,nxt,_,pt) = me nxt p c pt(*Specify_Theory "AlgEin"*);
neuper@37906
    60
val (p,_,f,nxt,_,pt) = me nxt p c pt(*Specify_Problem ["numerischSymbolis,Be*);
neuper@37906
    61
val (p,_,f,nxt,_,pt) = me nxt p c pt(*Specify_Method ["Berechnung", "erstSym*);
neuper@37906
    62
val (p,_,f,nxt,_,pt) = me nxt p c pt(*Apply_Method*);
neuper@37906
    63
val (p,_,f,nxt,_,pt) = me nxt p c pt(*Substitute["Oben = boollist2sum [b1 =*);
neuper@37906
    64
f2str f;
neuper@37906
    65
val (p,_,f,nxt,_,pt) = me nxt p c pt(*Substitute ["t1 = k - 2 * q", *);f2str f;
neuper@37906
    66
val (p,_,f,nxt,_,pt) = me nxt p c pt(*Substitute ["k = 10", "q = 1"]*);f2str f;
neuper@37906
    67
val (p,_,f,nxt,_,pt) = me nxt p c pt(*Rewrite_Set "norm_Rational"*);f2str f;
neuper@37906
    68
val (p,_,f,nxt,_,pt) = me nxt p c pt(**);
neuper@37906
    69
if f2str f = "L = 32 + senkrecht + unten" then ()
wneuper@59508
    70
else error "algein.sml diff.behav. in erstNumerisch 1";
neuper@37906
    71
val (p,_,f,nxt,_,pt) = me nxt p c pt;val(p,_,f,nxt,_,pt)=me nxt p c pt;f2str f;
neuper@37906
    72
val (p,_,f,nxt,_,pt) = me nxt p c pt;val(p,_,f,nxt,_,pt)=me nxt p c pt;f2str f;
neuper@37906
    73
val (p,_,f,nxt,_,pt) = me nxt p c pt;val(p,_,f,nxt,_,pt)=me nxt p c pt;f2str f;
neuper@37906
    74
val (p,_,f,nxt,_,pt) = me nxt p c pt;val(p,_,f,nxt,_,pt)=me nxt p c pt;f2str f;
neuper@37906
    75
val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@59253
    76
if f2str f = "L = 104"
walther@59749
    77
then case nxt of End_Proof' => ()
wneuper@59508
    78
  | _ => error "algein.sml diff.behav. in erstNumerisch 99 1"
wneuper@59508
    79
else error "algein.sml diff.behav. in erstNumerisch 99 2";
wneuper@59253
    80
DEconstrCalcTree 1;
neuper@37906
    81
neuper@37906
    82
"----------- auto 'Berechnung' 'erstSymbolisch' ------------------";
neuper@37906
    83
"----------- auto 'Berechnung' 'erstSymbolisch' ------------------";
neuper@37906
    84
"----------- auto 'Berechnung' 'erstSymbolisch' ------------------";
neuper@37906
    85
CalcTree
walther@59997
    86
[(["KantenLaenge (k=(10::real))", "Querschnitt (q=(1::real))",
neuper@42385
    87
     "KantenUnten [b1 = k - 2*(q::real), b2 = k - 2*(q::real), b3 = k - 2*(q::real), b4 = k - 2*(q::real) ]", 
neuper@42385
    88
     "KantenSenkrecht [v1 = (k::real), v2 = (k::real), v3 = (k::real), v4 = (k::real)]", 
neuper@42385
    89
     "KantenOben  [t1 = k - 2*(q::real), t2 = k - 2*(q::real), t3 = k - 2*(q::real), t4 = k - 2*(q::real) ]",
neuper@42385
    90
     "GesamtLaenge L"], 
wneuper@59592
    91
  ("Isac_Knowledge",["numerischSymbolische", "Berechnung"],
walther@59997
    92
   ["Berechnung", "erstSymbolisch"]))];
neuper@37906
    93
Iterator 1;
neuper@37906
    94
moveActiveRoot 1;
wneuper@59248
    95
autoCalculate 1 CompleteCalc;
walther@59983
    96
val ((pt,p),_) = get_calc 1; Test_Tool.show_pt pt;
walther@59868
    97
if p = ([], Res) andalso UnparseC.term (get_obj g_res pt (fst p)) = "L = 104" then()
neuper@38031
    98
else error "algein.sml: 'Berechnung' 'erstSymbolisch' changed";
neuper@42385
    99
neuper@37906
   100
"----------- Widerspruch 3 = 777 ---------------------------------";
neuper@37906
   101
"----------- Widerspruch 3 = 777 ---------------------------------";
neuper@37906
   102
"----------- Widerspruch 3 = 777 ---------------------------------";
wneuper@59592
   103
val thy = @{theory "Isac_Knowledge"}; 
neuper@37906
   104
val rew_ord = dummy_ord;
walther@59851
   105
val erls = Rule_Set.Empty;
walther@59876
   106
val thm = ThmC.thm_from_thy thy "sym_mult_zero_right";
neuper@42385
   107
val t = str2term "0 = (0::real)";
neuper@37926
   108
val SOME (t',_) = rewrite_ thy rew_ord erls false thm t;
walther@59868
   109
UnparseC.term t' = "0 = ?a1 * 0"; (* = true*)
neuper@37906
   110
neuper@42385
   111
val sube = ["?a1 = (3::real)"];
walther@59912
   112
val subte = Subst.input_to_terms sube;
walther@59868
   113
UnparseC.terms_short subte = "[?a1 = 3]"; (* = true*)
walther@59912
   114
val subst = Subst.T_from_string_eqs thy sube;
neuper@37906
   115
foldl and_ (true, map contains_Var subte);
neuper@37906
   116
neuper@37906
   117
val t'' = subst_atomic subst t';
walther@59868
   118
UnparseC.term t'' = "0 = 3 * 0"; (* = true*)
neuper@37906
   119
walther@59876
   120
val thm = ThmC.thm_from_thy thy "sym";
neuper@41977
   121
(*----- STOPPED.WN0x?: Widerspruch 3 = 777: sym contains "==>" instead of "=" !!!
neuper@37926
   122
val SOME (t''',_) = rewrite_ thy rew_ord erls false thm t'';
neuper@37906
   123
*)
neuper@37906
   124