diff -r 46f59511b7bb -r d97fdabd9e2b src/HOL/TLA/Intensional.thy --- a/src/HOL/TLA/Intensional.thy Fri Sep 20 19:07:10 2024 +0200 +++ b/src/HOL/TLA/Intensional.thy Fri Sep 20 19:51:08 2024 +0200 @@ -33,11 +33,11 @@ where unl_lift3: "lift3 f x y z w \ f (x w) (y w) (z w)" (* "Rigid" quantification (logic level) *) -definition RAll :: "('a \ ('w::world) form) \ 'w form" (binder "Rall " 10) +definition RAll :: "('a \ ('w::world) form) \ 'w form" (binder \Rall \ 10) where unl_Rall: "(Rall x. A x) w \ \x. A x w" -definition REx :: "('a \ ('w::world) form) \ 'w form" (binder "Rex " 10) +definition REx :: "('a \ ('w::world) form) \ 'w form" (binder \Rex \ 10) where unl_Rex: "(Rex x. A x) w \ \x. A x w" -definition REx1 :: "('a \ ('w::world) form) \ 'w form" (binder "Rex! " 10) +definition REx1 :: "('a \ ('w::world) form) \ 'w form" (binder \Rex! \ 10) where unl_Rex1: "(Rex! x. A x) w \ \!x. A x w" @@ -46,56 +46,56 @@ nonterminal lift and liftargs syntax - "" :: "id \ lift" ("_") - "" :: "longid \ lift" ("_") - "" :: "var \ lift" ("_") - "_applC" :: "[lift, cargs] \ lift" ("(1_/ _)" [1000, 1000] 999) - "" :: "lift \ lift" ("'(_')") - "_lambda" :: "[idts, 'a] \ lift" ("(3\_./ _)" [0, 3] 3) - "_constrain" :: "[lift, type] \ lift" ("(_::_)" [4, 0] 3) - "" :: "lift \ liftargs" ("_") - "_liftargs" :: "[lift, liftargs] \ liftargs" ("_,/ _") - "_Valid" :: "lift \ bool" ("(\ _)" 5) - "_holdsAt" :: "['a, lift] \ bool" ("(_ \ _)" [100,10] 10) + "" :: "id \ lift" (\_\) + "" :: "longid \ lift" (\_\) + "" :: "var \ lift" (\_\) + "_applC" :: "[lift, cargs] \ lift" (\(1_/ _)\ [1000, 1000] 999) + "" :: "lift \ lift" (\'(_')\) + "_lambda" :: "[idts, 'a] \ lift" (\(3\_./ _)\ [0, 3] 3) + "_constrain" :: "[lift, type] \ lift" (\(_::_)\ [4, 0] 3) + "" :: "lift \ liftargs" (\_\) + "_liftargs" :: "[lift, liftargs] \ liftargs" (\_,/ _\) + "_Valid" :: "lift \ bool" (\(\ _)\ 5) + "_holdsAt" :: "['a, lift] \ bool" (\(_ \ _)\ [100,10] 10) (* Syntax for lifted expressions outside the scope of \ or |= *) - "_LIFT" :: "lift \ 'a" ("LIFT _") + "_LIFT" :: "lift \ 'a" (\LIFT _\) (* generic syntax for lifted constants and functions *) - "_const" :: "'a \ lift" ("(#_)" [1000] 999) - "_lift" :: "['a, lift] \ lift" ("(_<_>)" [1000] 999) - "_lift2" :: "['a, lift, lift] \ lift" ("(_<_,/ _>)" [1000] 999) - "_lift3" :: "['a, lift, lift, lift] \ lift" ("(_<_,/ _,/ _>)" [1000] 999) + "_const" :: "'a \ lift" (\(#_)\ [1000] 999) + "_lift" :: "['a, lift] \ lift" (\(_<_>)\ [1000] 999) + "_lift2" :: "['a, lift, lift] \ lift" (\(_<_,/ _>)\ [1000] 999) + "_lift3" :: "['a, lift, lift, lift] \ lift" (\(_<_,/ _,/ _>)\ [1000] 999) (* concrete syntax for common infix functions: reuse same symbol *) - "_liftEqu" :: "[lift, lift] \ lift" ("(_ =/ _)" [50,51] 50) - "_liftNeq" :: "[lift, lift] \ lift" ("(_ \/ _)" [50,51] 50) - "_liftNot" :: "lift \ lift" ("(\ _)" [40] 40) - "_liftAnd" :: "[lift, lift] \ lift" ("(_ \/ _)" [36,35] 35) - "_liftOr" :: "[lift, lift] \ lift" ("(_ \/ _)" [31,30] 30) - "_liftImp" :: "[lift, lift] \ lift" ("(_ \/ _)" [26,25] 25) - "_liftIf" :: "[lift, lift, lift] \ lift" ("(if (_)/ then (_)/ else (_))" 10) - "_liftPlus" :: "[lift, lift] \ lift" ("(_ +/ _)" [66,65] 65) - "_liftMinus" :: "[lift, lift] \ lift" ("(_ -/ _)" [66,65] 65) - "_liftTimes" :: "[lift, lift] \ lift" ("(_ */ _)" [71,70] 70) - "_liftDiv" :: "[lift, lift] \ lift" ("(_ div _)" [71,70] 70) - "_liftMod" :: "[lift, lift] \ lift" ("(_ mod _)" [71,70] 70) - "_liftLess" :: "[lift, lift] \ lift" ("(_/ < _)" [50, 51] 50) - "_liftLeq" :: "[lift, lift] \ lift" ("(_/ \ _)" [50, 51] 50) - "_liftMem" :: "[lift, lift] \ lift" ("(_/ \ _)" [50, 51] 50) - "_liftNotMem" :: "[lift, lift] \ lift" ("(_/ \ _)" [50, 51] 50) - "_liftFinset" :: "liftargs \ lift" ("{(_)}") + "_liftEqu" :: "[lift, lift] \ lift" (\(_ =/ _)\ [50,51] 50) + "_liftNeq" :: "[lift, lift] \ lift" (\(_ \/ _)\ [50,51] 50) + "_liftNot" :: "lift \ lift" (\(\ _)\ [40] 40) + "_liftAnd" :: "[lift, lift] \ lift" (\(_ \/ _)\ [36,35] 35) + "_liftOr" :: "[lift, lift] \ lift" (\(_ \/ _)\ [31,30] 30) + "_liftImp" :: "[lift, lift] \ lift" (\(_ \/ _)\ [26,25] 25) + "_liftIf" :: "[lift, lift, lift] \ lift" (\(if (_)/ then (_)/ else (_))\ 10) + "_liftPlus" :: "[lift, lift] \ lift" (\(_ +/ _)\ [66,65] 65) + "_liftMinus" :: "[lift, lift] \ lift" (\(_ -/ _)\ [66,65] 65) + "_liftTimes" :: "[lift, lift] \ lift" (\(_ */ _)\ [71,70] 70) + "_liftDiv" :: "[lift, lift] \ lift" (\(_ div _)\ [71,70] 70) + "_liftMod" :: "[lift, lift] \ lift" (\(_ mod _)\ [71,70] 70) + "_liftLess" :: "[lift, lift] \ lift" (\(_/ < _)\ [50, 51] 50) + "_liftLeq" :: "[lift, lift] \ lift" (\(_/ \ _)\ [50, 51] 50) + "_liftMem" :: "[lift, lift] \ lift" (\(_/ \ _)\ [50, 51] 50) + "_liftNotMem" :: "[lift, lift] \ lift" (\(_/ \ _)\ [50, 51] 50) + "_liftFinset" :: "liftargs \ lift" (\{(_)}\) (** TODO: syntax for lifted collection / comprehension **) - "_liftPair" :: "[lift,liftargs] \ lift" ("(1'(_,/ _'))") + "_liftPair" :: "[lift,liftargs] \ lift" (\(1'(_,/ _'))\) (* infix syntax for list operations *) - "_liftCons" :: "[lift, lift] \ lift" ("(_ #/ _)" [65,66] 65) - "_liftApp" :: "[lift, lift] \ lift" ("(_ @/ _)" [65,66] 65) - "_liftList" :: "liftargs \ lift" ("[(_)]") + "_liftCons" :: "[lift, lift] \ lift" (\(_ #/ _)\ [65,66] 65) + "_liftApp" :: "[lift, lift] \ lift" (\(_ @/ _)\ [65,66] 65) + "_liftList" :: "liftargs \ lift" (\[(_)]\) (* Rigid quantification (syntax level) *) - "_RAll" :: "[idts, lift] \ lift" ("(3\_./ _)" [0, 10] 10) - "_REx" :: "[idts, lift] \ lift" ("(3\_./ _)" [0, 10] 10) - "_REx1" :: "[idts, lift] \ lift" ("(3\!_./ _)" [0, 10] 10) + "_RAll" :: "[idts, lift] \ lift" (\(3\_./ _)\ [0, 10] 10) + "_REx" :: "[idts, lift] \ lift" (\(3\_./ _)\ [0, 10] 10) + "_REx1" :: "[idts, lift] \ lift" (\(3\!_./ _)\ [0, 10] 10) translations "_const" == "CONST const"