Target type std.standard.bit in variable assignment is different from std_logic_1164.std_ulogic?
The type 'bit' is rarely used.  Let's call this academic code :-) Change your 'bit' signals and variables to the type 'std_logic' should/could fix your problem. (I did not test it with your code)

BTW: try to avoid using the library 'std_logic_arith'.  Try to use the more modern library 'numeric_std'.  You will find more information about this on this website.