Examples

Each example is one complete run: a model, an abstraction, a synthesized controller, and an animated simulation of the closed loop. They are ordered by what they add, so reading them in order introduces one new idea at a time.

Start with Getting started, which walks the same five steps in detail on a pendulum.

What each example covers

The System column classifies the plant — that is usually what you are scanning for. Switched means the mode is chosen by the control input; hybrid means it changes when the state enters a guard.

ExampleSystemSpecificationFront-end features
Getting started2-D continuous, nonlinearreach-and-stay, start, EventuallyAlways,
Path planning3-D continuous, nonlinearreach-avoid over several coordinates, @expression
Unicycle robot3-D discrete-time, nonlinearreach-avoidΔ, custom growthbound_map
DC-DC converter2-D continuous, switched by the inputsafetyAlways, dynamics as a Julia function, time_domain, two solvers on one problem, the same plant re-encoded as a hybrid automaton with no continuous input
Adaptive cruise control2-D continuous, nonlinearsafety, then reach-and-stayAlways over an HPolytope, EventuallyAlways over a union of sets, a hand-written jacobian_bound, a certificate checked against a closed form
Thermostat1-D hybrid, 2 modes with guardsreach@mode, add_transition!, guards, per-mode bounds
Integrator2-D continuous, linearco-safe LTLLabel, @specification — both a Spot formula and a hand-written monitor, Start over a region
Velocity-controlled biped4-D continuous, linear, with a carved domainreach-avoid over a non-box region, bounded_input_variation (a slew-rate limit)

Not covered yet

The front-end does more than the pages above show. The gaps are listed rather than hidden: each row is a page worth writing, and the feature itself works today.

Missing exampleSpecificationFront-end features
a timed hybrid systemreach within a time windowclocks, reset maps, timed specifications
a deadlinereach within a horizonthe horizon attribute

Beyond the front-end

The Solver families examples drive one optimizer each through MathOptInterface directly. They exist both to document those algorithms and to reach the ones the JuMP front-end cannot express — piecewise-affine systems, ellipsoidal cells, SDP-based local controllers.

To add an example, see Adding an example.