T(S) = I U { s | exists s' in S: s' --> s } = [expand I] { <1,i,0,0> | i in N_0 } U { s | exists s' in S: s' --> s } = [expand -->] { <1,i,0,0> | i in N_0 } U { | in S /\ P_pc = inc x } (... and for y and z) U { | in S /\ P_pc = dec x /\ xv>0 } (... and for y and z) U { | in S /\ P_pc = zero x pc' else pc'' /\ xv=0 } { | in S /\ P_pc = zero x pc' else pc'' /\ xv<>0 } (... and for y and z) = [write as join] { <1,i,0,0> | i in N_0 } U U { } in S P_pc = inc x (... and for y and z) U U { } in S P_pc = dec x xv>0 (... and for y and z) U U { } in S P_pc = zero x pc' else pc'' xv=0 U U { } in S P_pc = zero x pc' else pc'' xv<>0 (... and for y and z) ---------------------------------------------------------------------- alpha(S) = \pc.{ | in S } gamma(F) = { | in F(pc) } ---------------------------------------------------------------------- alpha o T(S) = [expand T] -------------------------------------------------- alpha( { <1,i,0,0> | i in N_0 } U U { } in S P_pc = inc x (... and for y and z) U U { } in S P_pc = dec x xv>0 (... and for y and z) U U { } in S P_pc = zero x pc' else pc'' xv=0 U U { } in S P_pc = zero x pc' else pc'' xv<>0 (... and for y and z) ) = [alpha is CJM] -------------------------------------------------- alpha( { <1,i,0,0> | i in N_0 } ) U. alpha( U { } in S P_pc = inc x (... and for y and z) ) U. alpha( U { } in S P_pc = dec x xv>0 (... and for y and z) ) U. alpha( U { } in S P_pc = zero x pc' else pc'' xv=0 ) U. alpha( U { } in S P_pc = zero x pc' else pc'' xv<>0 (... and for y and z) ) = [alpha is CJM] -------------------------------------------------- alpha( { <1,i,0,0> | i in N_0 } ) U. U. alpha( { } ) in S P_pc = inc x (... and for y and z) U. U. alpha( { } ) in S P_pc = dec x xv>0 (... and for y and z) U. U. alpha( { } ) in S P_pc = zero x pc' else pc'' xv=0 U. U. alpha( { } ) in S P_pc = zero x pc' else pc'' xv<>0 (... and for y and z) = [alpha def] -------------------------------------------------- alpha( { <1,i,0,0> | i in N_0 } ) U. U. Ø. [ pc+1 -> { } ] in S P_pc = inc x (... and for y and z) U. U. Ø. [ pc+1 -> { } ] in S P_pc = dec x xv>0 (... and for y and z) U. U. Ø. [ pc' -> { } ] in S P_pc = zero x pc' else pc'' xv=0 U. U. Ø. [ pc'' -> { } ] in S P_pc = zero x pc' else pc'' xv<>0 (... and for y and z) = [Galois insertion] -------------------------------------------------- alpha( { <1,i,0,0> | i in N_0 } ) U. U. Ø. [ pc+1 -> { } ] in gamma o alpha(S) P_pc = inc x (... and for y and z) U. U. Ø. [ pc+1 -> { } ] in gamma o alpha(S) P_pc = dec x xv>0 (... and for y and z) U. U. Ø. [ pc' -> { } ] in gamma o alpha(S) P_pc = zero x pc' else pc'' xv=0 U. U. Ø. [ pc'' -> { } ] in gamma o alpha(S) P_pc = zero x pc' else pc'' xv<>0 (... and for y and z) = [write as inclusion] -------------------------------------------------- alpha( { <1,i,0,0> | i in N_0 } ) U. U. Ø. [ pc+1 -> { } ] {} C gamma o alpha(S) P_pc = inc x (... and for y and z) U. U. Ø. [ pc+1 -> { } ] {} C gamma o alpha(S) P_pc = dec x xv>0 (... and for y and z) U. U. Ø. [ pc' -> { } ] {} C gamma o alpha(S) P_pc = zero x pc' else pc'' xv=0 U. U. Ø. [ pc'' -> { } ] {} C gamma o alpha(S) P_pc = zero x pc' else pc'' xv<>0 (... and for y and z) = [write as inclusion] -------------------------------------------------- alpha( { <1,i,0,0> | i in N_0 } ) U. U. Ø. [ pc+1 -> { } ] alpha({}) C. alpha(S) P_pc = inc x (... and for y and z) U. U. Ø. [ pc+1 -> { } ] alpha({}) C. alpha(S) P_pc = dec x xv>0 (... and for y and z) U. U. Ø. [ pc' -> { } ] alpha({}) C. alpha(S) P_pc = zero x pc' else pc'' xv=0 U. U. Ø. [ pc'' -> { } ] alpha({}) C. alpha(S) P_pc = zero x pc' else pc'' xv<>0 (... and for y and z) = [def alpha] -------------------------------------------------- Ø. [ 1 -> { | i in N_0 } ] U. U. Ø. [ pc+1 -> { } ] Ø. [ pc -> {}] C. alpha(S) P_pc = inc x (... and for y and z) U. U. Ø. [ pc+1 -> { } ] Ø. [ pc -> {}] C. alpha(S) P_pc = dec x xv>0 (... and for y and z) U. U. Ø. [ pc' -> { } ] Ø. [ pc -> {}] C. alpha(S) P_pc = zero x pc' else pc'' xv=0 U. U. Ø. [ pc'' -> { } ] Ø. [ pc -> {}] C. alpha(S) P_pc = zero x pc' else pc'' xv<>0 (... and for y and z) = [def C.] -------------------------------------------------- Ø. [ 1 -> { | i in N_0 } ] U. U. Ø. [ pc+1 -> { } ] {} C alpha(S)(pc) P_pc = inc x (... and for y and z) U. U. Ø. [ pc+1 -> { } ] {} C alpha(S)(pc) P_pc = dec x xv>0 (... and for y and z) U. U. Ø. [ pc' -> { } ] {} C alpha(S)(pc) P_pc = zero x pc' else pc'' xv=0 U. U. Ø. [ pc'' -> { } ] {} C alpha(S)(pc) P_pc = zero x pc' else pc'' xv<>0 (... and for y and z) ---------------------------------------------------------------------- Hurrah! Now we can read off T# T#(S#) = Ø. [ 1 -> { | i in N_0 } ] U. U. Ø. [ pc+1 -> { } ] {} C S#(pc) P_pc = inc x (... and for y and z) U. U. Ø. [ pc+1 -> { } ] {} C S#(pc) P_pc = dec x xv>0 (... and for y and z) U. U. Ø. [ pc' -> { } ] {} C S#(pc) P_pc = zero x pc' else pc'' xv=0 U. U. Ø. [ pc'' -> { } ] {} C S#(pc) P_pc = zero x pc' else pc'' xv<>0 (... and for y and z)