doc-src/Exercises/2001/a3/Trie3.thy
author obua
Sun, 09 May 2004 23:04:36 +0200
changeset 14722 8e739a6eaf11
parent 13739 f5d0a66c8124
permissions -rw-r--r--
replaced apply-style proof for instance Multiset :: plus_ac0 by recommended Isar proof style

(*<*)
theory Trie3 = Main:
(*>*)

text {* Instead of association lists we can also use partial functions
that map letters to subtrees. Partiality can be modelled with the help
of type @{typ "'a option"}: if @{term f} is a function of type
\mbox{@{typ "'a \<Rightarrow> 'b option"}}, set @{term "f a = Some b"}
if @{term a} should be mapped to some @{term b} and set @{term "f a =
None"} otherwise.  *}

datatype ('a, 'v) trie = Trie  "'v option" "'a \<Rightarrow> ('a,'v) trie option";

text{* Modify the definitions of @{term lookup} and @{term modify}
accordingly and show the same correctness theorem as above. *}

(*<*)
end;
(*>*)