diff -r 4dc65845eab3 -r d8d7d1b785af src/HOL/MicroJava/DFA/LBVSpec.thy --- a/src/HOL/MicroJava/DFA/LBVSpec.thy Wed Feb 24 11:55:52 2010 +0100 +++ b/src/HOL/MicroJava/DFA/LBVSpec.thy Mon Mar 01 13:40:23 2010 +0100 @@ -12,46 +12,38 @@ types 's certificate = "'s list" -consts -merge :: "'s certificate \ 's binop \ 's ord \ 's \ nat \ (nat \ 's) list \ 's \ 's" -primrec -"merge cert f r T pc [] x = x" -"merge cert f r T pc (s#ss) x = merge cert f r T pc ss (let (pc',s') = s in +primrec merge :: "'s certificate \ 's binop \ 's ord \ 's \ nat \ (nat \ 's) list \ 's \ 's" where + "merge cert f r T pc [] x = x" +| "merge cert f r T pc (s#ss) x = merge cert f r T pc ss (let (pc',s') = s in if pc'=pc+1 then s' +_f x else if s' <=_r (cert!pc') then x else T)" -constdefs -wtl_inst :: "'s certificate \ 's binop \ 's ord \ 's \ - 's step_type \ nat \ 's \ 's" +definition wtl_inst :: "'s certificate \ 's binop \ 's ord \ 's \ + 's step_type \ nat \ 's \ 's" where "wtl_inst cert f r T step pc s \ merge cert f r T pc (step pc s) (cert!(pc+1))" -wtl_cert :: "'s certificate \ 's binop \ 's ord \ 's \ 's \ - 's step_type \ nat \ 's \ 's" +definition wtl_cert :: "'s certificate \ 's binop \ 's ord \ 's \ 's \ + 's step_type \ nat \ 's \ 's" where "wtl_cert cert f r T B step pc s \ if cert!pc = B then wtl_inst cert f r T step pc s else if s <=_r (cert!pc) then wtl_inst cert f r T step pc (cert!pc) else T" -consts -wtl_inst_list :: "'a list \ 's certificate \ 's binop \ 's ord \ 's \ 's \ - 's step_type \ nat \ 's \ 's" -primrec -"wtl_inst_list [] cert f r T B step pc s = s" -"wtl_inst_list (i#is) cert f r T B step pc s = +primrec wtl_inst_list :: "'a list \ 's certificate \ 's binop \ 's ord \ 's \ 's \ + 's step_type \ nat \ 's \ 's" where + "wtl_inst_list [] cert f r T B step pc s = s" +| "wtl_inst_list (i#is) cert f r T B step pc s = (let s' = wtl_cert cert f r T B step pc s in if s' = T \ s = T then T else wtl_inst_list is cert f r T B step (pc+1) s')" -constdefs - cert_ok :: "'s certificate \ nat \ 's \ 's \ 's set \ bool" +definition cert_ok :: "'s certificate \ nat \ 's \ 's \ 's set \ bool" where "cert_ok cert n T B A \ (\i < n. cert!i \ A \ cert!i \ T) \ (cert!n = B)" -constdefs - bottom :: "'a ord \ 'a \ bool" +definition bottom :: "'a ord \ 'a \ bool" where "bottom r B \ \x. B <=_r x" - locale lbv = Semilat + fixes T :: "'a" ("\") fixes B :: "'a" ("\")