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])