a few basic X-symbols
authorpaulson
Mon Mar 05 12:31:31 2001 +0100 (2001-03-05)
changeset 111925fd02b905a9a
parent 11191 a9d7b050b74a
child 11193 851c90b23a9e
a few basic X-symbols
src/HOL/Auth/Event.thy
src/HOL/Auth/Message.thy
     1.1 --- a/src/HOL/Auth/Event.thy	Fri Mar 02 13:26:55 2001 +0100
     1.2 +++ b/src/HOL/Auth/Event.thy	Mon Mar 05 12:31:31 2001 +0100
     1.3 @@ -37,8 +37,8 @@
     1.4  
     1.5  axioms
     1.6    (*Spy has access to his own key for spoof messages, but Server is secure*)
     1.7 -  Spy_in_bad     [iff] :     "Spy: bad"
     1.8 -  Server_not_bad [iff] : "Server ~: bad"
     1.9 +  Spy_in_bad     [iff] :    "Spy \<in> bad"
    1.10 +  Server_not_bad [iff] : "Server \<notin> bad"
    1.11  
    1.12  primrec
    1.13    knows_Nil:   "knows A [] = initState A"
    1.14 @@ -49,7 +49,7 @@
    1.15  	   Says A' B X => insert X (knows Spy evs)
    1.16  	 | Gets A' X => knows Spy evs
    1.17  	 | Notes A' X  => 
    1.18 -	     if A' : bad then insert X (knows Spy evs) else knows Spy evs)
    1.19 +	     if A' \<in> bad then insert X (knows Spy evs) else knows Spy evs)
    1.20  	else
    1.21  	(case ev of
    1.22  	   Says A' B X => 
    1.23 @@ -84,6 +84,6 @@
    1.24  method_setup analz_mono_contra = {*
    1.25      Method.no_args
    1.26        (Method.METHOD (fn facts => REPEAT_FIRST analz_mono_contra_tac)) *}
    1.27 -    "for proving theorems of the form X ~: analz (knows Spy evs) --> P"
    1.28 +    "for proving theorems of the form X \<notin> analz (knows Spy evs) --> P"
    1.29  
    1.30  end
     2.1 --- a/src/HOL/Auth/Message.thy	Fri Mar 02 13:26:55 2001 +0100
     2.2 +++ b/src/HOL/Auth/Message.thy	Mon Mar 05 12:31:31 2001 +0100
     2.3 @@ -11,7 +11,7 @@
     2.4  files ("Message_lemmas.ML"):
     2.5  
     2.6  (*Eliminates a commonly-occurring expression*)
     2.7 -lemma [simp] : "~ (ALL x. x~=y)"
     2.8 +lemma [simp] : "~ (\<forall> x. x\<noteq>y)"
     2.9  by blast
    2.10  
    2.11  (*Needed occasionally with spy_analz_tac, e.g. in analz_insert_Key_newK*)
    2.12 @@ -66,17 +66,17 @@
    2.13  
    2.14    (*Keys useful to decrypt elements of a message set*)
    2.15    keysFor :: "msg set => key set"
    2.16 -  "keysFor H == invKey ` {K. EX X. Crypt K X : H}"
    2.17 +  "keysFor H == invKey ` {K. \<exists>X. Crypt K X \<in> H}"
    2.18  
    2.19  (** Inductive definition of all "parts" of a message.  **)
    2.20  
    2.21  consts  parts   :: "msg set => msg set"
    2.22  inductive "parts H"
    2.23    intros 
    2.24 -    Inj [intro]          : "X: H  ==> X : parts H"
    2.25 -    Fst:     "{|X,Y|}   : parts H ==> X : parts H"
    2.26 -    Snd:     "{|X,Y|}   : parts H ==> Y : parts H"
    2.27 -    Body:    "Crypt K X : parts H ==> X : parts H"
    2.28 +    Inj [intro]:               "X \<in> H ==> X \<in> parts H"
    2.29 +    Fst:         "{|X,Y|}   \<in> parts H ==> X \<in> parts H"
    2.30 +    Snd:         "{|X,Y|}   \<in> parts H ==> Y \<in> parts H"
    2.31 +    Body:        "Crypt K X \<in> parts H ==> X \<in> parts H"
    2.32  
    2.33  
    2.34  (*Monotonicity*)
    2.35 @@ -94,11 +94,11 @@
    2.36  consts  analz   :: "msg set => msg set"
    2.37  inductive "analz H"
    2.38    intros 
    2.39 -    Inj [intro,simp] :    "X: H ==> X: analz H"
    2.40 -    Fst:     "{|X,Y|} : analz H ==> X : analz H"
    2.41 -    Snd:     "{|X,Y|} : analz H ==> Y : analz H"
    2.42 +    Inj [intro,simp] :    "X \<in> H ==> X \<in> analz H"
    2.43 +    Fst:     "{|X,Y|} \<in> analz H ==> X \<in> analz H"
    2.44 +    Snd:     "{|X,Y|} \<in> analz H ==> Y \<in> analz H"
    2.45      Decrypt [dest]: 
    2.46 -             "[|Crypt K X : analz H; Key(invKey K): analz H|] ==> X : analz H"
    2.47 +             "[|Crypt K X \<in> analz H; Key(invKey K): analz H|] ==> X \<in> analz H"
    2.48  
    2.49  
    2.50  (*Monotonicity; Lemma 1 of Lowe's paper*)
    2.51 @@ -116,12 +116,12 @@
    2.52  consts  synth   :: "msg set => msg set"
    2.53  inductive "synth H"
    2.54    intros 
    2.55 -    Inj    [intro]:   "X: H ==> X: synth H"
    2.56 -    Agent  [intro]:   "Agent agt : synth H"
    2.57 -    Number [intro]:   "Number n  : synth H"
    2.58 -    Hash   [intro]:   "X: synth H ==> Hash X : synth H"
    2.59 -    MPair  [intro]:   "[|X: synth H;  Y: synth H|] ==> {|X,Y|} : synth H"
    2.60 -    Crypt  [intro]:   "[|X: synth H;  Key(K) : H|] ==> Crypt K X : synth H"
    2.61 +    Inj    [intro]:   "X \<in> H ==> X \<in> synth H"
    2.62 +    Agent  [intro]:   "Agent agt \<in> synth H"
    2.63 +    Number [intro]:   "Number n  \<in> synth H"
    2.64 +    Hash   [intro]:   "X \<in> synth H ==> Hash X \<in> synth H"
    2.65 +    MPair  [intro]:   "[|X \<in> synth H;  Y \<in> synth H|] ==> {|X,Y|} \<in> synth H"
    2.66 +    Crypt  [intro]:   "[|X \<in> synth H;  Key(K) \<in> H|] ==> Crypt K X \<in> synth H"
    2.67  
    2.68  (*Monotonicity*)
    2.69  lemma synth_mono: "G<=H ==> synth(G) <= synth(H)"
    2.70 @@ -131,11 +131,11 @@
    2.71  done
    2.72  
    2.73  (*NO Agent_synth, as any Agent name can be synthesized.  Ditto for Number*)
    2.74 -inductive_cases Nonce_synth [elim!]: "Nonce n : synth H"
    2.75 -inductive_cases Key_synth   [elim!]: "Key K : synth H"
    2.76 -inductive_cases Hash_synth  [elim!]: "Hash X : synth H"
    2.77 -inductive_cases MPair_synth [elim!]: "{|X,Y|} : synth H"
    2.78 -inductive_cases Crypt_synth [elim!]: "Crypt K X : synth H"
    2.79 +inductive_cases Nonce_synth [elim!]: "Nonce n \<in> synth H"
    2.80 +inductive_cases Key_synth   [elim!]: "Key K \<in> synth H"
    2.81 +inductive_cases Hash_synth  [elim!]: "Hash X \<in> synth H"
    2.82 +inductive_cases MPair_synth [elim!]: "{|X,Y|} \<in> synth H"
    2.83 +inductive_cases Crypt_synth [elim!]: "Crypt K X \<in> synth H"
    2.84  
    2.85  use "Message_lemmas.ML"
    2.86