Handling of multiple constraints and motion alternatives in a robot programming by demonstration framework | Synapse