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);
|