src/HOL/TLA/Inc/Inc.thy
changeset 24180 9f818139951b
parent 21624 6f79647cf536
child 26342 0f65fa163304
equal deleted inserted replaced
24179:c89d77d97f84 24180:9f818139951b
   162   by (auto elim!: Stable squareE simp: Psi_defs)
   162   by (auto elim!: Stable squareE simp: Psi_defs)
   163 
   163 
   164 lemma N1_enabled_at_g: "|- pc1 = #g --> Enabled (<N1>_(x,y,sem,pc1,pc2))"
   164 lemma N1_enabled_at_g: "|- pc1 = #g --> Enabled (<N1>_(x,y,sem,pc1,pc2))"
   165   apply clarsimp
   165   apply clarsimp
   166   apply (rule_tac F = gamma1 in enabled_mono)
   166   apply (rule_tac F = gamma1 in enabled_mono)
   167    apply (tactic {* enabled_tac (thm "Inc_base") 1 *})
   167    apply (tactic {* enabled_tac @{clasimpset} @{thm Inc_base} 1 *})
   168   apply (force simp: gamma1_def)
   168   apply (force simp: gamma1_def)
   169   apply (force simp: angle_def gamma1_def N1_def)
   169   apply (force simp: angle_def gamma1_def N1_def)
   170   done
   170   done
   171 
   171 
   172 lemma g1_leadsto_a1:
   172 lemma g1_leadsto_a1:
   184 
   184 
   185 (* symmetrical for N2, and similar for beta2 *)
   185 (* symmetrical for N2, and similar for beta2 *)
   186 lemma N2_enabled_at_g: "|- pc2 = #g --> Enabled (<N2>_(x,y,sem,pc1,pc2))"
   186 lemma N2_enabled_at_g: "|- pc2 = #g --> Enabled (<N2>_(x,y,sem,pc1,pc2))"
   187   apply clarsimp
   187   apply clarsimp
   188   apply (rule_tac F = gamma2 in enabled_mono)
   188   apply (rule_tac F = gamma2 in enabled_mono)
   189   apply (tactic {* enabled_tac (thm "Inc_base") 1 *})
   189   apply (tactic {* enabled_tac @{clasimpset} @{thm Inc_base} 1 *})
   190    apply (force simp: gamma2_def)
   190    apply (force simp: gamma2_def)
   191   apply (force simp: angle_def gamma2_def N2_def)
   191   apply (force simp: angle_def gamma2_def N2_def)
   192   done
   192   done
   193 
   193 
   194 lemma g2_leadsto_a2:
   194 lemma g2_leadsto_a2:
   203   done
   203   done
   204 
   204 
   205 lemma N2_enabled_at_b: "|- pc2 = #b --> Enabled (<N2>_(x,y,sem,pc1,pc2))"
   205 lemma N2_enabled_at_b: "|- pc2 = #b --> Enabled (<N2>_(x,y,sem,pc1,pc2))"
   206   apply clarsimp
   206   apply clarsimp
   207   apply (rule_tac F = beta2 in enabled_mono)
   207   apply (rule_tac F = beta2 in enabled_mono)
   208    apply (tactic {* enabled_tac (thm "Inc_base") 1 *})
   208    apply (tactic {* enabled_tac @{clasimpset} @{thm Inc_base} 1 *})
   209    apply (force simp: beta2_def)
   209    apply (force simp: beta2_def)
   210   apply (force simp: angle_def beta2_def N2_def)
   210   apply (force simp: angle_def beta2_def N2_def)
   211   done
   211   done
   212 
   212 
   213 lemma b2_leadsto_g2:
   213 lemma b2_leadsto_g2:
   245 
   245 
   246 lemma N1_enabled_at_both_a:
   246 lemma N1_enabled_at_both_a:
   247   "|- pc2 = #a & (PsiInv & pc1 = #a) --> Enabled (<N1>_(x,y,sem,pc1,pc2))"
   247   "|- pc2 = #a & (PsiInv & pc1 = #a) --> Enabled (<N1>_(x,y,sem,pc1,pc2))"
   248   apply clarsimp
   248   apply clarsimp
   249   apply (rule_tac F = alpha1 in enabled_mono)
   249   apply (rule_tac F = alpha1 in enabled_mono)
   250   apply (tactic {* enabled_tac (thm "Inc_base") 1 *})
   250   apply (tactic {* enabled_tac @{clasimpset} @{thm Inc_base} 1 *})
   251    apply (force simp: alpha1_def PsiInv_defs)
   251    apply (force simp: alpha1_def PsiInv_defs)
   252   apply (force simp: angle_def alpha1_def N1_def)
   252   apply (force simp: angle_def alpha1_def N1_def)
   253   done
   253   done
   254 
   254 
   255 lemma a1_leadsto_b1:
   255 lemma a1_leadsto_b1:
   286   done
   286   done
   287 
   287 
   288 lemma N1_enabled_at_b: "|- pc1 = #b --> Enabled (<N1>_(x,y,sem,pc1,pc2))"
   288 lemma N1_enabled_at_b: "|- pc1 = #b --> Enabled (<N1>_(x,y,sem,pc1,pc2))"
   289   apply clarsimp
   289   apply clarsimp
   290   apply (rule_tac F = beta1 in enabled_mono)
   290   apply (rule_tac F = beta1 in enabled_mono)
   291    apply (tactic {* enabled_tac (thm "Inc_base") 1 *})
   291    apply (tactic {* enabled_tac @{clasimpset} @{thm Inc_base} 1 *})
   292    apply (force simp: beta1_def)
   292    apply (force simp: beta1_def)
   293   apply (force simp: angle_def beta1_def N1_def)
   293   apply (force simp: angle_def beta1_def N1_def)
   294   done
   294   done
   295 
   295 
   296 (* Now assemble the bits and pieces to prove that Psi is fair. *)
   296 (* Now assemble the bits and pieces to prove that Psi is fair. *)