CHARON is a language for modular specification of interacting hybrid systems based on the notions of agent and mode. For hierarchical descriptions of the system architecture, CHARON provides the operations of instantiation, hiding, and parallel composition on agents, which can be used to build a complex agent from other agents. The discrete and continuous behaviors of an agent are described using modes. For hierarchical description of the behavior of an agent, CHARON supports the operations of instantiation and nesting of modes. Furthermore, features such as weak preemption, history retention, and externally defined Java functions, facilitate the description of complex discrete behavior. Continuous behavior can be specified using differential as well as algebraic constraints and invariants restricting the flow spaces, all of which can be declared at various levels of the hierarchy. The modular structure of the language is not merely syntactic, but also reflected in the semantics so that it can be exploited during analysis.
Variables in CHARON can be declared as type analog, and they flow continuously during the continuous updates that model passage of time. The evolution of analog variables can be constrained in three ways: differential constraints (e.g. by equations such as x' = f(x,u)), algebraic constraints (e.g. by equations such as y = g(x,u)), and invariants (e.g. x-y < c) which limit the allowed durations of flows. Such constraints can be declared at different levels of the mode hierarchy.