# HG changeset patch # User wenzelm # Date 1451493537 -3600 # Node ID d68b705719ce657f25f5d1188139e34b59867fbe # Parent 7ab2dc7ba8f8d5a76fa1468a87142187c2664531 clarified print modes; diff -r 7ab2dc7ba8f8 -r d68b705719ce src/ZF/ZF.thy --- a/src/ZF/ZF.thy Wed Dec 30 17:18:32 2015 +0100 +++ b/src/ZF/ZF.thy Wed Dec 30 17:38:57 2015 +0100 @@ -25,8 +25,8 @@ Bex :: "[i, i => o] => o" text \General Union and Intersection\ -axiomatization Union :: "i => i" -consts Inter :: "i => i" +axiomatization Union :: "i => i" ("\_" [90] 90) +consts Inter :: "i => i" ("\_" [90] 90) text \Variations on Replacement\ axiomatization PrimReplace :: "[i, [i, i] => o] => i" @@ -76,29 +76,28 @@ text \Infixes in order of decreasing precedence\ consts - Image :: "[i, i] => i" (infixl "``" 90) \\image\ vimage :: "[i, i] => i" (infixl "-``" 90) \\inverse image\ "apply" :: "[i, i] => i" (infixl "`" 90) \\function application\ - "Int" :: "[i, i] => i" (infixl "Int" 70) \\binary intersection\ - "Un" :: "[i, i] => i" (infixl "Un" 65) \\binary union\ + "Int" :: "[i, i] => i" (infixl "\" 70) \\binary intersection\ + "Un" :: "[i, i] => i" (infixl "\" 65) \\binary union\ Diff :: "[i, i] => i" (infixl "-" 65) \\set difference\ - Subset :: "[i, i] => o" (infixl "<=" 50) \\subset relation\ + Subset :: "[i, i] => o" (infixl "\" 50) \\subset relation\ axiomatization - mem :: "[i, i] => o" (infixl ":" 50) \\membership relation\ + mem :: "[i, i] => o" (infixl "\" 50) \\membership relation\ abbreviation - not_mem :: "[i, i] => o" (infixl "~:" 50) \\negated membership relation\ - where "x ~: y == ~ (x : y)" + not_mem :: "[i, i] => o" (infixl "\" 50) \\negated membership relation\ + where "x \ y \ \ (x \ y)" abbreviation - cart_prod :: "[i, i] => i" (infixr "*" 80) \\Cartesian product\ - where "A * B == Sigma(A, %_. B)" + cart_prod :: "[i, i] => i" (infixr "\" 80) \\Cartesian product\ + where "A \ B \ Sigma(A, \_. B)" abbreviation function_space :: "[i, i] => i" (infixr "->" 60) \\function space\ - where "A -> B == Pi(A, %_. B)" + where "A -> B \ Pi(A, \_. B)" nonterminal "is" and patterns @@ -108,68 +107,66 @@ "_Enum" :: "[i, is] => is" ("_,/ _") "_Finset" :: "is => i" ("{(_)}") - "_Tuple" :: "[i, is] => i" ("<(_,/ _)>") - "_Collect" :: "[pttrn, i, o] => i" ("(1{_: _ ./ _})") - "_Replace" :: "[pttrn, pttrn, i, o] => i" ("(1{_ ./ _: _, _})") - "_RepFun" :: "[i, pttrn, i] => i" ("(1{_ ./ _: _})" [51,0,51]) - "_INTER" :: "[pttrn, i, i] => i" ("(3INT _:_./ _)" 10) - "_UNION" :: "[pttrn, i, i] => i" ("(3UN _:_./ _)" 10) - "_PROD" :: "[pttrn, i, i] => i" ("(3PROD _:_./ _)" 10) - "_SUM" :: "[pttrn, i, i] => i" ("(3SUM _:_./ _)" 10) - "_lam" :: "[pttrn, i, i] => i" ("(3lam _:_./ _)" 10) - "_Ball" :: "[pttrn, i, o] => o" ("(3ALL _:_./ _)" 10) - "_Bex" :: "[pttrn, i, o] => o" ("(3EX _:_./ _)" 10) + "_Tuple" :: "[i, is] => i" ("\(_,/ _)\") + "_Collect" :: "[pttrn, i, o] => i" ("(1{_ \ _ ./ _})") + "_Replace" :: "[pttrn, pttrn, i, o] => i" ("(1{_ ./ _ \ _, _})") + "_RepFun" :: "[i, pttrn, i] => i" ("(1{_ ./ _ \ _})" [51,0,51]) + "_UNION" :: "[pttrn, i, i] => i" ("(3\_\_./ _)" 10) + "_INTER" :: "[pttrn, i, i] => i" ("(3\_\_./ _)" 10) + "_PROD" :: "[pttrn, i, i] => i" ("(3\ _\_./ _)" 10) + "_SUM" :: "[pttrn, i, i] => i" ("(3\ _\_./ _)" 10) + "_lam" :: "[pttrn, i, i] => i" ("(3\_\_./ _)" 10) + "_Ball" :: "[pttrn, i, o] => o" ("(3\_\_./ _)" 10) + "_Bex" :: "[pttrn, i, o] => o" ("(3\_\_./ _)" 10) (** Patterns -- extends pre-defined type "pttrn" used in abstractions **) - "_pattern" :: "patterns => pttrn" ("<_>") + "_pattern" :: "patterns => pttrn" ("\_\") "" :: "pttrn => patterns" ("_") "_patterns" :: "[pttrn, patterns] => patterns" ("_,/_") translations "{x, xs}" == "CONST cons(x, {xs})" "{x}" == "CONST cons(x, 0)" - "{x:A. P}" == "CONST Collect(A, %x. P)" - "{y. x:A, Q}" == "CONST Replace(A, %x y. Q)" - "{b. x:A}" == "CONST RepFun(A, %x. b)" - "INT x:A. B" == "CONST Inter({B. x:A})" - "UN x:A. B" == "CONST Union({B. x:A})" - "PROD x:A. B" == "CONST Pi(A, %x. B)" - "SUM x:A. B" == "CONST Sigma(A, %x. B)" - "lam x:A. f" == "CONST Lambda(A, %x. f)" - "ALL x:A. P" == "CONST Ball(A, %x. P)" - "EX x:A. P" == "CONST Bex(A, %x. P)" + "{x\A. P}" == "CONST Collect(A, \x. P)" + "{y. x\A, Q}" == "CONST Replace(A, \x y. Q)" + "{b. x\A}" == "CONST RepFun(A, \x. b)" + "\x\A. B" == "CONST Inter({B. x\A})" + "\x\A. B" == "CONST Union({B. x\A})" + "\ x\A. B" == "CONST Pi(A, \x. B)" + "\ x\A. B" == "CONST Sigma(A, \x. B)" + "\x\A. f" == "CONST Lambda(A, \x. f)" + "\x\A. P" == "CONST Ball(A, \x. P)" + "\x\A. P" == "CONST Bex(A, \x. P)" - "" == ">" - "" == "CONST Pair(x, y)" - "%.b" == "CONST split(%x .b)" - "%.b" == "CONST split(%x y. b)" + "\x, y, z\" == "\x, \y, z\\" + "\x, y\" == "CONST Pair(x, y)" + "\\x,y,zs\.b" == "CONST split(\x \y,zs\.b)" + "\\x,y\.b" == "CONST split(\x y. b)" -notation (xsymbols) - cart_prod (infixr "\" 80) and - Int (infixl "\" 70) and - Un (infixl "\" 65) and +notation (ASCII) + cart_prod (infixr "*" 80) and + Int (infixl "Int" 70) and + Un (infixl "Un" 65) and function_space (infixr "\" 60) and - Subset (infixl "\" 50) and - mem (infixl "\" 50) and - not_mem (infixl "\" 50) and - Union ("\_" [90] 90) and - Inter ("\_" [90] 90) + Subset (infixl "<=" 50) and + mem (infixl ":" 50) and + not_mem (infixl "~:" 50) -syntax (xsymbols) - "_Collect" :: "[pttrn, i, o] => i" ("(1{_ \ _ ./ _})") - "_Replace" :: "[pttrn, pttrn, i, o] => i" ("(1{_ ./ _ \ _, _})") - "_RepFun" :: "[i, pttrn, i] => i" ("(1{_ ./ _ \ _})" [51,0,51]) - "_UNION" :: "[pttrn, i, i] => i" ("(3\_\_./ _)" 10) - "_INTER" :: "[pttrn, i, i] => i" ("(3\_\_./ _)" 10) - "_PROD" :: "[pttrn, i, i] => i" ("(3\_\_./ _)" 10) - "_SUM" :: "[pttrn, i, i] => i" ("(3\_\_./ _)" 10) - "_lam" :: "[pttrn, i, i] => i" ("(3\_\_./ _)" 10) - "_Ball" :: "[pttrn, i, o] => o" ("(3\_\_./ _)" 10) - "_Bex" :: "[pttrn, i, o] => o" ("(3\_\_./ _)" 10) - "_Tuple" :: "[i, is] => i" ("\(_,/ _)\") - "_pattern" :: "patterns => pttrn" ("\_\") +syntax (ASCII) + "_Collect" :: "[pttrn, i, o] => i" ("(1{_: _ ./ _})") + "_Replace" :: "[pttrn, pttrn, i, o] => i" ("(1{_ ./ _: _, _})") + "_RepFun" :: "[i, pttrn, i] => i" ("(1{_ ./ _: _})" [51,0,51]) + "_UNION" :: "[pttrn, i, i] => i" ("(3UN _:_./ _)" 10) + "_INTER" :: "[pttrn, i, i] => i" ("(3INT _:_./ _)" 10) + "_PROD" :: "[pttrn, i, i] => i" ("(3PROD _:_./ _)" 10) + "_SUM" :: "[pttrn, i, i] => i" ("(3SUM _:_./ _)" 10) + "_lam" :: "[pttrn, i, i] => i" ("(3lam _:_./ _)" 10) + "_Ball" :: "[pttrn, i, o] => o" ("(3ALL _:_./ _)" 10) + "_Bex" :: "[pttrn, i, o] => o" ("(3EX _:_./ _)" 10) + "_Tuple" :: "[i, is] => i" ("<(_,/ _)>") + "_pattern" :: "patterns => pttrn" ("<_>") defs (* Bounded Quantifiers *) Ball_def: "Ball(A, P) == \x. x\A \ P(x)" @@ -629,4 +626,3 @@ by (best elim!: equalityCE del: ReplaceI RepFun_eqI) end -