# HG changeset patch # User wenzelm # Date 1148161016 -7200 # Node ID 0a7c6d78ad6b6fc6565b888dd855c3d6b973cedd # Parent 83611262823ed92b6e5171931e716b04be2225dc primrec (unchecked); diff -r 83611262823e -r 0a7c6d78ad6b src/HOL/Nominal/Examples/SN.thy --- a/src/HOL/Nominal/Examples/SN.thy Sat May 20 23:36:55 2006 +0200 +++ b/src/HOL/Nominal/Examples/SN.thy Sat May 20 23:36:56 2006 +0200 @@ -167,7 +167,7 @@ TVar "string" | TArr "ty" "ty" (infix "\" 200) -primrec +primrec (unchecked) "pi\(TVar s) = TVar s" "pi\(\ \ \) = (\ \ \)" diff -r 83611262823e -r 0a7c6d78ad6b src/HOL/Nominal/Nominal.thy --- a/src/HOL/Nominal/Nominal.thy Sat May 20 23:36:55 2006 +0200 +++ b/src/HOL/Nominal/Nominal.thy Sat May 20 23:36:56 2006 +0200 @@ -42,15 +42,11 @@ by (auto simp add: perm_set_def) (* permutation on units and products *) -defs (unchecked overloaded) - perm_unit_def: "pi\u == (case u of () \ ())" - perm_prod_def: "pi\p == prod_rec (\a b pi. (pi \ a, pi \ b)) p pi" - -lemma [simp]: - "pi\() = ()" by (simp add: perm_unit_def) - -lemma [simp]: - "pi\(a,b) = (pi\a,pi\b)" by (simp add: perm_prod_def) +primrec (unchecked perm_unit) + "pi\() = ()" + +primrec (unchecked perm_prod) + "pi\(a,b) = (pi\a,pi\b)" lemma perm_fst: "pi\(fst x) = fst (pi\x)" @@ -61,13 +57,9 @@ by (cases x) simp (* permutation on lists *) -defs (unchecked overloaded) - perm_list_def: "pi\list \ list_rec (\_. []) (\x _ xs pi. pi\x # xs pi) list pi" - -lemma - perm_nil_def [simp]: "pi\[] = []" and - perm_cons_def [simp]: "pi\(x#xs) = (pi\x)#(pi\xs)" - by (simp_all add: perm_list_def) +primrec (unchecked perm_list) + perm_nil_def: "pi\[] = []" + perm_cons_def: "pi\(x#xs) = (pi\x)#(pi\xs)" lemma perm_append: fixes pi :: "'x prm" @@ -87,7 +79,7 @@ perm_fun_def: "pi\(f::'a\'b) \ (\x. pi\f((rev pi)\x))" (* permutation on bools *) -primrec (perm_bool) +primrec (unchecked perm_bool) perm_true_def: "pi\True = True" perm_false_def: "pi\False = False" @@ -96,32 +88,22 @@ by (cases b) auto (* permutation on options *) -defs (unchecked overloaded) - perm_option_def: "pi\opt \ option_rec (\_. None) (\x pi. Some (pi \ x)) opt pi" -lemma - perm_some_def [simp]: "pi\Some(x) = Some(pi\x)" and - perm_none_def [simp]: "pi\None = None" - by (simp_all add: perm_option_def) +primrec (unchecked perm_option) + perm_some_def: "pi\Some(x) = Some(pi\x)" + perm_none_def: "pi\None = None" (* a "private" copy of the option type used in the abstraction function *) datatype 'a noption = nSome 'a | nNone -defs (unchecked overloaded) - perm_noption_def: "pi\opt \ noption_rec (\x pi. nSome (pi \ x)) (\_. nNone) opt pi" - -lemma - perm_nSome_def [simp]: "pi\nSome(x) = nSome(pi\x)" and - perm_nNone_def [simp]: "pi\nNone = nNone" - by (simp_all add: perm_noption_def) +primrec (unchecked perm_noption) + perm_nSome_def: "pi\nSome(x) = nSome(pi\x)" + perm_nNone_def: "pi\nNone = nNone" (* a "private" copy of the product type used in the nominal induct method *) datatype ('a,'b) nprod = nPair 'a 'b -defs (unchecked overloaded) - perm_nprod_def: "pi\p \ nprod_rec (\x1 x2 pi. nPair (pi \ x1) (pi \ x2)) p pi" -lemma [simp]: - "pi\(nPair x1 x2) = nPair (pi\x1) (pi\x2)" - by (simp add: perm_nprod_def) +primrec (unchecked perm_nprod) + perm_nProd_def: "pi\(nPair x1 x2) = nPair (pi\x1) (pi\x2)" (* permutation on characters (used in strings) *) defs (unchecked overloaded)