diff -r 0c18df79b1c8 -r a642599ffdea src/ZF/UNITY/Union.thy --- a/src/ZF/UNITY/Union.thy Tue Sep 27 17:03:23 2022 +0100 +++ b/src/ZF/UNITY/Union.thy Tue Sep 27 17:46:52 2022 +0100 @@ -15,34 +15,34 @@ definition (*FIXME: conjoin Init(F) \ Init(G) \ 0 *) - ok :: "[i, i] => o" (infixl \ok\ 65) where + ok :: "[i, i] \ o" (infixl \ok\ 65) where "F ok G \ Acts(F) \ AllowedActs(G) \ Acts(G) \ AllowedActs(F)" definition (*FIXME: conjoin (\i \ I. Init(F(i))) \ 0 *) - OK :: "[i, i=>i] => o" where + OK :: "[i, i\i] \ o" where "OK(I,F) \ (\i \ I. \j \ I-{i}. Acts(F(i)) \ AllowedActs(F(j)))" definition - JOIN :: "[i, i=>i] => i" where + JOIN :: "[i, i\i] \ i" where "JOIN(I,F) \ if I = 0 then SKIP else mk_program(\i \ I. Init(F(i)), \i \ I. Acts(F(i)), \i \ I. AllowedActs(F(i)))" definition - Join :: "[i, i] => i" (infixl \\\ 65) where + Join :: "[i, i] \ i" (infixl \\\ 65) where "F \ G \ mk_program (Init(F) \ Init(G), Acts(F) \ Acts(G), AllowedActs(F) \ AllowedActs(G))" definition (*Characterizes safety properties. Used with specifying AllowedActs*) - safety_prop :: "i => o" where + safety_prop :: "i \ o" where "safety_prop(X) \ X\program \ SKIP \ X \ (\G \ program. Acts(G) \ (\F \ X. Acts(F)) \ G \ X)" syntax - "_JOIN1" :: "[pttrns, i] => i" (\(3\_./ _)\ 10) - "_JOIN" :: "[pttrn, i, i] => i" (\(3\_ \ _./ _)\ 10) + "_JOIN1" :: "[pttrns, i] \ i" (\(3\_./ _)\ 10) + "_JOIN" :: "[pttrn, i, i] \ i" (\(3\_ \ _./ _)\ 10) translations "\x \ A. B" == "CONST JOIN(A, (\x. B))" @@ -141,10 +141,10 @@ subsection\Eliminating programify form JOIN and OK expressions\ -lemma OK_programify [iff]: "OK(I, %x. programify(F(x))) \ OK(I, F)" +lemma OK_programify [iff]: "OK(I, \x. programify(F(x))) \ OK(I, F)" by (simp add: OK_def) -lemma JOIN_programify [iff]: "JOIN(I, %x. programify(F(x))) = JOIN(I, F)" +lemma JOIN_programify [iff]: "JOIN(I, \x. programify(F(x))) = JOIN(I, F)" by (simp add: JOIN_def) @@ -422,7 +422,7 @@ lemmas ok_sym = ok_commute [THEN iffD1] -lemma ok_iff_OK: "OK({<0,F>,<1,G>,<2,H>}, snd) \ (F ok G \ (F \ G) ok H)" +lemma ok_iff_OK: "OK({\0,F\,\1,G\,\2,H\}, snd) \ (F ok G \ (F \ G) ok H)" by (simp add: ok_def Join_def OK_def Int_assoc cons_absorb Int_Un_distrib2 Ball_def, safe, force+)