diff -r 8007e4ff493a -r ea3b1b0413b4 src/HOL/Predicate.thy --- a/src/HOL/Predicate.thy Fri Jan 01 11:27:29 2016 +0100 +++ b/src/HOL/Predicate.thy Fri Jan 01 14:44:52 2016 +0100 @@ -120,35 +120,35 @@ "eval (single x) = (op =) x" by (simp add: single_def) -definition bind :: "'a pred \ ('a \ 'b pred) \ 'b pred" (infixl "\=" 70) where - "P \= f = (SUPREMUM {x. eval P x} f)" +definition bind :: "'a pred \ ('a \ 'b pred) \ 'b pred" (infixl "\" 70) where + "P \ f = (SUPREMUM {x. eval P x} f)" lemma eval_bind [simp]: - "eval (P \= f) = eval (SUPREMUM {x. eval P x} f)" + "eval (P \ f) = eval (SUPREMUM {x. eval P x} f)" by (simp add: bind_def) lemma bind_bind: - "(P \= Q) \= R = P \= (\x. Q x \= R)" + "(P \ Q) \ R = P \ (\x. Q x \ R)" by (rule pred_eqI) auto lemma bind_single: - "P \= single = P" + "P \ single = P" by (rule pred_eqI) auto lemma single_bind: - "single x \= P = P x" + "single x \ P = P x" by (rule pred_eqI) auto lemma bottom_bind: - "\ \= P = \" + "\ \ P = \" by (rule pred_eqI) auto lemma sup_bind: - "(P \ Q) \= R = P \= R \ Q \= R" + "(P \ Q) \ R = P \ R \ Q \ R" by (rule pred_eqI) auto lemma Sup_bind: - "(\A \= f) = \((\x. x \= f) ` A)" + "(\A \ f) = \((\x. x \ f) ` A)" by (rule pred_eqI) auto lemma pred_iffI: @@ -169,10 +169,10 @@ lemma singleE': "eval (single x) y \ (x = y \ P) \ P" by simp -lemma bindI: "eval P x \ eval (Q x) y \ eval (P \= Q) y" +lemma bindI: "eval P x \ eval (Q x) y \ eval (P \ Q) y" by auto -lemma bindE: "eval (R \= Q) y \ (\x. eval R x \ eval (Q x) y \ P) \ P" +lemma bindE: "eval (R \ Q) y \ (\x. eval R x \ eval (Q x) y \ P) \ P" by auto lemma botE: "eval \ x \ P" @@ -401,7 +401,7 @@ by (rule unit_pred_cases) (auto elim: botE intro: singleI) definition map :: "('a \ 'b) \ 'a pred \ 'b pred" where - "map f P = P \= (single o f)" + "map f P = P \ (single o f)" lemma eval_map [simp]: "eval (map f P) = (\x\{x. eval P x}. (\y. f x = y))" @@ -455,11 +455,11 @@ primrec "apply" :: "('a \ 'b pred) \ 'a seq \ 'b seq" where "apply f Empty = Empty" -| "apply f (Insert x P) = Join (f x) (Join (P \= f) Empty)" -| "apply f (Join P xq) = Join (P \= f) (apply f xq)" +| "apply f (Insert x P) = Join (f x) (Join (P \ f) Empty)" +| "apply f (Join P xq) = Join (P \ f) (apply f xq)" lemma apply_bind: - "pred_of_seq (apply f xq) = pred_of_seq xq \= f" + "pred_of_seq (apply f xq) = pred_of_seq xq \ f" proof (induct xq) case Empty show ?case by (simp add: bottom_bind) @@ -472,7 +472,7 @@ qed lemma bind_code [code]: - "Seq g \= f = Seq (\u. apply f (g ()))" + "Seq g \ f = Seq (\u. apply f (g ()))" unfolding Seq_def by (rule sym, rule apply_bind) lemma bot_set_code [code]: @@ -727,7 +727,7 @@ by (simp add: pred_of_set_set_fold_sup ac_simps foldr_fold fun_eq_iff) no_notation - bind (infixl "\=" 70) + bind (infixl "\" 70) hide_type (open) pred seq hide_const (open) Pred eval single bind is_empty singleton if_pred not_pred holds