diff -r d04d1cd0e058 -r 73437f42c9d3 ProgTutorial/Essential.thy --- a/ProgTutorial/Essential.thy Mon May 31 22:27:48 2010 +0200 +++ b/ProgTutorial/Essential.thy Mon May 31 22:43:31 2010 +0200 @@ -983,13 +983,15 @@ "let val trm_list = [@{term_pat \"?X\"}, @{term_pat \"a\"}, - @{term_pat \"\a b. ?X a b\"}, @{term_pat \"\a b. (op +) a b\"}, + @{term_pat \"f (\a b. ?X a b) c\"}, + @{term_pat \"\a b. (op +) a b\"}, @{term_pat \"\a. (op +) a ?Y\"}, @{term_pat \"?X ?Y\"}, - @{term_pat \"\a b. ?X a b ?Y\"}, @{term_pat \"\a. ?X a a\"}] + @{term_pat \"\a b. ?X a b ?Y\"}, @{term_pat \"\a. ?X a a\"}, + @{term_pat \"?X a\"}] in map Pattern.pattern trm_list end" - "[true, true, true, true, true, false, false, false]"} + "[true, true, true, true, true, false, false, false, false]"} The point of the restriction to patterns is that unification and matching are decidable and produce most general unifiers, respectively matchers.