src/Tools/isac/Knowledge/Simplify.thy
author Mathias Lehnfeld <s1210629013@students.fh-hagenberg.at>
Mon, 27 Jan 2014 21:49:27 +0100
changeset 55359 73dc85c025ab
parent 55339 cccd24e959ba
child 55363 d78bc1342183
permissions -rw-r--r--
cleanup, naming: 'KEStore_Elems' in Tests now 'Test_KEStore_Elems', 'store_pbts' now 'add_pbts'
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@38083
    11
  Term        :: "real => una"
neuper@38083
    12
(*TERM -->   Const ("Pure.term", "RealDef.real => prop")  (*!!!*) $ 
neuper@38083
    13
               Free ("ttt", "RealDef.real")
neuper@38083
    14
  term -->   Free ("term", "RealDef.real => RealDef.real") $
neuper@38083
    15
               Free ("ttt", "RealDef.real")
neuper@38083
    16
    but 'term' is a keyword in *.thy*)
neuper@37950
    17
  normalform  :: "real => una"
neuper@37906
    18
neuper@37906
    19
  (*the CAS-command*)
neuper@37906
    20
  Simplify    :: "real => real"  (*"Simplify (1+2a+3+4a)*)
neuper@37906
    21
  Vereinfache :: "real => real"  (*"Vereinfache (1+2a+3+4a)*)
neuper@37906
    22
neuper@37906
    23
  (*Script-name*)
neuper@37906
    24
  SimplifyScript      :: "[real,  real] => real"
neuper@37906
    25
                  ("((Script SimplifyScript (_ =))// (_))" 9)
neuper@37906
    26
neuper@37950
    27
ML {*
neuper@37972
    28
val thy = @{theory};
neuper@37950
    29
neuper@37950
    30
(** problems **)
neuper@37950
    31
store_pbt
neuper@37972
    32
 (prep_pbt thy "pbl_simp" [] e_pblID
neuper@37950
    33
 (["simplification"],
neuper@38083
    34
  [("#Given" ,["Term t_t"]),
neuper@37968
    35
   ("#Find"  ,["normalform n_n"])
neuper@37950
    36
  ],
neuper@37950
    37
  append_rls "e_rls" e_rls [(*for preds in where_*)], 
neuper@37968
    38
  SOME "Simplify t_t", 
neuper@37950
    39
  []));
neuper@37950
    40
neuper@37950
    41
store_pbt
neuper@37972
    42
 (prep_pbt thy "pbl_vereinfache" [] e_pblID
neuper@37950
    43
 (["vereinfachen"],
neuper@38083
    44
  [("#Given" ,["Term t_t"]),
neuper@37968
    45
   ("#Find"  ,["normalform n_n"])
neuper@37950
    46
  ],
neuper@37950
    47
  append_rls "e_rls" e_rls [(*for preds in where_*)], 
neuper@37968
    48
  SOME "Vereinfache t_t", 
neuper@37950
    49
  []));
neuper@42425
    50
*}
s1210629013@55359
    51
setup {* KEStore_Elems.add_pbts
s1210629013@55339
    52
  [(prep_pbt thy "pbl_simp" [] e_pblID
s1210629013@55339
    53
      (["simplification"],
s1210629013@55339
    54
        [("#Given" ,["Term t_t"]),
s1210629013@55339
    55
          ("#Find"  ,["normalform n_n"])],
s1210629013@55339
    56
        append_rls "e_rls" e_rls [(*for preds in where_*)], SOME "Simplify t_t", [])),
s1210629013@55339
    57
    (prep_pbt thy "pbl_vereinfache" [] e_pblID
s1210629013@55339
    58
      (["vereinfachen"],
s1210629013@55339
    59
        [("#Given", ["Term t_t"]),
s1210629013@55339
    60
          ("#Find", ["normalform n_n"])],
s1210629013@55339
    61
        append_rls "e_rls" e_rls [(*for preds in where_*)], SOME "Vereinfache t_t", []))] *}
neuper@42425
    62
ML {*
neuper@48763
    63
@{thm mult_commute}
neuper@48763
    64
*}
neuper@48763
    65
ML {*
neuper@37950
    66
neuper@37950
    67
(** methods **)
neuper@37950
    68
neuper@37950
    69
store_met
neuper@42425
    70
 (prep_met thy "met_tsimp" [] e_metID
neuper@42425
    71
	   (["simplification"],
neuper@42425
    72
	    [("#Given" ,["Term t_t"]),
neuper@42425
    73
		     ("#Find"  ,["normalform n_n"])],
neuper@42425
    74
	    {rew_ord'="tless_true", rls'= e_rls, calc = [], srls = e_rls, prls=e_rls,
neuper@42425
    75
	     crls = e_rls, errpats = [], nrls = e_rls},
neuper@42425
    76
	     "empty_script"));
neuper@42425
    77
*}
neuper@42425
    78
ML {*
neuper@37950
    79
neuper@37950
    80
(** CAS-command **)
neuper@37950
    81
neuper@37950
    82
(*.function for handling the cas-input "Simplify (2*a + 3*a)":
neuper@37950
    83
   make a model which is already in ptree-internal format.*)
neuper@37950
    84
(* val (h,argl) = strip_comb (str2term "Simplify (2*a + 3*a)");
neuper@40836
    85
   val (h,argl) = strip_comb ((term_of o the o (parse (Thy_Info.get_theory "Simplify"))) 
neuper@37950
    86
				  "Simplify (2*a + 3*a)");
neuper@37950
    87
   *)
neuper@37950
    88
fun argl2dtss t =
neuper@38083
    89
    [((term_of o the o (parse thy)) "Term", t),
neuper@37972
    90
     ((term_of o the o (parse thy)) "normalform", 
neuper@37972
    91
      [(term_of o the o (parse thy)) "N"])
neuper@37950
    92
     ]
s1210629013@52170
    93
  (*| argl2dtss _ = error "Simplify.ML: wrong argument for argl2dtss"*);
neuper@37950
    94
*}
s1210629013@52170
    95
setup {* KEStore_Elems.add_cas
s1210629013@52170
    96
  [((term_of o the o (parse thy)) "Simplify",  
s1210629013@52170
    97
    (("Isac", ["simplification"], ["no_met"]), argl2dtss)),
s1210629013@52170
    98
   ((term_of o the o (parse thy)) "Vereinfache",  
s1210629013@52170
    99
     (("Isac", ["vereinfachen"], ["no_met"]), argl2dtss))]*}
neuper@37906
   100
neuper@37906
   101
end