diff -r c48050d6928d -r 1894bfc4aee9 src/HOL/UNITY/Traces.thy --- a/src/HOL/UNITY/Traces.thy Wed Dec 02 16:14:09 1998 +0100 +++ b/src/HOL/UNITY/Traces.thy Thu Dec 03 10:45:06 1998 +0100 @@ -25,17 +25,32 @@ typedef (Program) - 'a program = "{(init:: 'a set, acts :: ('a * 'a)set set). Id:acts}" + 'a program = "{(states :: 'a set, + init :: 'a set, + acts :: ('a * 'a)set set). + init <= states & + acts <= Pow(states Times states) & + diag states : acts}" constdefs - mk_program :: "('a set * ('a * 'a)set set) => 'a program" - "mk_program == %(init, acts). Abs_Program (init, insert Id acts)" + restrict_rel :: "['a set, ('a * 'a) set] => ('a * 'a) set" + "restrict_rel A r == (A Times A) Int r" - Init :: "'a program => 'a set" - "Init F == fst (Rep_Program F)" + mk_program :: "('a set * 'a set * ('a * 'a)set set) => 'a program" + "mk_program == + %(states, init, acts). + Abs_Program (states, + states Int init, + restrict_rel states `` (insert Id acts))" - Acts :: "'a program => ('a * 'a)set set" - "Acts F == snd (Rep_Program F)" + States :: "'a program => 'a set" + "States F == (%(states, init, acts). states) (Rep_Program F)" + + Init :: "'a program => 'a set" + "Init F == (%(states, init, acts). init) (Rep_Program F)" + + Acts :: "'a program => ('a * 'a)set set" + "Acts F == (%(states, init, acts). acts) (Rep_Program F)" consts reachable :: "'a program => 'a set"