src/Tools/isac/Knowledge/Simplify.thy
author Walther Neuper <neuper@ist.tugraz.at>
Tue, 28 Sep 2010 09:06:56 +0200
branchisac-update-Isa09-2
changeset 38031 460c24a6a6ba
parent 37972 66fc615a1e89
child 38083 a1d13f3de312
permissions -rw-r--r--
tuned error and writeln

# raise error --> error
# writeln in atomtyp, atomty, atomt and xmlsrc
neuper@37906
     1
(* simplification of terms
neuper@37906
     2
   author: Walther Neuper 050912
neuper@37906
     3
   (c) due to copyright terms
neuper@37906
     4
*)
neuper@37906
     5
neuper@37950
     6
theory Simplify imports Atools begin
neuper@37906
     7
neuper@37906
     8
consts
neuper@37906
     9
neuper@37906
    10
  (*descriptions in the related problem*)
neuper@37967
    11
  TERM        :: "real => una"
neuper@37950
    12
  normalform  :: "real => una"
neuper@37906
    13
neuper@37906
    14
  (*the CAS-command*)
neuper@37906
    15
  Simplify    :: "real => real"  (*"Simplify (1+2a+3+4a)*)
neuper@37906
    16
  Vereinfache :: "real => real"  (*"Vereinfache (1+2a+3+4a)*)
neuper@37906
    17
neuper@37906
    18
  (*Script-name*)
neuper@37906
    19
  SimplifyScript      :: "[real,  real] => real"
neuper@37906
    20
                  ("((Script SimplifyScript (_ =))// (_))" 9)
neuper@37906
    21
neuper@37950
    22
ML {*
neuper@37972
    23
val thy = @{theory};
neuper@37950
    24
neuper@37950
    25
(** problems **)
neuper@37950
    26
store_pbt
neuper@37972
    27
 (prep_pbt thy "pbl_simp" [] e_pblID
neuper@37950
    28
 (["simplification"],
neuper@37968
    29
  [("#Given" ,["TERM t_t"]),
neuper@37968
    30
   ("#Find"  ,["normalform n_n"])
neuper@37950
    31
  ],
neuper@37950
    32
  append_rls "e_rls" e_rls [(*for preds in where_*)], 
neuper@37968
    33
  SOME "Simplify t_t", 
neuper@37950
    34
  []));
neuper@37950
    35
neuper@37950
    36
store_pbt
neuper@37972
    37
 (prep_pbt thy "pbl_vereinfache" [] e_pblID
neuper@37950
    38
 (["vereinfachen"],
neuper@37968
    39
  [("#Given" ,["TERM t_t"]),
neuper@37968
    40
   ("#Find"  ,["normalform n_n"])
neuper@37950
    41
  ],
neuper@37950
    42
  append_rls "e_rls" e_rls [(*for preds in where_*)], 
neuper@37968
    43
  SOME "Vereinfache t_t", 
neuper@37950
    44
  []));
neuper@37950
    45
neuper@37950
    46
(** methods **)
neuper@37950
    47
neuper@37950
    48
store_met
neuper@37972
    49
    (prep_met thy "met_tsimp" [] e_metID
neuper@37950
    50
	      (["simplification"],
neuper@37968
    51
	       [("#Given" ,["TERM t_t"]),
neuper@37968
    52
		("#Find"  ,["normalform n_n"])
neuper@37950
    53
		],
neuper@37950
    54
	       {rew_ord'="tless_true",
neuper@37950
    55
		rls'= e_rls, 
neuper@37950
    56
		calc = [], 
neuper@37950
    57
		srls = e_rls, 
neuper@37950
    58
		prls=e_rls,
neuper@37950
    59
		crls = e_rls, nrls = e_rls},
neuper@37950
    60
	       "empty_script"
neuper@37950
    61
	       ));
neuper@37950
    62
neuper@37950
    63
(** CAS-command **)
neuper@37950
    64
neuper@37950
    65
(*.function for handling the cas-input "Simplify (2*a + 3*a)":
neuper@37950
    66
   make a model which is already in ptree-internal format.*)
neuper@37950
    67
(* val (h,argl) = strip_comb (str2term "Simplify (2*a + 3*a)");
neuper@37968
    68
   val (h,argl) = strip_comb ((term_of o the o (parse (theory "Simplify"))) 
neuper@37950
    69
				  "Simplify (2*a + 3*a)");
neuper@37950
    70
   *)
neuper@37950
    71
fun argl2dtss t =
neuper@37972
    72
    [((term_of o the o (parse thy)) "TERM", t),
neuper@37972
    73
     ((term_of o the o (parse thy)) "normalform", 
neuper@37972
    74
      [(term_of o the o (parse thy)) "N"])
neuper@37950
    75
     ]
neuper@38031
    76
  | argl2dtss _ = error "Simplify.ML: wrong argument for argl2dtss";
neuper@37950
    77
neuper@37950
    78
castab := 
neuper@37950
    79
overwritel (!castab, 
neuper@37972
    80
	    [((term_of o the o (parse thy)) "Simplify",  
neuper@37968
    81
	      (("Isac", ["simplification"], ["no_met"]), 
neuper@37950
    82
	       argl2dtss)),
neuper@37972
    83
	     ((term_of o the o (parse thy)) "Vereinfache",  
neuper@37968
    84
	      (("Isac", ["vereinfachen"], ["no_met"]), 
neuper@37950
    85
	       argl2dtss))
neuper@37950
    86
	     ]);
neuper@37950
    87
*}
neuper@37906
    88
neuper@37906
    89
end