src/HOL/Bali/DefiniteAssignment.thy
changeset 23747 b07cff284683
parent 23350 50c5b0912a0c
child 24019 67bde7cfcf10
equal deleted inserted replaced
23746:a455e69c31cc 23747:b07cff284683
   531 The environment @{term E} is only needed for the conditional @{text "_ ? _ : _"}.
   531 The environment @{term E} is only needed for the conditional @{text "_ ? _ : _"}.
   532 The definite assignment rules refer to the typing rules here to
   532 The definite assignment rules refer to the typing rules here to
   533 distinguish boolean and other expressions.
   533 distinguish boolean and other expressions.
   534 *}
   534 *}
   535 
   535 
   536 inductive2
   536 inductive
   537   da :: "env \<Rightarrow> lname set \<Rightarrow> term \<Rightarrow> assigned \<Rightarrow> bool" ("_\<turnstile> _ \<guillemotright>_\<guillemotright> _" [65,65,65,65] 71)
   537   da :: "env \<Rightarrow> lname set \<Rightarrow> term \<Rightarrow> assigned \<Rightarrow> bool" ("_\<turnstile> _ \<guillemotright>_\<guillemotright> _" [65,65,65,65] 71)
   538 where
   538 where
   539   Skip: "Env\<turnstile> B \<guillemotright>\<langle>Skip\<rangle>\<guillemotright> \<lparr>nrm=B,brk=\<lambda> l. UNIV\<rparr>"
   539   Skip: "Env\<turnstile> B \<guillemotright>\<langle>Skip\<rangle>\<guillemotright> \<lparr>nrm=B,brk=\<lambda> l. UNIV\<rparr>"
   540 
   540 
   541 | Expr: "Env\<turnstile> B \<guillemotright>\<langle>e\<rangle>\<guillemotright> A 
   541 | Expr: "Env\<turnstile> B \<guillemotright>\<langle>e\<rangle>\<guillemotright> A 
   821 declare assigns_if.simps [simp del]
   821 declare assigns_if.simps [simp del]
   822 declare split_paired_All [simp del] split_paired_Ex [simp del]
   822 declare split_paired_All [simp del] split_paired_Ex [simp del]
   823 ML_setup {*
   823 ML_setup {*
   824 change_simpset (fn ss => ss delloop "split_all_tac");
   824 change_simpset (fn ss => ss delloop "split_all_tac");
   825 *}
   825 *}
   826 inductive_cases2 da_elim_cases [cases set]:
   826 inductive_cases da_elim_cases [cases set]:
   827   "Env\<turnstile> B \<guillemotright>\<langle>Skip\<rangle>\<guillemotright> A" 
   827   "Env\<turnstile> B \<guillemotright>\<langle>Skip\<rangle>\<guillemotright> A" 
   828   "Env\<turnstile> B \<guillemotright>In1r Skip\<guillemotright> A" 
   828   "Env\<turnstile> B \<guillemotright>In1r Skip\<guillemotright> A" 
   829   "Env\<turnstile> B \<guillemotright>\<langle>Expr e\<rangle>\<guillemotright> A"
   829   "Env\<turnstile> B \<guillemotright>\<langle>Expr e\<rangle>\<guillemotright> A"
   830   "Env\<turnstile> B \<guillemotright>In1r (Expr e)\<guillemotright> A"
   830   "Env\<turnstile> B \<guillemotright>In1r (Expr e)\<guillemotright> A"
   831   "Env\<turnstile> B \<guillemotright>\<langle>l\<bullet> c\<rangle>\<guillemotright> A"
   831   "Env\<turnstile> B \<guillemotright>\<langle>l\<bullet> c\<rangle>\<guillemotright> A"