Assignment Propagation 2
Assigning an atom “donor” causes all of its bonds to be assigned single bonds.
Any unassigned atom that has all of its bonds assigned single, must be assigned a donor.
Any unassigned atom with an assigned double bond must be assigned an acceptor.
A hybridized or acceptor atom with an assigned double bond assigns all the remaining unassigned bonds single.
A hybridized or acceptor atom with a single unassigned bond assigns it double if it doesn’t already have one.
An invalid atom type causes the search to backtrack.