amazing, I tried doing this recently but I guess my modeling was not good enough and it would take hours to find the solution with a couple of dozen variables. Do you have any pointers on how to much these types of problems with a SMT/SAT solver efficiently?
The documentation and API quirks of z3 also led me down some performance sinks before I was able to tackle the larger models. Not a Z3/SMT expert, but what worked for me was to model every time tick as the sum of all tasks that could be performed at that instant. Set a constraint on each tick that sets the sum of these tasks to be <= P. Add the book-keeping on the task-job relationships and that was it.
Using the Python bindings, the biggest performance impact I discovered was ensuring that my jobs and tasks were represented as z3.Bool and not z3.Int (requiring a roundabout way to do a summation on z3.Bools). Something like:
tasks_this_tick = [(z3.Bool(task_id), 1) for task_id in current_tasks]
model.add(z3.PbLe(tasks_this_tick, max_tasks_per_tick + 1)
Might be as simple as opening a website and reading some text. Technically also "downloading" - but why not use curl for any http-based reading of data.
I would just say "interacting with all kinds of backend services".
That can be everything from OTAs to weather services, vehicle assistance services, positioning things, etc. Every feature of a "connected car" might be powered by a HTTP-based backend. And if the application inside the car is written in C/C++, using libcurl is a reasonable thing for interacting with those.
I have noticed that the CD database in my car gets updated once in a while. A CD that it previously did not have track data for started being recognized at one point. It clearly doesn't fetch the data on demand based on observation, but it does get occasional updates.
https://groups.google.com/a/chromium.org/forum/#!msg/blink-d...