Sort search results in order of relevance, where relevance =
a) better if 0 premises for intro or 1 premise for elim/dest rules
b) better if substitution size wrt to current goal is smaller
Only applies to intro, dest, elim, and simp
(contributed by Rafal Kolanski, NICTA)
theory FP0 imports PreList begin
datatype 'a list = Nil ("[]")
| Cons 'a "'a list" (infixr "#" 65)
consts app :: "'a list \<Rightarrow> 'a list \<Rightarrow> 'a list" (infixr "@" 65)
rev :: "'a list \<Rightarrow> 'a list"
primrec
"[] @ ys = ys"
"(x # xs) @ ys = x # (xs @ ys)"
primrec
"rev [] = []"
"rev (x # xs) = (rev xs) @ (x # [])"
theorem rev_rev [simp]: "rev(rev xs) = xs"
(*<*)oops(*>*)text_raw{*\isanewline\isanewline*}
end