diff -r df64653779e1 -r 6d02bb8b5fe1 src/Doc/Tutorial/Protocol/Message.thy --- a/src/Doc/Tutorial/Protocol/Message.thy Wed Dec 30 20:11:19 2015 +0100 +++ b/src/Doc/Tutorial/Protocol/Message.thy Wed Dec 30 20:12:26 2015 +0100 @@ -79,16 +79,12 @@ *} (*<*) -text{*Concrete syntax: messages appear as {|A,B,NA|}, etc...*} +text{*Concrete syntax: messages appear as \\A,B,NA\\, etc...*} syntax - "_MTuple" :: "['a, args] => 'a * 'b" ("(2{|_,/ _|})") - -syntax (xsymbols) "_MTuple" :: "['a, args] => 'a * 'b" ("(2\_,/ _\)") - translations - "{|x, y, z|}" == "{|x, {|y, z|}|}" - "{|x, y|}" == "CONST MPair x y" + "\x, y, z\" == "\x, \y, z\\" + "\x, y\" == "CONST MPair x y" definition keysFor :: "msg set => key set" where @@ -103,8 +99,8 @@ for H :: "msg set" where Inj [intro]: "X \ H ==> X \ parts H" - | Fst: "{|X,Y|} \ parts H ==> X \ parts H" - | Snd: "{|X,Y|} \ parts H ==> Y \ parts H" + | Fst: "\X,Y\ \ parts H ==> X \ parts H" + | Snd: "\X,Y\ \ parts H ==> Y \ parts H" | Body: "Crypt K X \ parts H ==> X \ parts H" @@ -159,7 +155,7 @@ lemma keysFor_insert_Key [simp]: "keysFor (insert (Key K) H) = keysFor H" by (unfold keysFor_def, auto) -lemma keysFor_insert_MPair [simp]: "keysFor (insert {|X,Y|} H) = keysFor H" +lemma keysFor_insert_MPair [simp]: "keysFor (insert \X,Y\ H) = keysFor H" by (unfold keysFor_def, auto) lemma keysFor_insert_Crypt [simp]: @@ -176,7 +172,7 @@ subsection{*Inductive relation "parts"*} lemma MPair_parts: - "[| {|X,Y|} \ parts H; + "[| \X,Y\ \ parts H; [| X \ parts H; Y \ parts H |] ==> P |] ==> P" by (blast dest: parts.Fst parts.Snd) @@ -313,8 +309,8 @@ done lemma parts_insert_MPair [simp]: - "parts (insert {|X,Y|} H) = - insert {|X,Y|} (parts (insert X (insert Y H)))" + "parts (insert \X,Y\ H) = + insert \X,Y\ (parts (insert X (insert Y H)))" apply (rule equalityI) apply (rule subsetI) apply (erule parts.induct, auto) @@ -375,7 +371,7 @@ text{*Making it safe speeds up proofs*} lemma MPair_analz [elim!]: - "[| {|X,Y|} \ analz H; + "[| \X,Y\ \ analz H; [| X \ analz H; Y \ analz H |] ==> P |] ==> P" by (blast dest: analz.Fst analz.Snd) @@ -447,8 +443,8 @@ done lemma analz_insert_MPair [simp]: - "analz (insert {|X,Y|} H) = - insert {|X,Y|} (analz (insert X (insert Y H)))" + "analz (insert \X,Y\ H) = + insert \X,Y\ (analz (insert X (insert Y H)))" apply (rule equalityI) apply (rule subsetI) apply (erule analz.induct, auto) @@ -565,7 +561,7 @@ text{*If there are no pairs or encryptions then analz does nothing*} lemma analz_trivial: - "[| \X Y. {|X,Y|} \ H; \X K. Crypt K X \ H |] ==> analz H = H" + "[| \X Y. \X,Y\ \ H; \X K. Crypt K X \ H |] ==> analz H = H" apply safe apply (erule analz.induct, blast+) done @@ -606,7 +602,7 @@ by (auto, erule synth.induct, auto) inductive_cases Key_synth [elim!]: "Key K \ synth H" -inductive_cases MPair_synth [elim!]: "{|X,Y|} \ synth H" +inductive_cases MPair_synth [elim!]: "\X,Y\ \ synth H" inductive_cases Crypt_synth [elim!]: "Crypt K X \ synth H" lemma analz_synth_Un [simp]: "analz (synth G \ H) = analz (G \ H) \ synth G" @@ -769,7 +765,7 @@ text{*Without this equation, other rules for synth and analz would yield redundant cases*} lemma MPair_synth_analz [iff]: - "({|X,Y|} \ synth (analz H)) = + "(\X,Y\ \ synth (analz H)) = (X \ synth (analz H) & Y \ synth (analz H))" by blast