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 |
(* insertion sort, would need lists different from script-lists WN.11.00
|
neuper@37906
|
11 |
WN.7.5.03: -"- started with someList :: 'a list => unl, fun dest_list
|
neuper@37906
|
12 |
WN.8.5.03: error (@@@) remained with outcommenting foldr ?!?
|
neuper@37906
|
13 |
|
neuper@37947
|
14 |
use_thy_only"Knowledge/InsSort";
|
neuper@37906
|
15 |
|
neuper@37906
|
16 |
*)
|
neuper@37906
|
17 |
|
neuper@37906
|
18 |
InsSort = Script +
|
neuper@37906
|
19 |
|
neuper@37906
|
20 |
consts
|
neuper@37906
|
21 |
|
neuper@37906
|
22 |
(*foldr :: [['a,'b] => 'a, 'b list, 'a] => 'a
|
neuper@37906
|
23 |
WN.8.5.03: already defined in Isabelle2002 (instantiated by Typefix):
|
neuper@37906
|
24 |
"[[real, real] => real, real list, real] => real") : term
|
neuper@37906
|
25 |
|
neuper@37906
|
26 |
val t = str2term "foldr";
|
neuper@37906
|
27 |
val t =
|
neuper@37906
|
28 |
Const
|
neuper@37906
|
29 |
("List.foldr",
|
neuper@37906
|
30 |
"[[RealDef.real, RealDef.real] => RealDef.real, RealDef.real List.list,
|
neuper@37906
|
31 |
RealDef.real] => RealDef.real") : term
|
neuper@37906
|
32 |
*)
|
neuper@37906
|
33 |
ins :: ['a list,'a] => 'a list
|
neuper@37906
|
34 |
sort :: 'a list => 'a list
|
neuper@37906
|
35 |
|
neuper@37906
|
36 |
(*descriptions, script-id*)
|
neuper@37906
|
37 |
unsorted :: 'a list => unl
|
neuper@37906
|
38 |
sorted :: 'a list => unl
|
neuper@37906
|
39 |
|
neuper@37906
|
40 |
(*subproblem and script-name*)
|
neuper@37906
|
41 |
Ins'_sort :: "['a list, \
|
neuper@37906
|
42 |
\ 'a list] => 'a list"
|
neuper@37906
|
43 |
("((Script Ins'_sort (_ =))// \
|
neuper@37906
|
44 |
\ (_))" 9)
|
neuper@37906
|
45 |
Sort :: "['a list, \
|
neuper@37906
|
46 |
\ 'a list] => 'a list"
|
neuper@37906
|
47 |
("((Script Sort (_ =))// \
|
neuper@37906
|
48 |
\ (_))" 9)
|
neuper@37906
|
49 |
|
neuper@37906
|
50 |
(*primrec
|
neuper@37906
|
51 |
foldr_base "foldr f [] a = a"
|
neuper@37906
|
52 |
foldr_rec "foldr f (x#xs) a = foldr f xs (f a x)"
|
neuper@37906
|
53 |
*)
|
neuper@37906
|
54 |
|
neuper@37906
|
55 |
rules
|
neuper@37906
|
56 |
|
neuper@37947
|
57 |
(*primrec .. outcommented analoguous to ListC.thy*)
|
neuper@37906
|
58 |
ins_base "ins [] a = [a]"
|
neuper@37906
|
59 |
ins_rec "ins (x#xs) a = (if x < a then x#(ins xs a) else a#(x#xs))"
|
neuper@37906
|
60 |
|
neuper@37906
|
61 |
sort_def "sort ls = foldr ins ls []"
|
neuper@37906
|
62 |
|
neuper@37906
|
63 |
end
|