# HG changeset patch # User wenzelm # Date 1192969308 -7200 # Node ID 2c8caac48adeb57f76400617a51174b5f1bf90d8 # Parent d91391a8705b9b543ffe70421edf42a4782a2a05 modernized specifications ('definition', 'abbreviation', 'notation'); diff -r d91391a8705b -r 2c8caac48ade src/HOLCF/Adm.thy --- a/src/HOLCF/Adm.thy Sun Oct 21 14:21:45 2007 +0200 +++ b/src/HOLCF/Adm.thy Sun Oct 21 14:21:48 2007 +0200 @@ -13,12 +13,13 @@ subsection {* Definitions *} -constdefs - adm :: "('a::cpo \ bool) \ bool" - "adm P \ \Y. chain Y \ (\i. P (Y i)) \ P (\i. Y i)" +definition + adm :: "('a::cpo \ bool) \ bool" where + "adm P = (\Y. chain Y \ (\i. P (Y i)) \ P (\i. Y i))" - compact :: "'a::cpo \ bool" - "compact k \ adm (\x. \ k \ x)" +definition + compact :: "'a::cpo \ bool" where + "compact k = adm (\x. \ k \ x)" lemma admI: "(\Y. \chain Y; \i. P (Y i)\ \ P (\i. Y i)) \ adm P" diff -r d91391a8705b -r 2c8caac48ade src/HOLCF/Cfun.thy --- a/src/HOLCF/Cfun.thy Sun Oct 21 14:21:45 2007 +0200 +++ b/src/HOLCF/Cfun.thy Sun Oct 21 14:21:48 2007 +0200 @@ -28,14 +28,14 @@ syntax (xsymbols) "->" :: "[type, type] => type" ("(_ \/ _)" [1,0]0) -syntax - Rep_CFun :: "('a \ 'b) \ ('a \ 'b)" ("(_$/_)" [999,1000] 999) +notation + Rep_CFun ("(_$/_)" [999,1000] 999) -syntax (xsymbols) - Rep_CFun :: "('a \ 'b) \ ('a \ 'b)" ("(_\/_)" [999,1000] 999) +notation (xsymbols) + Rep_CFun ("(_\/_)" [999,1000] 999) -syntax (HTML output) - Rep_CFun :: "('a \ 'b) \ ('a \ 'b)" ("(_\/_)" [999,1000] 999) +notation (HTML output) + Rep_CFun ("(_\/_)" [999,1000] 999) subsection {* Syntax for continuous lambda abstraction *} @@ -43,7 +43,7 @@ parse_translation {* (* rewrites (_cabs x t) => (Abs_CFun (%x. t)) *) - [mk_binder_tr ("_cabs", "Abs_CFun")]; + [mk_binder_tr ("_cabs", @{const_syntax Abs_CFun})]; *} text {* To avoid eta-contraction of body: *} @@ -59,7 +59,7 @@ val (x,t') = atomic_abs_tr' abs'; in Syntax.const "_cabs" $ x $ t' end; - in [("Abs_CFun", cabs_tr')] end; + in [(@{const_syntax Abs_CFun}, cabs_tr')] end; *} text {* Syntax for nested abstractions *} @@ -95,7 +95,7 @@ text {* Dummy patterns for continuous abstraction *} translations - "\ _. t" => "Abs_CFun (\ _. t)" + "\ _. t" => "CONST Abs_CFun (\ _. t)" subsection {* Continuous function space is pointed *} @@ -439,9 +439,9 @@ ID :: "'a \ 'a" cfcomp :: "('b \ 'c) \ ('a \ 'b) \ 'a \ 'c" -syntax "@oo" :: "['b \ 'c, 'a \ 'b] \ 'a \ 'c" (infixr "oo" 100) - -translations "f oo g" == "cfcomp\f\g" +abbreviation + cfcomp_syn :: "['b \ 'c, 'a \ 'b] \ 'a \ 'c" (infixr "oo" 100) where + "f oo g == cfcomp\f\g" defs ID_def: "ID \ (\ x. x)" @@ -481,9 +481,9 @@ defaultsort pcpo -constdefs - strictify :: "('a \ 'b) \ 'a \ 'b" - "strictify \ (\ f x. if x = \ then \ else f\x)" +definition + strictify :: "('a \ 'b) \ 'a \ 'b" where + "strictify = (\ f x. if x = \ then \ else f\x)" text {* results about strictify *} @@ -526,15 +526,15 @@ subsection {* Continuous let-bindings *} -constdefs - CLet :: "'a \ ('a \ 'b) \ 'b" - "CLet \ \ s f. f\s" +definition + CLet :: "'a \ ('a \ 'b) \ 'b" where + "CLet = (\ s f. f\s)" syntax "_CLet" :: "[letbinds, 'a] => 'a" ("(Let (_)/ in (_))" 10) translations "_CLet (_binds b bs) e" == "_CLet b (_CLet bs e)" - "Let x = a in e" == "CLet\a\(\ x. e)" + "Let x = a in e" == "CONST CLet\a\(\ x. e)" end diff -r d91391a8705b -r 2c8caac48ade src/HOLCF/Cont.thy --- a/src/HOLCF/Cont.thy Sun Oct 21 14:21:45 2007 +0200 +++ b/src/HOLCF/Cont.thy Sun Oct 21 14:21:48 2007 +0200 @@ -20,15 +20,17 @@ subsection {* Definitions *} -constdefs - monofun :: "('a \ 'b) \ bool" -- "monotonicity" - "monofun f \ \x y. x \ y \ f x \ f y" +definition + monofun :: "('a \ 'b) \ bool" -- "monotonicity" where + "monofun f = (\x y. x \ y \ f x \ f y)" - contlub :: "('a::cpo \ 'b::cpo) \ bool" -- "first cont. def" - "contlub f \ \Y. chain Y \ f (\i. Y i) = (\i. f (Y i))" +definition + contlub :: "('a::cpo \ 'b::cpo) \ bool" -- "first cont. def" where + "contlub f = (\Y. chain Y \ f (\i. Y i) = (\i. f (Y i)))" - cont :: "('a::cpo \ 'b::cpo) \ bool" -- "secnd cont. def" - "cont f \ \Y. chain Y \ range (\i. f (Y i)) <<| f (\i. Y i)" +definition + cont :: "('a::cpo \ 'b::cpo) \ bool" -- "secnd cont. def" where + "cont f = (\Y. chain Y \ range (\i. f (Y i)) <<| f (\i. Y i))" lemma contlubI: "\\Y. chain Y \ f (\i. Y i) = (\i. f (Y i))\ \ contlub f" diff -r d91391a8705b -r 2c8caac48ade src/HOLCF/Cprod.thy --- a/src/HOLCF/Cprod.thy Sun Oct 21 14:21:45 2007 +0200 +++ b/src/HOLCF/Cprod.thy Sun Oct 21 14:21:48 2007 +0200 @@ -29,12 +29,12 @@ instance unit :: pcpo by intro_classes simp -constdefs - unit_when :: "'a \ unit \ 'a" - "unit_when \ \ a _. a" +definition + unit_when :: "'a \ unit \ 'a" where + "unit_when = (\ a _. a)" translations - "\(). t" == "unit_when\t" + "\(). t" == "CONST unit_when\t" lemma unit_when [simp]: "unit_when\a\u = a" by (simp add: unit_when_def) @@ -192,18 +192,21 @@ subsection {* Continuous versions of constants *} -constdefs - cpair :: "'a \ 'b \ ('a * 'b)" (* continuous pairing *) - "cpair \ (\ x y. (x, y))" +definition + cpair :: "'a \ 'b \ ('a * 'b)" -- {* continuous pairing *} where + "cpair = (\ x y. (x, y))" + +definition + cfst :: "('a * 'b) \ 'a" where + "cfst = (\ p. fst p)" - cfst :: "('a * 'b) \ 'a" - "cfst \ (\ p. fst p)" +definition + csnd :: "('a * 'b) \ 'b" where + "csnd = (\ p. snd p)" - csnd :: "('a * 'b) \ 'b" - "csnd \ (\ p. snd p)" - - csplit :: "('a \ 'b \ 'c) \ ('a * 'b) \ 'c" - "csplit \ (\ f p. f\(cfst\p)\(csnd\p))" +definition + csplit :: "('a \ 'b \ 'c) \ ('a * 'b) \ 'c" where + "csplit = (\ f p. f\(cfst\p)\(csnd\p))" syntax "_ctuple" :: "['a, args] \ 'a * 'b" ("(1<_,/ _>)") @@ -213,10 +216,10 @@ translations "\x, y, z\" == "\x, \y, z\\" - "\x, y\" == "cpair\x\y" + "\x, y\" == "CONST cpair\x\y" translations - "\(cpair\x\y). t" == "csplit\(\ x y. t)" + "\(CONST cpair\x\y). t" == "CONST csplit\(\ x y. t)" subsection {* Convert all lemmas to the continuous versions *} diff -r d91391a8705b -r 2c8caac48ade src/HOLCF/Discrete.thy --- a/src/HOLCF/Discrete.thy Sun Oct 21 14:21:45 2007 +0200 +++ b/src/HOLCF/Discrete.thy Sun Oct 21 14:21:48 2007 +0200 @@ -56,9 +56,9 @@ subsection {* @{term undiscr} *} -constdefs - undiscr :: "('a::type)discr => 'a" - "undiscr x == (case x of Discr y => y)" +definition + undiscr :: "('a::type)discr => 'a" where + "undiscr x = (case x of Discr y => y)" lemma undiscr_Discr [simp]: "undiscr(Discr x) = x" by (simp add: undiscr_def) diff -r d91391a8705b -r 2c8caac48ade src/HOLCF/Fix.thy --- a/src/HOLCF/Fix.thy Sun Oct 21 14:21:45 2007 +0200 +++ b/src/HOLCF/Fix.thy Sun Oct 21 14:21:48 2007 +0200 @@ -49,9 +49,9 @@ subsection {* Least fixed point operator *} -constdefs - "fix" :: "('a \ 'a) \ 'a" - "fix \ \ F. \i. iterate i\F\\" +definition + "fix" :: "('a \ 'a) \ 'a" where + "fix = (\ F. \i. iterate i\F\\)" text {* Binder syntax for @{term fix} *} @@ -62,7 +62,7 @@ "_FIX" :: "['a, 'a] \ 'a" ("(3\_./ _)" [1000, 10] 10) translations - "\ x. t" == "fix\(\ x. t)" + "\ x. t" == "CONST fix\(\ x. t)" text {* Properties of @{term fix} *} @@ -164,9 +164,9 @@ subsection {* Recursive let bindings *} -constdefs - CLetrec :: "('a \ 'a \ 'b) \ 'b" - "CLetrec \ \ F. csnd\(F\(\ x. cfst\(F\x)))" +definition + CLetrec :: "('a \ 'a \ 'b) \ 'b" where + "CLetrec = (\ F. csnd\(F\(\ x. cfst\(F\x))))" nonterminals recbinds recbindt recbind @@ -181,12 +181,12 @@ translations (recbindt) "x = a, \y,ys\ = \b,bs\" == (recbindt) "\x,y,ys\ = \a,b,bs\" - (recbindt) "x = a, y = b" == (recbindt) "\x,y\ = \a,b\" + (recbindt) "x = a, y = b" == (recbindt) "\x,y\ = \a,b\" translations "_Letrec (_recbinds b bs) e" == "_Letrec b (_Letrec bs e)" - "Letrec xs = a in \e,es\" == "CLetrec\(\ xs. \a,e,es\)" - "Letrec xs = a in e" == "CLetrec\(\ xs. \a,e\)" + "Letrec xs = a in \e,es\" == "CONST CLetrec\(\ xs. \a,e,es\)" + "Letrec xs = a in e" == "CONST CLetrec\(\ xs. \a,e\)" text {* Bekic's Theorem: Simultaneous fixed points over pairs @@ -222,9 +222,9 @@ subsection {* Weak admissibility *} -constdefs - admw :: "('a \ bool) \ bool" - "admw P \ \F. (\n. P (iterate n\F\\)) \ P (\i. iterate i\F\\)" +definition + admw :: "('a \ bool) \ bool" where + "admw P = (\F. (\n. P (iterate n\F\\)) \ P (\i. iterate i\F\\))" text {* an admissible formula is also weak admissible *} diff -r d91391a8705b -r 2c8caac48ade src/HOLCF/Fixrec.thy --- a/src/HOLCF/Fixrec.thy Sun Oct 21 14:21:45 2007 +0200 +++ b/src/HOLCF/Fixrec.thy Sun Oct 21 14:21:48 2007 +0200 @@ -21,11 +21,13 @@ fail :: "'a maybe" "fail \ Abs_maybe (sinl\ONE)" - return :: "'a \ 'a maybe" +constdefs + return :: "'a \ 'a maybe" where "return \ \ x. Abs_maybe (sinr\(up\x))" - maybe_when :: "'b \ ('a \ 'b) \ 'a maybe \ 'b::pcpo" - "maybe_when \ \ f r m. sscase\(\ x. f)\(fup\r)\(Rep_maybe m)" +definition + maybe_when :: "'b \ ('a \ 'b) \ 'a maybe \ 'b::pcpo" where + "maybe_when = (\ f r m. sscase\(\ x. f)\(fup\r)\(Rep_maybe m))" lemma maybeE: "\p = \ \ Q; p = fail \ Q; \x. p = return\x \ Q\ \ Q" @@ -57,14 +59,14 @@ cont_Abs_maybe Abs_maybe_inverse Rep_maybe_strict) translations - "case m of fail \ t1 | return\x \ t2" == "maybe_when\t1\(\ x. t2)\m" + "case m of fail \ t1 | return\x \ t2" == "CONST maybe_when\t1\(\ x. t2)\m" subsubsection {* Monadic bind operator *} -constdefs - bind :: "'a maybe \ ('a \ 'b maybe) \ 'b maybe" - "bind \ \ m f. case m of fail \ fail | return\x \ f\x" +definition + bind :: "'a maybe \ ('a \ 'b maybe) \ 'b maybe" where + "bind = (\ m f. case m of fail \ fail | return\x \ f\x)" text {* monad laws *} @@ -86,9 +88,9 @@ subsubsection {* Run operator *} -constdefs - run:: "'a maybe \ 'a::pcpo" - "run \ maybe_when\\\ID" +definition + run:: "'a maybe \ 'a::pcpo" where + "run = maybe_when\\\ID" text {* rewrite rules for run *} @@ -103,12 +105,13 @@ subsubsection {* Monad plus operator *} -constdefs - mplus :: "'a maybe \ 'a maybe \ 'a maybe" - "mplus \ \ m1 m2. case m1 of fail \ m2 | return\x \ m1" +definition + mplus :: "'a maybe \ 'a maybe \ 'a maybe" where + "mplus = (\ m1 m2. case m1 of fail \ m2 | return\x \ m1)" -syntax "+++" :: "['a maybe, 'a maybe] \ 'a maybe" (infixr "+++" 65) -translations "m1 +++ m2" == "mplus\m1\m2" +abbreviation + mplus_syn :: "['a maybe, 'a maybe] \ 'a maybe" (infixr "+++" 65) where + "m1 +++ m2 == mplus\m1\m2" text {* rewrite rules for mplus *} @@ -129,14 +132,13 @@ subsubsection {* Fatbar combinator *} -constdefs - fatbar :: "('a \ 'b maybe) \ ('a \ 'b maybe) \ ('a \ 'b maybe)" - "fatbar \ \ a b x. a\x +++ b\x" +definition + fatbar :: "('a \ 'b maybe) \ ('a \ 'b maybe) \ ('a \ 'b maybe)" where + "fatbar = (\ a b x. a\x +++ b\x)" -syntax - "\" :: "['a \ 'b maybe, 'a \ 'b maybe] \ 'a \ 'b maybe" (infixr "\" 60) -translations - "m1 \ m2" == "fatbar\m1\m2" +abbreviation + fatbar_syn :: "['a \ 'b maybe, 'a \ 'b maybe] \ 'a \ 'b maybe" (infixr "\" 60) where + "m1 \ m2 == fatbar\m1\m2" lemma fatbar1: "m\x = \ \ (m \ ms)\x = \" by (simp add: fatbar_def) @@ -201,15 +203,15 @@ "_var" :: "'a" translations - "_Case1 p r" => "branch (_pat p)\(_var p r)" - "_var (_args x y) r" => "csplit\(_var x (_var y r))" - "_var () r" => "unit_when\r" + "_Case1 p r" => "CONST branch (_pat p)\(_var p r)" + "_var (_args x y) r" => "CONST csplit\(_var x (_var y r))" + "_var () r" => "CONST unit_when\r" parse_translation {* (* rewrites (_pat x) => (return) *) (* rewrites (_var x t) => (Abs_CFun (%x. t)) *) [("_pat", K (Syntax.const "Fixrec.return")), - mk_binder_tr ("_var", "Abs_CFun")]; + mk_binder_tr ("_var", @{const_syntax Abs_CFun})]; *} text {* Printing Case expressions *} @@ -219,14 +221,14 @@ print_translation {* let - fun dest_LAM (Const ("Rep_CFun",_) $ Const ("unit_when",_) $ t) = - (Syntax.const "Unity", t) - | dest_LAM (Const ("Rep_CFun",_) $ Const ("csplit",_) $ t) = + fun dest_LAM (Const (@{const_syntax Rep_CFun},_) $ Const (@{const_syntax unit_when},_) $ t) = + (Syntax.const @{const_syntax Unity}, t) + | dest_LAM (Const (@{const_syntax Rep_CFun},_) $ Const (@{const_syntax csplit},_) $ t) = let val (v1, t1) = dest_LAM t; val (v2, t2) = dest_LAM t1; in (Syntax.const "_args" $ v1 $ v2, t2) end - | dest_LAM (Const ("Abs_CFun",_) $ t) = + | dest_LAM (Const (@{const_syntax Abs_CFun},_) $ t) = let val abs = case t of Abs abs => abs | _ => ("x", dummyT, incr_boundvars 1 t $ Bound 0); @@ -234,11 +236,11 @@ in (Syntax.const "_var" $ x, t') end | dest_LAM _ = raise Match; (* too few vars: abort translation *) - fun Case1_tr' [Const("branch",_) $ p, r] = + fun Case1_tr' [Const(@{const_syntax branch},_) $ p, r] = let val (v, t) = dest_LAM r; in Syntax.const "_Case1" $ (Syntax.const "_match" $ p $ v) $ t end; - in [("Rep_CFun", Case1_tr')] end; + in [(@{const_syntax Rep_CFun}, Case1_tr')] end; *} translations @@ -249,67 +251,74 @@ types ('a, 'b) pat = "'a \ 'b maybe" -constdefs - cpair_pat :: "('a, 'c) pat \ ('b, 'd) pat \ ('a \ 'b, 'c \ 'd) pat" - "cpair_pat p1 p2 \ \\x, y\. - bind\(p1\x)\(\ a. bind\(p2\y)\(\ b. return\\a, b\))" +definition + cpair_pat :: "('a, 'c) pat \ ('b, 'd) pat \ ('a \ 'b, 'c \ 'd) pat" where + "cpair_pat p1 p2 = (\\x, y\. + bind\(p1\x)\(\ a. bind\(p2\y)\(\ b. return\\a, b\)))" +definition spair_pat :: - "('a, 'c) pat \ ('b, 'd) pat \ ('a::pcpo \ 'b::pcpo, 'c \ 'd) pat" - "spair_pat p1 p2 \ \(:x, y:). cpair_pat p1 p2\\x, y\" + "('a, 'c) pat \ ('b, 'd) pat \ ('a::pcpo \ 'b::pcpo, 'c \ 'd) pat" where + "spair_pat p1 p2 = (\(:x, y:). cpair_pat p1 p2\\x, y\)" - sinl_pat :: "('a, 'c) pat \ ('a::pcpo \ 'b::pcpo, 'c) pat" - "sinl_pat p \ sscase\p\(\ x. fail)" +definition + sinl_pat :: "('a, 'c) pat \ ('a::pcpo \ 'b::pcpo, 'c) pat" where + "sinl_pat p = sscase\p\(\ x. fail)" - sinr_pat :: "('b, 'c) pat \ ('a::pcpo \ 'b::pcpo, 'c) pat" - "sinr_pat p \ sscase\(\ x. fail)\p" +definition + sinr_pat :: "('b, 'c) pat \ ('a::pcpo \ 'b::pcpo, 'c) pat" where + "sinr_pat p = sscase\(\ x. fail)\p" - up_pat :: "('a, 'b) pat \ ('a u, 'b) pat" - "up_pat p \ fup\p" +definition + up_pat :: "('a, 'b) pat \ ('a u, 'b) pat" where + "up_pat p = fup\p" - TT_pat :: "(tr, unit) pat" - "TT_pat \ \ b. If b then return\() else fail fi" +definition + TT_pat :: "(tr, unit) pat" where + "TT_pat = (\ b. If b then return\() else fail fi)" - FF_pat :: "(tr, unit) pat" - "FF_pat \ \ b. If b then fail else return\() fi" +definition + FF_pat :: "(tr, unit) pat" where + "FF_pat = (\ b. If b then fail else return\() fi)" - ONE_pat :: "(one, unit) pat" - "ONE_pat \ \ ONE. return\()" +definition + ONE_pat :: "(one, unit) pat" where + "ONE_pat = (\ ONE. return\())" text {* Parse translations (patterns) *} translations - "_pat (cpair\x\y)" => "cpair_pat (_pat x) (_pat y)" - "_pat (spair\x\y)" => "spair_pat (_pat x) (_pat y)" - "_pat (sinl\x)" => "sinl_pat (_pat x)" - "_pat (sinr\x)" => "sinr_pat (_pat x)" - "_pat (up\x)" => "up_pat (_pat x)" - "_pat TT" => "TT_pat" - "_pat FF" => "FF_pat" - "_pat ONE" => "ONE_pat" + "_pat (CONST cpair\x\y)" => "CONST cpair_pat (_pat x) (_pat y)" + "_pat (CONST spair\x\y)" => "CONST spair_pat (_pat x) (_pat y)" + "_pat (CONST sinl\x)" => "CONST sinl_pat (_pat x)" + "_pat (CONST sinr\x)" => "CONST sinr_pat (_pat x)" + "_pat (CONST up\x)" => "CONST up_pat (_pat x)" + "_pat (CONST TT)" => "CONST TT_pat" + "_pat (CONST FF)" => "CONST FF_pat" + "_pat (CONST ONE)" => "CONST ONE_pat" text {* Parse translations (variables) *} translations - "_var (cpair\x\y) r" => "_var (_args x y) r" - "_var (spair\x\y) r" => "_var (_args x y) r" - "_var (sinl\x) r" => "_var x r" - "_var (sinr\x) r" => "_var x r" - "_var (up\x) r" => "_var x r" - "_var TT r" => "_var () r" - "_var FF r" => "_var () r" - "_var ONE r" => "_var () r" + "_var (CONST cpair\x\y) r" => "_var (_args x y) r" + "_var (CONST spair\x\y) r" => "_var (_args x y) r" + "_var (CONST sinl\x) r" => "_var x r" + "_var (CONST sinr\x) r" => "_var x r" + "_var (CONST up\x) r" => "_var x r" + "_var (CONST TT) r" => "_var () r" + "_var (CONST FF) r" => "_var () r" + "_var (CONST ONE) r" => "_var () r" text {* Print translations *} translations - "cpair\(_match p1 v1)\(_match p2 v2)" - <= "_match (cpair_pat p1 p2) (_args v1 v2)" - "spair\(_match p1 v1)\(_match p2 v2)" - <= "_match (spair_pat p1 p2) (_args v1 v2)" - "sinl\(_match p1 v1)" <= "_match (sinl_pat p1) v1" - "sinr\(_match p1 v1)" <= "_match (sinr_pat p1) v1" - "up\(_match p1 v1)" <= "_match (up_pat p1) v1" - "TT" <= "_match TT_pat ()" - "FF" <= "_match FF_pat ()" - "ONE" <= "_match ONE_pat ()" + "CONST cpair\(_match p1 v1)\(_match p2 v2)" + <= "_match (CONST cpair_pat p1 p2) (_args v1 v2)" + "CONST spair\(_match p1 v1)\(_match p2 v2)" + <= "_match (CONST spair_pat p1 p2) (_args v1 v2)" + "CONST sinl\(_match p1 v1)" <= "_match (CONST sinl_pat p1) v1" + "CONST sinr\(_match p1 v1)" <= "_match (CONST sinr_pat p1) v1" + "CONST up\(_match p1 v1)" <= "_match (CONST up_pat p1) v1" + "CONST TT" <= "_match (CONST TT_pat) ()" + "CONST FF" <= "_match (CONST FF_pat) ()" + "CONST ONE" <= "_match (CONST ONE_pat) ()" lemma cpair_pat1: "branch p\r\x = \ \ branch (cpair_pat p q)\(csplit\r)\\x, y\ = \" @@ -382,21 +391,23 @@ "_as_pat" :: "[idt, 'a] \ 'a" (infixr "\" 10) "_lazy_pat" :: "'a \ 'a" ("\ _" [1000] 1000) -constdefs - wild_pat :: "'a \ unit maybe" - "wild_pat \ \ x. return\()" +definition + wild_pat :: "'a \ unit maybe" where + "wild_pat = (\ x. return\())" - as_pat :: "('a \ 'b maybe) \ 'a \ ('a \ 'b) maybe" - "as_pat p \ \ x. bind\(p\x)\(\ a. return\\x, a\)" +definition + as_pat :: "('a \ 'b maybe) \ 'a \ ('a \ 'b) maybe" where + "as_pat p = (\ x. bind\(p\x)\(\ a. return\\x, a\))" - lazy_pat :: "('a \ 'b::pcpo maybe) \ ('a \ 'b maybe)" - "lazy_pat p \ \ x. return\(run\(p\x))" +definition + lazy_pat :: "('a \ 'b::pcpo maybe) \ ('a \ 'b maybe)" where + "lazy_pat p = (\ x. return\(run\(p\x)))" text {* Parse translations (patterns) *} translations - "_pat _" => "wild_pat" - "_pat (_as_pat x y)" => "as_pat (_pat y)" - "_pat (_lazy_pat x)" => "lazy_pat (_pat x)" + "_pat _" => "CONST wild_pat" + "_pat (_as_pat x y)" => "CONST as_pat (_pat y)" + "_pat (_lazy_pat x)" => "CONST lazy_pat (_pat x)" text {* Parse translations (variables) *} translations @@ -406,13 +417,13 @@ text {* Print translations *} translations - "_" <= "_match wild_pat ()" - "_as_pat x (_match p v)" <= "_match (as_pat p) (_args (_var x) v)" - "_lazy_pat (_match p v)" <= "_match (lazy_pat p) v" + "_" <= "_match (CONST wild_pat) ()" + "_as_pat x (_match p v)" <= "_match (CONST as_pat p) (_args (_var x) v)" + "_lazy_pat (_match p v)" <= "_match (CONST lazy_pat p) v" text {* Lazy patterns in lambda abstractions *} translations - "_cabs (_lazy_pat p) r" == "run oo (_Case1 (_lazy_pat p) r)" + "_cabs (_lazy_pat p) r" == "CONST run oo (_Case1 (_lazy_pat p) r)" lemma wild_pat [simp]: "branch wild_pat\(unit_when\r)\x = return\r" by (simp add: branch_def wild_pat_def) @@ -436,33 +447,41 @@ defaultsort pcpo -constdefs - match_UU :: "'a \ unit maybe" - "match_UU \ \ x. fail" +definition + match_UU :: "'a \ unit maybe" where + "match_UU = (\ x. fail)" + +definition + match_cpair :: "'a::cpo \ 'b::cpo \ ('a \ 'b) maybe" where + "match_cpair = csplit\(\ x y. return\)" - match_cpair :: "'a::cpo \ 'b::cpo \ ('a \ 'b) maybe" - "match_cpair \ csplit\(\ x y. return\)" +definition + match_spair :: "'a \ 'b \ ('a \ 'b) maybe" where + "match_spair = ssplit\(\ x y. return\)" - match_spair :: "'a \ 'b \ ('a \ 'b) maybe" - "match_spair \ ssplit\(\ x y. return\)" - - match_sinl :: "'a \ 'b \ 'a maybe" - "match_sinl \ sscase\return\(\ y. fail)" +definition + match_sinl :: "'a \ 'b \ 'a maybe" where + "match_sinl = sscase\return\(\ y. fail)" - match_sinr :: "'a \ 'b \ 'b maybe" - "match_sinr \ sscase\(\ x. fail)\return" +definition + match_sinr :: "'a \ 'b \ 'b maybe" where + "match_sinr = sscase\(\ x. fail)\return" - match_up :: "'a::cpo u \ 'a maybe" - "match_up \ fup\return" +definition + match_up :: "'a::cpo u \ 'a maybe" where + "match_up = fup\return" - match_ONE :: "one \ unit maybe" - "match_ONE \ \ ONE. return\()" +definition + match_ONE :: "one \ unit maybe" where + "match_ONE = (\ ONE. return\())" - match_TT :: "tr \ unit maybe" - "match_TT \ \ b. If b then return\() else fail fi" +definition + match_TT :: "tr \ unit maybe" where + "match_TT = (\ b. If b then return\() else fail fi)" - match_FF :: "tr \ unit maybe" - "match_FF \ \ b. If b then fail else return\() fi" +definition + match_FF :: "tr \ unit maybe" where + "match_FF = (\ b. If b then fail else return\() fi)" lemma match_UU_simps [simp]: "match_UU\x = fail" @@ -532,13 +551,6 @@ lemma ssubst_lhs: "\t = s; P s = Q\ \ P t = Q" by simp -ML {* -val cpair_equalI = thm "cpair_equalI"; -val cpair_eqD1 = thm "cpair_eqD1"; -val cpair_eqD2 = thm "cpair_eqD2"; -val ssubst_lhs = thm "ssubst_lhs"; -val branch_def = thm "branch_def"; -*} subsection {* Initializing the fixrec package *} diff -r d91391a8705b -r 2c8caac48ade src/HOLCF/IOA/ABP/Correctness.thy --- a/src/HOLCF/IOA/ABP/Correctness.thy Sun Oct 21 14:21:45 2007 +0200 +++ b/src/HOLCF/IOA/ABP/Correctness.thy Sun Oct 21 14:21:48 2007 +0200 @@ -20,22 +20,23 @@ then reduce xs else (x#(reduce xs))))" -constdefs +definition abs where - "abs == + "abs = (%p.(fst(p),(fst(snd(p)),(fst(snd(snd(p))), (reduce(fst(snd(snd(snd(p))))),reduce(snd(snd(snd(snd(p))))))))))" - system_ioa :: "('m action, bool * 'm impl_state)ioa" - "system_ioa == (env_ioa || impl_ioa)" +definition + system_ioa :: "('m action, bool * 'm impl_state)ioa" where + "system_ioa = (env_ioa || impl_ioa)" - system_fin_ioa :: "('m action, bool * 'm impl_state)ioa" - "system_fin_ioa == (env_ioa || impl_fin_ioa)" +definition + system_fin_ioa :: "('m action, bool * 'm impl_state)ioa" where + "system_fin_ioa = (env_ioa || impl_fin_ioa)" -axioms - - sys_IOA: "IOA system_ioa" +axiomatization where + sys_IOA: "IOA system_ioa" and sys_fin_IOA: "IOA system_fin_ioa" diff -r d91391a8705b -r 2c8caac48ade src/HOLCF/IOA/ABP/Env.thy --- a/src/HOLCF/IOA/ABP/Env.thy Sun Oct 21 14:21:45 2007 +0200 +++ b/src/HOLCF/IOA/ABP/Env.thy Sun Oct 21 14:21:48 2007 +0200 @@ -12,30 +12,32 @@ types 'm env_state = bool -- {* give next bit to system *} -constdefs -env_asig :: "'m action signature" -"env_asig == ({Next}, - UN m. {S_msg(m)}, - {})" +definition + env_asig :: "'m action signature" where + "env_asig == ({Next}, + UN m. {S_msg(m)}, + {})" -env_trans :: "('m action, 'm env_state)transition set" -"env_trans == - {tr. let s = fst(tr); - t = snd(snd(tr)) - in case fst(snd(tr)) - of - Next => t=True | - S_msg(m) => s=True & t=False | - R_msg(m) => False | - S_pkt(pkt) => False | - R_pkt(pkt) => False | - S_ack(b) => False | - R_ack(b) => False}" +definition + env_trans :: "('m action, 'm env_state)transition set" where + "env_trans = + {tr. let s = fst(tr); + t = snd(snd(tr)) + in case fst(snd(tr)) + of + Next => t=True | + S_msg(m) => s=True & t=False | + R_msg(m) => False | + S_pkt(pkt) => False | + R_pkt(pkt) => False | + S_ack(b) => False | + R_ack(b) => False}" -env_ioa :: "('m action, 'm env_state)ioa" -"env_ioa == (env_asig, {True}, env_trans,{},{})" +definition + env_ioa :: "('m action, 'm env_state)ioa" where + "env_ioa = (env_asig, {True}, env_trans,{},{})" -consts - "next" :: "'m env_state => bool" +axiomatization + "next" :: "'m env_state => bool" end diff -r d91391a8705b -r 2c8caac48ade src/HOLCF/IOA/ABP/Impl.thy --- a/src/HOLCF/IOA/ABP/Impl.thy Sun Oct 21 14:21:45 2007 +0200 +++ b/src/HOLCF/IOA/ABP/Impl.thy Sun Oct 21 14:21:48 2007 +0200 @@ -13,21 +13,24 @@ 'm impl_state = "'m sender_state * 'm receiver_state * 'm packet list * bool list" (* sender_state * receiver_state * srch_state * rsch_state *) -constdefs +definition + impl_ioa :: "('m action, 'm impl_state)ioa" where + "impl_ioa = (sender_ioa || receiver_ioa || srch_ioa || rsch_ioa)" - impl_ioa :: "('m action, 'm impl_state)ioa" - "impl_ioa == (sender_ioa || receiver_ioa || srch_ioa || rsch_ioa)" - - sen :: "'m impl_state => 'm sender_state" - "sen == fst" +definition + sen :: "'m impl_state => 'm sender_state" where + "sen = fst" - rec :: "'m impl_state => 'm receiver_state" - "rec == fst o snd" +definition + rec :: "'m impl_state => 'm receiver_state" where + "rec = fst o snd" - srch :: "'m impl_state => 'm packet list" - "srch == fst o snd o snd" +definition + srch :: "'m impl_state => 'm packet list" where + "srch = fst o snd o snd" - rsch :: "'m impl_state => bool list" - "rsch == snd o snd o snd" +definition + rsch :: "'m impl_state => bool list" where + "rsch = snd o snd o snd" end diff -r d91391a8705b -r 2c8caac48ade src/HOLCF/IOA/ABP/Impl_finite.thy --- a/src/HOLCF/IOA/ABP/Impl_finite.thy Sun Oct 21 14:21:45 2007 +0200 +++ b/src/HOLCF/IOA/ABP/Impl_finite.thy Sun Oct 21 14:21:48 2007 +0200 @@ -14,22 +14,25 @@ = "'m sender_state * 'm receiver_state * 'm packet list * bool list" (* sender_state * receiver_state * srch_state * rsch_state *) -constdefs +definition + impl_fin_ioa :: "('m action, 'm impl_fin_state)ioa" where + "impl_fin_ioa = (sender_ioa || receiver_ioa || srch_fin_ioa || + rsch_fin_ioa)" - impl_fin_ioa :: "('m action, 'm impl_fin_state)ioa" - "impl_fin_ioa == (sender_ioa || receiver_ioa || srch_fin_ioa || - rsch_fin_ioa)" - - sen_fin :: "'m impl_fin_state => 'm sender_state" - "sen_fin == fst" +definition + sen_fin :: "'m impl_fin_state => 'm sender_state" where + "sen_fin = fst" - rec_fin :: "'m impl_fin_state => 'm receiver_state" - "rec_fin == fst o snd" +definition + rec_fin :: "'m impl_fin_state => 'm receiver_state" where + "rec_fin = fst o snd" - srch_fin :: "'m impl_fin_state => 'm packet list" - "srch_fin == fst o snd o snd" +definition + srch_fin :: "'m impl_fin_state => 'm packet list" where + "srch_fin = fst o snd o snd" - rsch_fin :: "'m impl_fin_state => bool list" - "rsch_fin == snd o snd o snd" +definition + rsch_fin :: "'m impl_fin_state => bool list" where + "rsch_fin = snd o snd o snd" end diff -r d91391a8705b -r 2c8caac48ade src/HOLCF/IOA/ABP/Packet.thy --- a/src/HOLCF/IOA/ABP/Packet.thy Sun Oct 21 14:21:45 2007 +0200 +++ b/src/HOLCF/IOA/ABP/Packet.thy Sun Oct 21 14:21:48 2007 +0200 @@ -12,11 +12,12 @@ types 'msg packet = "bool * 'msg" -constdefs - hdr :: "'msg packet => bool" - "hdr == fst" +definition + hdr :: "'msg packet => bool" where + "hdr = fst" - msg :: "'msg packet => 'msg" - "msg == snd" +definition + msg :: "'msg packet => 'msg" where + "msg = snd" end diff -r d91391a8705b -r 2c8caac48ade src/HOLCF/IOA/ABP/Receiver.thy --- a/src/HOLCF/IOA/ABP/Receiver.thy Sun Oct 21 14:21:45 2007 +0200 +++ b/src/HOLCF/IOA/ABP/Receiver.thy Sun Oct 21 14:21:48 2007 +0200 @@ -12,43 +12,47 @@ types 'm receiver_state = "'m list * bool" -- {* messages, mode *} -constdefs - rq :: "'m receiver_state => 'm list" - "rq == fst" +definition + rq :: "'m receiver_state => 'm list" where + "rq = fst" - rbit :: "'m receiver_state => bool" - "rbit == snd" +definition + rbit :: "'m receiver_state => bool" where + "rbit = snd" -receiver_asig :: "'m action signature" -"receiver_asig == - (UN pkt. {R_pkt(pkt)}, - (UN m. {R_msg(m)}) Un (UN b. {S_ack(b)}), - {})" +definition + receiver_asig :: "'m action signature" where + "receiver_asig = + (UN pkt. {R_pkt(pkt)}, + (UN m. {R_msg(m)}) Un (UN b. {S_ack(b)}), + {})" -receiver_trans :: "('m action, 'm receiver_state)transition set" -"receiver_trans == - {tr. let s = fst(tr); - t = snd(snd(tr)) - in - case fst(snd(tr)) - of - Next => False | - S_msg(m) => False | - R_msg(m) => (rq(s) ~= []) & - m = hd(rq(s)) & - rq(t) = tl(rq(s)) & - rbit(t)=rbit(s) | - S_pkt(pkt) => False | - R_pkt(pkt) => if (hdr(pkt) ~= rbit(s))&rq(s)=[] then - rq(t) = (rq(s)@[msg(pkt)]) &rbit(t) = (~rbit(s)) else - rq(t) =rq(s) & rbit(t)=rbit(s) | - S_ack(b) => b = rbit(s) & - rq(t) = rq(s) & - rbit(t)=rbit(s) | - R_ack(b) => False}" +definition + receiver_trans :: "('m action, 'm receiver_state)transition set" where + "receiver_trans = + {tr. let s = fst(tr); + t = snd(snd(tr)) + in + case fst(snd(tr)) + of + Next => False | + S_msg(m) => False | + R_msg(m) => (rq(s) ~= []) & + m = hd(rq(s)) & + rq(t) = tl(rq(s)) & + rbit(t)=rbit(s) | + S_pkt(pkt) => False | + R_pkt(pkt) => if (hdr(pkt) ~= rbit(s))&rq(s)=[] then + rq(t) = (rq(s)@[msg(pkt)]) &rbit(t) = (~rbit(s)) else + rq(t) =rq(s) & rbit(t)=rbit(s) | + S_ack(b) => b = rbit(s) & + rq(t) = rq(s) & + rbit(t)=rbit(s) | + R_ack(b) => False}" -receiver_ioa :: "('m action, 'm receiver_state)ioa" -"receiver_ioa == - (receiver_asig, {([],False)}, receiver_trans,{},{})" +definition + receiver_ioa :: "('m action, 'm receiver_state)ioa" where + "receiver_ioa = + (receiver_asig, {([],False)}, receiver_trans,{},{})" end diff -r d91391a8705b -r 2c8caac48ade src/HOLCF/IOA/ABP/Sender.thy --- a/src/HOLCF/IOA/ABP/Sender.thy Sun Oct 21 14:21:45 2007 +0200 +++ b/src/HOLCF/IOA/ABP/Sender.thy Sun Oct 21 14:21:48 2007 +0200 @@ -12,41 +12,45 @@ types 'm sender_state = "'m list * bool" -- {* messages, Alternating Bit *} -constdefs -sq :: "'m sender_state => 'm list" -"sq == fst" +definition + sq :: "'m sender_state => 'm list" where + "sq = fst" -sbit :: "'m sender_state => bool" -"sbit == snd" +definition + sbit :: "'m sender_state => bool" where + "sbit = snd" -sender_asig :: "'m action signature" -"sender_asig == ((UN m. {S_msg(m)}) Un (UN b. {R_ack(b)}), - UN pkt. {S_pkt(pkt)}, - {})" +definition + sender_asig :: "'m action signature" where + "sender_asig = ((UN m. {S_msg(m)}) Un (UN b. {R_ack(b)}), + UN pkt. {S_pkt(pkt)}, + {})" -sender_trans :: "('m action, 'm sender_state)transition set" -"sender_trans == - {tr. let s = fst(tr); - t = snd(snd(tr)) - in case fst(snd(tr)) - of - Next => if sq(s)=[] then t=s else False | - S_msg(m) => sq(t)=sq(s)@[m] & - sbit(t)=sbit(s) | - R_msg(m) => False | - S_pkt(pkt) => sq(s) ~= [] & - hdr(pkt) = sbit(s) & - msg(pkt) = hd(sq(s)) & - sq(t) = sq(s) & - sbit(t) = sbit(s) | - R_pkt(pkt) => False | - S_ack(b) => False | - R_ack(b) => if b = sbit(s) then - sq(t)=tl(sq(s)) & sbit(t)=(~sbit(s)) else - sq(t)=sq(s) & sbit(t)=sbit(s)}" - -sender_ioa :: "('m action, 'm sender_state)ioa" -"sender_ioa == - (sender_asig, {([],True)}, sender_trans,{},{})" +definition + sender_trans :: "('m action, 'm sender_state)transition set" where + "sender_trans = + {tr. let s = fst(tr); + t = snd(snd(tr)) + in case fst(snd(tr)) + of + Next => if sq(s)=[] then t=s else False | + S_msg(m) => sq(t)=sq(s)@[m] & + sbit(t)=sbit(s) | + R_msg(m) => False | + S_pkt(pkt) => sq(s) ~= [] & + hdr(pkt) = sbit(s) & + msg(pkt) = hd(sq(s)) & + sq(t) = sq(s) & + sbit(t) = sbit(s) | + R_pkt(pkt) => False | + S_ack(b) => False | + R_ack(b) => if b = sbit(s) then + sq(t)=tl(sq(s)) & sbit(t)=(~sbit(s)) else + sq(t)=sq(s) & sbit(t)=sbit(s)}" + +definition + sender_ioa :: "('m action, 'm sender_state)ioa" where + "sender_ioa = + (sender_asig, {([],True)}, sender_trans,{},{})" end diff -r d91391a8705b -r 2c8caac48ade src/HOLCF/IOA/Modelcheck/Ring3.thy --- a/src/HOLCF/IOA/Modelcheck/Ring3.thy Sun Oct 21 14:21:45 2007 +0200 +++ b/src/HOLCF/IOA/Modelcheck/Ring3.thy Sun Oct 21 14:21:48 2007 +0200 @@ -11,9 +11,9 @@ Zero_One token | One_Two token | Two_Zero token | Leader_Zero | Leader_One | Leader_Two -constdefs - Greater :: "[token, token] => bool" - "Greater x y == +definition + Greater :: "[token, token] => bool" where + "Greater x y = (x~=Leader & x~=id0 & y=id0) | (x=id4 & y~=id4 & y~=Leader) | (x=id2 & y=id1) | (x=id3 & y=id1) | (x=id3 & y=id2)" diff -r d91391a8705b -r 2c8caac48ade src/HOLCF/IOA/NTP/Correctness.thy --- a/src/HOLCF/IOA/NTP/Correctness.thy Sun Oct 21 14:21:45 2007 +0200 +++ b/src/HOLCF/IOA/NTP/Correctness.thy Sun Oct 21 14:21:48 2007 +0200 @@ -9,10 +9,10 @@ imports Impl Spec begin -constdefs - hom :: "'m impl_state => 'm list" - "hom(s) == rq(rec(s)) @ (if rbit(rec s) = sbit(sen s) then sq(sen s) - else tl(sq(sen s)))" +definition + hom :: "'m impl_state => 'm list" where + "hom s = rq(rec(s)) @ (if rbit(rec s) = sbit(sen s) then sq(sen s) + else tl(sq(sen s)))" ML_setup {* (* repeated from Traces.ML *) diff -r d91391a8705b -r 2c8caac48ade src/HOLCF/IOA/NTP/Packet.thy --- a/src/HOLCF/IOA/NTP/Packet.thy Sun Oct 21 14:21:45 2007 +0200 +++ b/src/HOLCF/IOA/NTP/Packet.thy Sun Oct 21 14:21:48 2007 +0200 @@ -10,12 +10,12 @@ types 'msg packet = "bool * 'msg" -constdefs - - hdr :: "'msg packet => bool" +definition + hdr :: "'msg packet => bool" where "hdr == fst" - msg :: "'msg packet => 'msg" +definition + msg :: "'msg packet => 'msg" where "msg == snd" diff -r d91391a8705b -r 2c8caac48ade src/HOLCF/IOA/Storage/Correctness.thy --- a/src/HOLCF/IOA/Storage/Correctness.thy Sun Oct 21 14:21:45 2007 +0200 +++ b/src/HOLCF/IOA/Storage/Correctness.thy Sun Oct 21 14:21:48 2007 +0200 @@ -11,13 +11,13 @@ defaultsort type -constdefs - sim_relation :: "((nat * bool) * (nat set * bool)) set" - "sim_relation == {qua. let c = fst qua; a = snd qua ; - k = fst c; b = snd c; - used = fst a; c = snd a - in - (! l:used. l < k) & b=c }" +definition + sim_relation :: "((nat * bool) * (nat set * bool)) set" where + "sim_relation = {qua. let c = fst qua; a = snd qua ; + k = fst c; b = snd c; + used = fst a; c = snd a + in + (! l:used. l < k) & b=c}" declare split_paired_All [simp] declare split_paired_Ex [simp del] diff -r d91391a8705b -r 2c8caac48ade src/HOLCF/IOA/meta_theory/Automata.thy --- a/src/HOLCF/IOA/meta_theory/Automata.thy Sun Oct 21 14:21:45 2007 +0200 +++ b/src/HOLCF/IOA/meta_theory/Automata.thy Sun Oct 21 14:21:48 2007 +0200 @@ -68,23 +68,6 @@ rename_set :: "'a set => ('c => 'a option) => 'c set" rename :: "('a, 'b)ioa => ('c => 'a option) => ('c,'b)ioa" - -syntax - - "_trans_of" :: "'s => 'a => ('a,'s)ioa => 's => bool" ("_ -_--_-> _" [81,81,81,81] 100) - "act" :: "('a,'s)ioa => 'a set" - "ext" :: "('a,'s)ioa => 'a set" - "int" :: "('a,'s)ioa => 'a set" - "inp" :: "('a,'s)ioa => 'a set" - "out" :: "('a,'s)ioa => 'a set" - "local" :: "('a,'s)ioa => 'a set" - - -syntax (xsymbols) - - "_trans_of" :: "'s => 'a => ('a,'s)ioa => 's => bool" - ("_ \_\_\ _" [81,81,81,81] 100) - notation (xsymbols) par (infixr "\" 10) @@ -96,15 +79,19 @@ reachable_0: "s : starts_of C ==> reachable C s" | reachable_n: "[| reachable C s; (s, a, t) : trans_of C |] ==> reachable C t" +abbreviation + trans_of_syn ("_ -_--_-> _" [81,81,81,81] 100) where + "s -a--A-> t == (s,a,t):trans_of A" -translations - "s -a--A-> t" == "(s,a,t):trans_of A" - "act A" == "actions (asig_of A)" - "ext A" == "externals (asig_of A)" - "int A" == "internals (asig_of A)" - "inp A" == "inputs (asig_of A)" - "out A" == "outputs (asig_of A)" - "local A" == "locals (asig_of A)" +notation (xsymbols) + trans_of_syn ("_ \_\_\ _" [81,81,81,81] 100) + +abbreviation "act A == actions (asig_of A)" +abbreviation "ext A == externals (asig_of A)" +abbreviation int where "int A == internals (asig_of A)" +abbreviation "inp A == inputs (asig_of A)" +abbreviation "out A == outputs (asig_of A)" +abbreviation "local A == locals (asig_of A)" defs diff -r d91391a8705b -r 2c8caac48ade src/HOLCF/IOA/meta_theory/Sequence.thy --- a/src/HOLCF/IOA/meta_theory/Sequence.thy Sun Oct 21 14:21:45 2007 +0200 +++ b/src/HOLCF/IOA/meta_theory/Sequence.thy Sun Oct 21 14:21:48 2007 +0200 @@ -27,24 +27,23 @@ Filter2 ::"('a => bool) => 'a Seq -> 'a Seq" -syntax +abbreviation + Consq_syn ("(_/>>_)" [66,65] 65) where + "a>>s == Consq a$s" - "@Consq" ::"'a => 'a Seq => 'a Seq" ("(_/>>_)" [66,65] 65) - (* list Enumeration *) - "_totlist" :: "args => 'a Seq" ("[(_)!]") - "_partlist" :: "args => 'a Seq" ("[(_)?]") +notation (xsymbols) + Consq_syn ("(_\_)" [66,65] 65) -syntax (xsymbols) - "@Consq" ::"'a => 'a Seq => 'a Seq" ("(_\_)" [66,65] 65) - - +(* list Enumeration *) +syntax + "_totlist" :: "args => 'a Seq" ("[(_)!]") + "_partlist" :: "args => 'a Seq" ("[(_)?]") translations - "a>>s" == "Consq a$s" "[x, xs!]" == "x>>[xs!]" - "[x!]" == "x>>nil" + "[x!]" == "x>>CONST nil" "[x, xs?]" == "x>>[xs?]" - "[x?]" == "x>>UU" + "[x?]" == "x>>CONST UU" defs diff -r d91391a8705b -r 2c8caac48ade src/HOLCF/IOA/meta_theory/TL.thy --- a/src/HOLCF/IOA/meta_theory/TL.thy Sun Oct 21 14:21:45 2007 +0200 +++ b/src/HOLCF/IOA/meta_theory/TL.thy Sun Oct 21 14:21:48 2007 +0200 @@ -30,10 +30,10 @@ Next ::"'a temporal => 'a temporal" Leadsto ::"'a temporal => 'a temporal => 'a temporal" (infixr "~>" 22) -syntax (xsymbols) - "Box" ::"'a temporal => 'a temporal" ("\ (_)" [80] 80) - "Diamond" ::"'a temporal => 'a temporal" ("\ (_)" [80] 80) - "Leadsto" ::"'a temporal => 'a temporal => 'a temporal" (infixr "\" 22) +notation (xsymbols) + Box ("\ (_)" [80] 80) and + Diamond ("\ (_)" [80] 80) and + Leadsto (infixr "\" 22) defs diff -r d91391a8705b -r 2c8caac48ade src/HOLCF/Lift.thy --- a/src/HOLCF/Lift.thy Sun Oct 21 14:21:45 2007 +0200 +++ b/src/HOLCF/Lift.thy Sun Oct 21 14:21:48 2007 +0200 @@ -16,9 +16,9 @@ lemmas inst_lift_pcpo = Abs_lift_strict [symmetric] -constdefs - Def :: "'a \ 'a lift" - "Def x \ Abs_lift (up\(Discr x))" +definition + Def :: "'a \ 'a lift" where + "Def x = Abs_lift (up\(Discr x))" subsection {* Lift as a datatype *} @@ -110,15 +110,17 @@ subsection {* Further operations *} -constdefs - flift1 :: "('a \ 'b::pcpo) \ ('a lift \ 'b)" (binder "FLIFT " 10) - "flift1 \ \f. (\ x. lift_case \ f x)" +definition + flift1 :: "('a \ 'b::pcpo) \ ('a lift \ 'b)" (binder "FLIFT " 10) where + "flift1 = (\f. (\ x. lift_case \ f x))" - flift2 :: "('a \ 'b) \ ('a lift \ 'b lift)" - "flift2 f \ FLIFT x. Def (f x)" +definition + flift2 :: "('a \ 'b) \ ('a lift \ 'b lift)" where + "flift2 f = (FLIFT x. Def (f x))" - liftpair :: "'a lift \ 'b lift \ ('a \ 'b) lift" - "liftpair x \ csplit\(FLIFT x y. Def (x, y))\x" +definition + liftpair :: "'a lift \ 'b lift \ ('a \ 'b) lift" where + "liftpair x = csplit\(FLIFT x y. Def (x, y))\x" subsection {* Continuity Proofs for flift1, flift2 *} diff -r d91391a8705b -r 2c8caac48ade src/HOLCF/One.thy --- a/src/HOLCF/One.thy Sun Oct 21 14:21:45 2007 +0200 +++ b/src/HOLCF/One.thy Sun Oct 21 14:21:48 2007 +0200 @@ -12,13 +12,12 @@ begin types one = "unit lift" +translations + "one" <= (type) "unit lift" constdefs ONE :: "one" - "ONE \ Def ()" - -translations - "one" <= (type) "unit lift" + "ONE == Def ()" text {* Exhaustion and Elimination for type @{typ one} *} @@ -50,13 +49,13 @@ text {* Case analysis function for type @{typ one} *} -constdefs - one_when :: "'a::pcpo \ one \ 'a" - "one_when \ \ a. strictify\(\ _. a)" +definition + one_when :: "'a::pcpo \ one \ 'a" where + "one_when = (\ a. strictify\(\ _. a))" translations - "case x of ONE \ t" == "one_when\t\x" - "\ ONE. t" == "one_when\t" + "case x of CONST ONE \ t" == "CONST one_when\t\x" + "\ (CONST ONE). t" == "CONST one_when\t" lemma one_when1 [simp]: "(case \ of ONE \ t) = \" by (simp add: one_when_def) diff -r d91391a8705b -r 2c8caac48ade src/HOLCF/Pcpo.thy --- a/src/HOLCF/Pcpo.thy Sun Oct 21 14:21:45 2007 +0200 +++ b/src/HOLCF/Pcpo.thy Sun Oct 21 14:21:48 2007 +0200 @@ -171,12 +171,12 @@ axclass pcpo < cpo least: "\x. \y. x \ y" -constdefs - UU :: "'a::pcpo" - "UU \ THE x. \y. x \ y" +definition + UU :: "'a::pcpo" where + "UU = (THE x. \y. x \ y)" -syntax (xsymbols) - UU :: "'a::pcpo" ("\") +notation (xsymbols) + UU ("\") text {* derive the old rule minimal *} diff -r d91391a8705b -r 2c8caac48ade src/HOLCF/Porder.thy --- a/src/HOLCF/Porder.thy Sun Oct 21 14:21:45 2007 +0200 +++ b/src/HOLCF/Porder.thy Sun Oct 21 14:21:48 2007 +0200 @@ -22,7 +22,7 @@ axclass po < sq_ord refl_less [iff]: "x \ x" - antisym_less: "\x \ y; y \ x\ \ x = y" + antisym_less: "\x \ y; y \ x\ \ x = y" trans_less: "\x \ y; y \ z\ \ x \ z" text {* minimal fixes least element *} @@ -58,32 +58,38 @@ subsection {* Chains and least upper bounds *} -constdefs +text {* class definitions *} - -- {* class definitions *} - is_ub :: "['a set, 'a::po] \ bool" (infixl "<|" 55) - "S <| x \ \y. y \ S \ y \ x" +definition + is_ub :: "['a set, 'a::po] \ bool" (infixl "<|" 55) where + "(S <| x) = (\y. y \ S \ y \ x)" - is_lub :: "['a set, 'a::po] \ bool" (infixl "<<|" 55) - "S <<| x \ S <| x \ (\u. S <| u \ x \ u)" +definition + is_lub :: "['a set, 'a::po] \ bool" (infixl "<<|" 55) where + "(S <<| x) = (S <| x \ (\u. S <| u \ x \ u))" +definition -- {* Arbitrary chains are total orders *} - tord :: "'a::po set \ bool" - "tord S \ \x y. x \ S \ y \ S \ (x \ y \ y \ x)" + tord :: "'a::po set \ bool" where + "tord S = (\x y. x \ S \ y \ S \ (x \ y \ y \ x))" +definition -- {* Here we use countable chains and I prefer to code them as functions! *} - chain :: "(nat \ 'a::po) \ bool" - "chain F \ \i. F i \ F (Suc i)" + chain :: "(nat \ 'a::po) \ bool" where + "chain F = (\i. F i \ F (Suc i))" +definition -- {* finite chains, needed for monotony of continuous functions *} - max_in_chain :: "[nat, nat \ 'a::po] \ bool" - "max_in_chain i C \ \j. i \ j \ C i = C j" + max_in_chain :: "[nat, nat \ 'a::po] \ bool" where + "max_in_chain i C = (\j. i \ j \ C i = C j)" - finite_chain :: "(nat \ 'a::po) \ bool" - "finite_chain C \ chain(C) \ (\i. max_in_chain i C)" +definition + finite_chain :: "(nat \ 'a::po) \ bool" where + "finite_chain C = (chain C \ (\i. max_in_chain i C))" - lub :: "'a set \ 'a::po" - "lub S \ THE x. S <<| x" +definition + lub :: "'a set \ 'a::po" where + "lub S = (THE x. S <<| x)" abbreviation Lub (binder "LUB " 10) where @@ -124,8 +130,6 @@ text {* technical lemmas about @{term lub} and @{term is_lub} *} -lemmas lub = lub_def [THEN meta_eq_to_obj_eq, standard] - lemma lubI: "M <<| x \ M <<| lub M" apply (unfold lub_def) apply (rule theI) @@ -201,7 +205,7 @@ apply (erule ub_rangeD) done -lemma lub_finch2: +lemma lub_finch2: "finite_chain C \ range C <<| C (LEAST i. max_in_chain i C)" apply (unfold finite_chain_def) apply (erule conjE) diff -r d91391a8705b -r 2c8caac48ade src/HOLCF/Sprod.thy --- a/src/HOLCF/Sprod.thy Sun Oct 21 14:21:45 2007 +0200 +++ b/src/HOLCF/Sprod.thy Sun Oct 21 14:21:48 2007 +0200 @@ -48,10 +48,10 @@ translations "(:x, y, z:)" == "(:x, (:y, z:):)" - "(:x, y:)" == "spair\x\y" + "(:x, y:)" == "CONST spair\x\y" translations - "\(spair\x\y). t" == "ssplit\(\ x y. t)" + "\(CONST spair\x\y). t" == "CONST ssplit\(\ x y. t)" subsection {* Case analysis *} diff -r d91391a8705b -r 2c8caac48ade src/HOLCF/Ssum.thy --- a/src/HOLCF/Ssum.thy Sun Oct 21 14:21:45 2007 +0200 +++ b/src/HOLCF/Ssum.thy Sun Oct 21 14:21:48 2007 +0200 @@ -27,12 +27,13 @@ subsection {* Definitions of constructors *} -constdefs - sinl :: "'a \ ('a ++ 'b)" - "sinl \ \ a. Abs_Ssum >" +definition + sinl :: "'a \ ('a ++ 'b)" where + "sinl = (\ a. Abs_Ssum >)" - sinr :: "'b \ ('a ++ 'b)" - "sinr \ \ b. Abs_Ssum <\, b>" +definition + sinr :: "'b \ ('a ++ 'b)" where + "sinr = (\ b. Abs_Ssum <\, b>)" subsection {* Properties of @{term sinl} and @{term sinr} *} @@ -169,11 +170,11 @@ subsection {* Definitions of constants *} -constdefs - Iwhen :: "['a \ 'c, 'b \ 'c, 'a ++ 'b] \ 'c" - "Iwhen \ \f g s. +definition + Iwhen :: "['a \ 'c, 'b \ 'c, 'a ++ 'b] \ 'c" where + "Iwhen = (\f g s. if cfst\(Rep_Ssum s) \ \ then f\(cfst\(Rep_Ssum s)) else - if csnd\(Rep_Ssum s) \ \ then g\(csnd\(Rep_Ssum s)) else \" + if csnd\(Rep_Ssum s) \ \ then g\(csnd\(Rep_Ssum s)) else \)" text {* rewrites for @{term Iwhen} *} @@ -213,16 +214,16 @@ subsection {* Continuous versions of constants *} -constdefs - sscase :: "('a \ 'c) \ ('b \ 'c) \ ('a ++ 'b) \ 'c" - "sscase \ \ f g s. Iwhen f g s" +definition + sscase :: "('a \ 'c) \ ('b \ 'c) \ ('a ++ 'b) \ 'c" where + "sscase = (\ f g s. Iwhen f g s)" translations - "case s of sinl\x \ t1 | sinr\y \ t2" == "sscase\(\ x. t1)\(\ y. t2)\s" + "case s of CONST sinl\x \ t1 | CONST sinr\y \ t2" == "CONST sscase\(\ x. t1)\(\ y. t2)\s" translations - "\(sinl\x). t" == "sscase\(\ x. t)\\" - "\(sinr\y). t" == "sscase\\\(\ y. t)" + "\(CONST sinl\x). t" == "CONST sscase\(\ x. t)\\" + "\(CONST sinr\y). t" == "CONST sscase\\\(\ y. t)" text {* continuous versions of lemmas for @{term sscase} *} diff -r d91391a8705b -r 2c8caac48ade src/HOLCF/Tr.thy --- a/src/HOLCF/Tr.thy Sun Oct 21 14:21:45 2007 +0200 +++ b/src/HOLCF/Tr.thy Sun Oct 21 14:21:48 2007 +0200 @@ -28,17 +28,19 @@ neg :: "tr \ tr" If2 :: "[tr, 'c, 'c] \ 'c" -syntax - "@cifte" :: "[tr, 'c, 'c] \ 'c" ("(3If _/ (then _/ else _) fi)" 60) - "@andalso" :: "tr \ tr \ tr" ("_ andalso _" [36,35] 35) - "@orelse" :: "tr \ tr \ tr" ("_ orelse _" [31,30] 30) +abbreviation + cifte_syn :: "[tr, 'c, 'c] \ 'c" ("(3If _/ (then _/ else _) fi)" 60) where + "If b then e1 else e2 fi == trifte\e1\e2\b" + +abbreviation + andalso_syn :: "tr \ tr \ tr" ("_ andalso _" [36,35] 35) where + "x andalso y == trand\x\y" + +abbreviation + orelse_syn :: "tr \ tr \ tr" ("_ orelse _" [31,30] 30) where + "x orelse y == tror\x\y" translations - "x andalso y" == "trand\x\y" - "x orelse y" == "tror\x\y" - "If b then e1 else e2 fi" == "trifte\e1\e2\b" - -translations "\ TT. t" == "trifte\t\\" "\ FF. t" == "trifte\\\t" diff -r d91391a8705b -r 2c8caac48ade src/HOLCF/Up.thy --- a/src/HOLCF/Up.thy Sun Oct 21 14:21:45 2007 +0200 +++ b/src/HOLCF/Up.thy Sun Oct 21 14:21:48 2007 +0200 @@ -115,7 +115,7 @@ by (rule ext, rule up_lemma3 [symmetric]) lemma up_lemma6: - "\chain Y; Y j \ Ibottom\ + "\chain Y; Y j \ Ibottom\ \ range Y <<| Iup (\i. THE a. Iup a = Y(i + j))" apply (rule_tac j1 = j in is_lub_range_shift [THEN iffD1]) apply assumption @@ -197,16 +197,17 @@ subsection {* Continuous versions of constants *} -constdefs - up :: "'a \ 'a u" - "up \ \ x. Iup x" +definition + up :: "'a \ 'a u" where + "up = (\ x. Iup x)" - fup :: "('a \ 'b::pcpo) \ 'a u \ 'b" - "fup \ \ f p. Ifup f p" +definition + fup :: "('a \ 'b::pcpo) \ 'a u \ 'b" where + "fup = (\ f p. Ifup f p)" translations - "case l of up\x \ t" == "fup\(\ x. t)\l" - "\(up\x). t" == "fup\(\ x. t)" + "case l of CONST up\x \ t" == "CONST fup\(\ x. t)\l" + "\(CONST up\x). t" == "CONST fup\(\ x. t)" text {* continuous versions of lemmas for @{typ "('a)u"} *}