  Designers of autonomous agents, whether in physical or virtual environments,
need to express nondeterminisim, failure, and parallelism in behaviors, as well
as accounting for synchronous coordination between agents. Behavior Trees are a
semi-formalism deployed widely for this purpose in the games industry, but with
challenges to scalability, reasoning, and reuse of common sub-behaviors.
  We present an alternative formulation of behavior trees through a language
design perspective, giving a formal operational semantics, type system, and
corresponding implementation. We express specifications for atomic behaviors as
linear logic formulas describing how they transform the environment, and our
type system uses linear sequent calculus to derive a compositional type
assignment to behavior tree expressions. These types expose the conditions
required for behaviors to succeed and allow abstraction over parameters to
behaviors, enabling the development of behavior "building blocks" amenable to
compositional reasoning and reuse.
