1. No. 00 is a prefix of 001, so it is not a prefix-free code. 2. The greedy algorithm will see (b) and assign b = True, see (b -> c) and assign c = True, and then stop. Thus, one assignment is (a,b,c,d) = (F,T,T,F). We can see that this is the only valid assignment, because (NOT a or NOT c) means that a = False, and thus we can also infer that d = False (since d -> a).