https://1library.org/document/q2e8jx6q-component-assembly-theorem-proving-constraint-handling-rules.html