src/HOL/UNITY/Simple/Token.thy
changeset 46911 6d2a2f0e904e
parent 37936 1e4c5015a72e
child 46912 e0cd5c4df8e6
equal deleted inserted replaced
46910:3e068ef04b42 46911:6d2a2f0e904e
    54 lemma HasToK_partition: "[| s \<in> HasTok i; s \<in> HasTok j |] ==> i=j"
    54 lemma HasToK_partition: "[| s \<in> HasTok i; s \<in> HasTok j |] ==> i=j"
    55 by (unfold HasTok_def, auto)
    55 by (unfold HasTok_def, auto)
    56 
    56 
    57 lemma not_E_eq: "(s \<notin> E i) = (s \<in> H i | s \<in> T i)"
    57 lemma not_E_eq: "(s \<notin> E i) = (s \<in> H i | s \<in> T i)"
    58 apply (simp add: H_def E_def T_def)
    58 apply (simp add: H_def E_def T_def)
    59 apply (case_tac "proc s i", auto)
    59 apply (cases "proc s i", auto)
    60 done
    60 done
    61 
    61 
    62 lemma (in Token) token_stable: "F \<in> stable (-(E i) \<union> (HasTok i))"
    62 lemma (in Token) token_stable: "F \<in> stable (-(E i) \<union> (HasTok i))"
    63 apply (unfold stable_def)
    63 apply (unfold stable_def)
    64 apply (rule constrains_weaken)
    64 apply (rule constrains_weaken)
    81 apply (auto simp add: mod_Suc mod_geq)
    81 apply (auto simp add: mod_Suc mod_geq)
    82 apply (auto split add: nat_diff_split simp add: linorder_neq_iff mod_geq)
    82 apply (auto split add: nat_diff_split simp add: linorder_neq_iff mod_geq)
    83 done
    83 done
    84 
    84 
    85 text{*From "A Logic for Concurrent Programming", but not used in Chapter 4.
    85 text{*From "A Logic for Concurrent Programming", but not used in Chapter 4.
    86   Note the use of @{text case_tac}.  Reasoning about leadsTo takes practice!*}
    86   Note the use of @{text cases}.  Reasoning about leadsTo takes practice!*}
    87 lemma (in Token) TR7_nodeOrder:
    87 lemma (in Token) TR7_nodeOrder:
    88      "[| i<N; j<N |] ==>    
    88      "[| i<N; j<N |] ==>    
    89       F \<in> (HasTok i) leadsTo ({s. (token s, i) \<in> nodeOrder j} \<union> HasTok j)"
    89       F \<in> (HasTok i) leadsTo ({s. (token s, i) \<in> nodeOrder j} \<union> HasTok j)"
    90 apply (case_tac "i=j")
    90 apply (cases "i=j")
    91 apply (blast intro: subset_imp_leadsTo)
    91 apply (blast intro: subset_imp_leadsTo)
    92 apply (rule TR7 [THEN leadsTo_weaken_R])
    92 apply (rule TR7 [THEN leadsTo_weaken_R])
    93 apply (auto simp add: HasTok_def nodeOrder_eq)
    93 apply (auto simp add: HasTok_def nodeOrder_eq)
    94 done
    94 done
    95 
    95