Introduction to Constraint Programming using Google OR-Tools with Kotlin, presenting a brief introduction to complexity, motivational description of the linear programming required by casual inference about imperfect experiments and some coding examples of OR-Tools with Kotlin. Final examples of the application of these techniques to formal verification of software using Z3 and TLA+ with Picat.