You have applied the Shannon decomposition in an incorrect way. Look the following are the correct rules:
for computing DNF
phi = a&phi[a<-true] | !a&phi[a<-false]
for computing CNF
phi = (a->phi[a<-true]) & (!a->phi[a<-false])
= (!a | phi[a<-true]) & (a | phi[a<-false])
However, you mixed the two rules up and did the following which is not correct:
phi = (a | phi[a<-true]) & (!a | phi[a<-false])