src/Tools/isac/Knowledge/InsSort.ML
author Walther Neuper <neuper@ist.tugraz.at>
Wed, 25 Aug 2010 16:20:07 +0200
branchisac-update-Isa09-2
changeset 37947 22235e4dbe5f
parent 37906 src/Tools/isac/IsacKnowledge/InsSort.ML@e2b23ba9df13
permissions -rw-r--r--
renamed isac's directories and Build_Isac.thy

Scripts --> ProgLang
ME --> Interpret
IsacKnowledge --> Knowledge
neuper@37906
     1
(* 6.8.02 change to Isabelle2002 caused error -- thy excluded !
neuper@37906
     2
neuper@37906
     3
Proving equations for primrec function(s) "InsSort.foldr" ...
neuper@37906
     4
GC #1.17.30.54.345.21479:   (10 ms)
neuper@37906
     5
*** Definition of InsSort.ins :: "['a::ord list, 'a::ord] => 'a::ord list"
neuper@37906
     6
*** imposes additional sort constraints on the declared type of the constant
neuper@37906
     7
*** The error(s) above occurred in definition "InsSort.ins.ins_list_def"
neuper@37906
     8
*)
neuper@37906
     9
neuper@37906
    10
(* tools for insertion sort
neuper@37947
    11
   use"Knowledge/InsSort.ML";
neuper@37906
    12
*)
neuper@37906
    13
neuper@37906
    14
(** interface isabelle -- isac **)
neuper@37906
    15
neuper@37906
    16
theory' := (!theory') @ [("InsSort.thy",InsSort.thy)];
neuper@37906
    17
neuper@37906
    18
(** rule set **)
neuper@37906
    19
neuper@37906
    20
val ins_sort = prep_rls(
neuper@37906
    21
  Rls{preconds = [], rew_ord = ("tless_true",tless_true),
neuper@37906
    22
      rules = [Thm ("foldr_base",(*num_str*) foldr_base),
neuper@37906
    23
	       Thm ("foldr_rec",foldr_rec),
neuper@37906
    24
	       Thm ("ins_base",ins_base),
neuper@37906
    25
	       Thm ("ins_rec",ins_rec),
neuper@37906
    26
	       Thm ("sort_def",sort_def),
neuper@37906
    27
neuper@37906
    28
	       Calc ("op <",eval_equ "#less_"),
neuper@37906
    29
	       Thm ("if_True", if_True),
neuper@37906
    30
	       Thm ("if_False", if_False)
neuper@37906
    31
	       ],
neuper@37906
    32
      scr = Script ((term_of o the o (parse thy)) 
neuper@37906
    33
      "empty_script")
neuper@37906
    34
      }:rls);      
neuper@37906
    35
neuper@37906
    36
(** problem type **)
neuper@37906
    37
neuper@37906
    38
store_pbt
neuper@37906
    39
 (prep_pbt InsSort.thy
neuper@37906
    40
 (["functional"]:pblID,
neuper@37906
    41
  [("#Given" ,["unsorted u_"]),
neuper@37906
    42
   ("#Find"  ,["sorted s_"])
neuper@37906
    43
  ],
neuper@37906
    44
  []));
neuper@37906
    45
neuper@37906
    46
store_pbt
neuper@37906
    47
 (prep_pbt InsSort.thy
neuper@37906
    48
 (["inssort","functional"]:pblID,
neuper@37906
    49
  [("#Given" ,["unsorted u_"]),
neuper@37906
    50
   ("#Find"  ,["sorted s_"])
neuper@37906
    51
  ],
neuper@37906
    52
  []));
neuper@37906
    53
neuper@37906
    54
(** method, 
neuper@37906
    55
    todo: implementation needs extra object-level lists **)
neuper@37906
    56
neuper@37906
    57
store_met
neuper@37906
    58
 (prep_met Diff.thy
neuper@37906
    59
 (["InsSort"],
neuper@37906
    60
   [],
neuper@37906
    61
   {rew_ord'="tless_true",rls'=Atools_erls,calc = [], srls = e_rls, prls=e_rls,
neuper@37906
    62
    crls = Atools_rls, nrls=norm_Rational
neuper@37906
    63
    (*, asm_rls=[],asm_thm=[]*)}, "empty_script"));
neuper@37906
    64
store_met
neuper@37906
    65
 (prep_met InsSort.thy (*test-version for [#1,#3,#2] only: see *.sml*)
neuper@37906
    66
 (["InsSort""sort"]:metID,
neuper@37906
    67
   [("#Given" ,["unsorted u_"]),
neuper@37906
    68
    ("#Find"  ,["sorted s_"])
neuper@37906
    69
    ],
neuper@37906
    70
   {rew_ord'="tless_true",rls'=eval_rls,calc = [], srls = e_rls, prls=e_rls,
neuper@37906
    71
    crls = eval_rls, nrls=norm_Rational(*,asm_rls=[],asm_thm=[]*)},
neuper@37906
    72
   "Script Sort (u_::'a list) = (Rewrite_Set ins_sort False) u_"
neuper@37906
    73
  ));
neuper@37906
    74
neuper@37906
    75
ruleset' := overwritelthy thy (!ruleset',
neuper@37906
    76
			[(*("ins_sort",ins_sort) overwrites a Isa fun!!*)
neuper@37906
    77
			 ]:(string * rls) list);