# HG changeset patch # User wenzelm # Date 1474204602 -7200 # Node ID cc15bd7c5396b31b170a9e670f37e183a0ad5a0e # Parent ca41b6670904e62b90f5d196069db8d7cbfe74c6 clarified notation; diff -r ca41b6670904 -r cc15bd7c5396 NEWS --- a/NEWS Sun Sep 18 11:31:19 2016 +0200 +++ b/NEWS Sun Sep 18 15:16:42 2016 +0200 @@ -231,6 +231,14 @@ *** HOL *** +* The unique existence quantifier no longer provides 'binder' syntax, +but uses syntax translations (as for bounded unique existence). Thus +iterated quantification \!x y. P x y with its slightly confusing +sequential meaning \!x. \!y. P x y is no longer possible. Instead, +pattern abstraction admits simultaneous unique existence \!(x, y). P x y +(analogous existing notation \!(x, y)\A. P x y). Potential +INCOMPATIBILITY in rare situations. + * Renamed session HOL-Multivariate_Analysis to HOL-Analysis. * Moved measure theory from HOL-Probability to HOL-Analysis. When importing diff -r ca41b6670904 -r cc15bd7c5396 src/HOL/HOL.thy --- a/src/HOL/HOL.thy Sun Sep 18 11:31:19 2016 +0200 +++ b/src/HOL/HOL.thy Sun Sep 18 15:16:42 2016 +0200 @@ -99,12 +99,24 @@ definition disj :: "[bool, bool] \ bool" (infixr "\" 30) where or_def: "P \ Q \ \R. (P \ R) \ (Q \ R) \ R" -definition Ex1 :: "('a \ bool) \ bool" (binder "\!" 10) +definition Ex1 :: "('a \ bool) \ bool" where "Ex1 P \ \x. P x \ (\y. P y \ y = x)" subsubsection \Additional concrete syntax\ +syntax (ASCII) + "_Ex1" :: "pttrn \ bool \ bool" ("(3EX! _./ _)" [0, 10] 10) +syntax (input) + "_Ex1" :: "pttrn \ bool \ bool" ("(3?! _./ _)" [0, 10] 10) +syntax "_Ex1" :: "pttrn \ bool \ bool" ("(3\!_./ _)" [0, 10] 10) +translations "\!x. P" \ "CONST Ex1 (\x. P)" + +print_translation \ + [Syntax_Trans.preserve_binder_abs_tr' @{const_syntax Ex1} @{syntax_const "_Ex1"}] +\ \ \to avoid eta-contraction of body\ + + abbreviation Not_Ex :: "('a \ bool) \ bool" (binder "\" 10) where "\x. P x \ \ (\x. P x)" @@ -158,13 +170,11 @@ notation (ASCII) All (binder "ALL " 10) and - Ex (binder "EX " 10) and - Ex1 (binder "EX! " 10) + Ex (binder "EX " 10) notation (input) All (binder "! " 10) and - Ex (binder "? " 10) and - Ex1 (binder "?! " 10) + Ex (binder "? " 10) subsubsection \Axioms and basic definitions\