link bitint procedure main() every write(right(i := 0 to 10,4),":",right(int2bit(i),10)," -> ", right(g := gEncode(i),10)," -> ", right(b := gDecode(g),10)," -> ", right(bit2int(b),10)) end procedure gEncode(b) return int2bit(ixor(b, ishift(b,-1))) end procedure gDecode(g) b := g[1] every i := 2 to *g do b ||:= if g[i] == b[i-1] then "0" else "1" return b end