# Finding smallest canonical cover from given set of functional dependencies

I did not find any book discussing this but I came across the problem. The given set of FD was:

$F=\{B\rightarrow A,D\rightarrow AC,B\rightarrow C,AB\rightarrow D,BC\rightarrow D\}$

$F_{min}=\{B\rightarrow D,D\rightarrow A,D\rightarrow C\}$

$B\rightarrow D$ wasnt present directly in the given FD set. So I realised I must be finding attribute closures first:

1. $A^+=A$

2. $B^+=BACD$

3. $C^+=C$

4. $D^+=ACD$

The non trivial ones are:

$B^+=ACD$

$D^+=AC$

Its easy from these that the smallest FD set would be $F_{min}=\{B\rightarrow D,D\rightarrow A,D\rightarrow C\}$. However the final non trivial attribute closure set was small and had easy pattern to deduce the smallest canonical cover. I was just guessing what if final non trivial attribute closure was more involved and did not contained any easy pattern, how would I have deduced the smallest canonical cover. Can anyone see any simple set of concrete steps for this?