diff -r f9f89b7cfdc7 -r 3f8ad7418e55 doc-src/TutorialI/Protocol/Message.thy --- a/doc-src/TutorialI/Protocol/Message.thy Wed Jul 11 10:52:20 2007 +0200 +++ b/doc-src/TutorialI/Protocol/Message.thy Wed Jul 11 10:53:39 2007 +0200 @@ -66,13 +66,14 @@ (** Inductive definition of all "parts" of a message. **) -consts parts :: "msg set => msg set" -inductive "parts H" - intros +inductive_set + parts :: "msg set => msg set" + 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" - Body: "Crypt K X \ parts H ==> X \ 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" (*Monotonicity*) @@ -87,13 +88,14 @@ messages, including keys. A form of downward closure. Pairs can be taken apart; messages decrypted with known keys. **) -consts analz :: "msg set => msg set" -inductive "analz H" - intros +inductive_set + analz :: "msg set => msg set" + for H :: "msg set" + where Inj [intro,simp] : "X \ H ==> X \ analz H" - Fst: "{|X,Y|} \ analz H ==> X \ analz H" - Snd: "{|X,Y|} \ analz H ==> Y \ analz H" - Decrypt [dest]: + | Fst: "{|X,Y|} \ analz H ==> X \ analz H" + | Snd: "{|X,Y|} \ analz H ==> Y \ analz H" + | Decrypt [dest]: "[|Crypt K X \ analz H; Key(invKey K) \ analz H|] ==> X \ analz H" @@ -109,15 +111,16 @@ encrypted with known keys. Agent names are public domain. Numbers can be guessed, but Nonces cannot be. **) -consts synth :: "msg set => msg set" -inductive "synth H" - intros +inductive_set + synth :: "msg set => msg set" + for H :: "msg set" + where Inj [intro]: "X \ H ==> X \ synth H" - Agent [intro]: "Agent agt \ synth H" - Number [intro]: "Number n \ synth H" - Hash [intro]: "X \ synth H ==> Hash X \ synth H" - MPair [intro]: "[|X \ synth H; Y \ synth H|] ==> {|X,Y|} \ synth H" - Crypt [intro]: "[|X \ synth H; Key(K) \ H|] ==> Crypt K X \ synth H" + | Agent [intro]: "Agent agt \ synth H" + | Number [intro]: "Number n \ synth H" + | Hash [intro]: "X \ synth H ==> Hash X \ synth H" + | MPair [intro]: "[|X \ synth H; Y \ synth H|] ==> {|X,Y|} \ synth H" + | Crypt [intro]: "[|X \ synth H; Key(K) \ H|] ==> Crypt K X \ synth H" (*Monotonicity*) lemma synth_mono: "G<=H ==> synth(G) <= synth(H)"