https://kivy.pythonprogramminghelp.com/3-no-nonsense-discrete-mathematics/