# HG changeset patch # User haftmann # Date 1325413725 -3600 # Node ID af3b95160b59c7b025a6303f8c58d2ff0656bdd8 # Parent bab00660539d88b7a80c51b423b0cd559396fc59 cleanup of code declarations diff -r bab00660539d -r af3b95160b59 src/HOL/More_Set.thy --- a/src/HOL/More_Set.thy Thu Jan 05 20:26:01 2012 +0100 +++ b/src/HOL/More_Set.thy Sun Jan 01 11:28:45 2012 +0100 @@ -29,11 +29,11 @@ subsection {* Basic set operations *} -lemma is_empty_set: +lemma is_empty_set [code]: "Set.is_empty (set xs) \ List.null xs" by (simp add: Set.is_empty_def null_def) -lemma empty_set: +lemma empty_set [code]: "{} = set []" by simp @@ -92,49 +92,23 @@ subsection {* Derived set operations *} -lemma member: +lemma member [code]: "a \ A \ (\x\A. a = x)" by simp -lemma subset_eq: - "A \ B \ (\x\A. x \ B)" - by (fact subset_eq) - -lemma subset: +lemma subset [code]: "A \ B \ A \ B \ \ B \ A" by (fact less_le_not_le) -lemma set_eq: +lemma set_eq [code]: "A = B \ A \ B \ B \ A" by (fact eq_iff) -lemma inter: +lemma inter [code]: "A \ B = Set.project (\x. x \ A) B" by (auto simp add: project_def) -subsection {* Theorems on relations *} - -lemma product_code: - "Product_Type.product (set xs) (set ys) = set [(x, y). x \ xs, y \ ys]" - by (auto simp add: Product_Type.product_def) - -lemma Id_on_set: - "Id_on (set xs) = set [(x, x). x \ xs]" - by (auto simp add: Id_on_def) - -lemma trancl_set_ntrancl: "trancl (set xs) = ntrancl (card (set xs) - 1) (set xs)" - by (simp add: finite_trancl_ntranl) - -lemma set_rel_comp: - "set xys O set yzs = set ([(fst xy, snd yz). xy \ xys, yz \ yzs, snd xy = fst yz])" - by (auto simp add: Bex_def) - -lemma wf_set: - "wf (set xs) = acyclic (set xs)" - by (simp add: wf_iff_acyclic_if_finite) - - subsection {* Code generator setup *} definition coset :: "'a list \ 'a set" where @@ -150,14 +124,6 @@ "x \ coset xs \ \ List.member xs x" by (simp_all add: member_def) -lemma [code_unfold]: - "A = {} \ Set.is_empty A" - by (simp add: Set.is_empty_def) - -declare empty_set [code] - -declare is_empty_set [code] - lemma UNIV_coset [code]: "UNIV = coset []" by simp @@ -172,10 +138,6 @@ "Set.remove x (coset xs) = coset (List.insert x xs)" by (simp_all add: remove_def Compl_insert) -declare image_set [code] - -declare project_set [code] - lemma Ball_set [code]: "Ball (set xs) P \ list_all P xs" by (simp add: list_all_iff) @@ -193,13 +155,6 @@ qed -subsection {* Derived operations *} - -declare subset_eq [code] - -declare subset [code] - - subsection {* Functorial operations *} lemma inter_code [code]: @@ -273,27 +228,24 @@ subsection {* Operations on relations *} -text {* Initially contributed by Tjark Weber. *} - -declare Domain_fst [code] +lemma product_code [code]: + "Product_Type.product (set xs) (set ys) = set [(x, y). x \ xs, y \ ys]" + by (auto simp add: Product_Type.product_def) -declare Range_snd [code] - -declare trans_join [code] - -declare irrefl_distinct [code] +lemma Id_on_set [code]: + "Id_on (set xs) = set [(x, x). x \ xs]" + by (auto simp add: Id_on_def) -declare trancl_set_ntrancl [code] - -declare acyclic_irrefl [code] - -declare product_code [code] +lemma trancl_set_ntrancl [code]: "trancl (set xs) = ntrancl (card (set xs) - 1) (set xs)" + by (simp add: finite_trancl_ntranl) -declare Id_on_set [code] +lemma set_rel_comp [code]: + "set xys O set yzs = set ([(fst xy, snd yz). xy \ xys, yz \ yzs, snd xy = fst yz])" + by (auto simp add: Bex_def) -declare set_rel_comp [code] - -declare wf_set [code] +lemma wf_set [code]: + "wf (set xs) = acyclic (set xs)" + by (simp add: wf_iff_acyclic_if_finite) end diff -r bab00660539d -r af3b95160b59 src/HOL/Relation.thy --- a/src/HOL/Relation.thy Thu Jan 05 20:26:01 2012 +0100 +++ b/src/HOL/Relation.thy Sun Jan 01 11:28:45 2012 +0100 @@ -275,7 +275,7 @@ subsection {* Transitivity *} -lemma trans_join: +lemma trans_join [code]: "trans r \ (\(x, y1) \ r. \(y2, z) \ r. y1 = y2 \ (x, z) \ r)" by (auto simp add: trans_def) @@ -300,7 +300,7 @@ subsection {* Irreflexivity *} -lemma irrefl_distinct: +lemma irrefl_distinct [code]: "irrefl r \ (\(x, y) \ r. x \ y)" by (auto simp add: irrefl_def) @@ -395,7 +395,7 @@ "a : Domain r ==> (!!y. (a, y) : r ==> P) ==> P" by (iprover dest!: iffD1 [OF Domain_iff]) -lemma Domain_fst: +lemma Domain_fst [code]: "Domain r = fst ` r" by (auto simp add: image_def Bex_def) @@ -453,7 +453,7 @@ lemma RangeE [elim!]: "b : Range r ==> (!!x. (x, b) : r ==> P) ==> P" by (unfold Range_def) (iprover elim!: DomainE dest!: converseD) -lemma Range_snd: +lemma Range_snd [code]: "Range r = snd ` r" by (auto simp add: image_def Bex_def) diff -r bab00660539d -r af3b95160b59 src/HOL/Set.thy --- a/src/HOL/Set.thy Thu Jan 05 20:26:01 2012 +0100 +++ b/src/HOL/Set.thy Sun Jan 01 11:28:45 2012 +0100 @@ -508,7 +508,7 @@ -- {* Classical elimination rule. *} by (auto simp add: less_eq_set_def le_fun_def) -lemma subset_eq [no_atp]: "A \ B = (\x\A. x \ B)" by blast +lemma subset_eq [code, no_atp]: "A \ B = (\x\A. x \ B)" by blast lemma contra_subsetD [no_atp]: "A \ B ==> c \ B ==> c \ A" by blast @@ -1810,12 +1810,12 @@ subsubsection {* Operations for execution *} definition is_empty :: "'a set \ bool" where - "is_empty A \ A = {}" + [code_abbrev]: "is_empty A \ A = {}" hide_const (open) is_empty definition remove :: "'a \ 'a set \ 'a set" where - "remove x A = A - {x}" + [code_abbrev]: "remove x A = A - {x}" hide_const (open) remove @@ -1835,6 +1835,7 @@ end + text {* Misc *} hide_const (open) member not_member diff -r bab00660539d -r af3b95160b59 src/HOL/Transitive_Closure.thy --- a/src/HOL/Transitive_Closure.thy Thu Jan 05 20:26:01 2012 +0100 +++ b/src/HOL/Transitive_Closure.thy Sun Jan 01 11:28:45 2012 +0100 @@ -1047,7 +1047,7 @@ abbreviation acyclicP :: "('a => 'a => bool) => bool" where "acyclicP r \ acyclic {(x, y). r x y}" -lemma acyclic_irrefl: +lemma acyclic_irrefl [code]: "acyclic r \ irrefl (r^+)" by (simp add: acyclic_def irrefl_def)