
diff -r c40ce2de2020 -r be5c23ebe1eb src/HOL/FunDef.thy
--- a/src/HOL/FunDef.thy	Mon Jun 05 14:22:58 2006 +0200
+++ b/src/HOL/FunDef.thy	Mon Jun 05 14:26:07 2006 +0200
@@ -1,13 +1,17 @@
 theory FunDef
-imports Accessible_Part
+imports Accessible_Part Datatype Recdef
 uses 
+("Tools/function_package/sum_tools.ML")
 ("Tools/function_package/fundef_common.ML")
 ("Tools/function_package/fundef_lib.ML")
 ("Tools/function_package/context_tree.ML")
 ("Tools/function_package/fundef_prep.ML")
 ("Tools/function_package/fundef_proof.ML")
 ("Tools/function_package/termination.ML")
+("Tools/function_package/mutual.ML")
 ("Tools/function_package/fundef_package.ML")
+("Tools/function_package/fundef_datatype.ML")
+("Tools/function_package/auto_term.ML")
 begin
 
 lemma fundef_ex1_existence:
@@ -34,16 +38,52 @@
   by simp
 
 
+subsection {* Projections *}
+consts
+  lpg::"(('a + 'b) * 'a) set"
+  rpg::"(('a + 'b) * 'b) set"
+
+inductive lpg
+intros
+  "(Inl x, x) : lpg"
+inductive rpg
+intros
+  "(Inr y, y) : rpg"
+definition
+  "lproj x = (THE y. (x,y) : lpg)"
+  "rproj x = (THE y. (x,y) : rpg)"
+
+lemma lproj_inl:
+  "lproj (Inl x) = x"
+  by (auto simp:lproj_def intro: the_equality lpg.intros elim: lpg.cases)
+lemma rproj_inr:
+  "rproj (Inr x) = x"
+  by (auto simp:rproj_def intro: the_equality rpg.intros elim: rpg.cases)
+
+
+
+
+use "Tools/function_package/sum_tools.ML"
 use "Tools/function_package/fundef_common.ML"
 use "Tools/function_package/fundef_lib.ML"
 use "Tools/function_package/context_tree.ML"
 use "Tools/function_package/fundef_prep.ML"
 use "Tools/function_package/fundef_proof.ML"
 use "Tools/function_package/termination.ML"
+use "Tools/function_package/mutual.ML"
 use "Tools/function_package/fundef_package.ML"
 
 setup FundefPackage.setup
 
+use "Tools/function_package/fundef_datatype.ML"
+setup FundefDatatype.setup
+
+use "Tools/function_package/auto_term.ML"
+setup FundefAutoTerm.setup
+
+
+lemmas [fundef_cong] = 
+  let_cong if_cong image_cong INT_cong UN_cong bex_cong ball_cong imp_cong
 
 
 end




