  Formal Methods are mathematically-based techniques for software design and
engineering, which enable the unambiguous description of and reasoning about a
system's behaviour. Autonomous systems use software to make decisions without
human control, are often embedded in a robotic system, are often
safety-critical, and are increasingly being introduced into everyday settings.
Autonomous systems need robust development and verification methods, but formal
methods practitioners are often asked: Why use Formal Methods for Autonomous
Systems? To answer this question, this position paper describes five recipes
for formally verifying aspects of an autonomous system, collected from the
literature. The recipes are examples of how Formal Methods can be an effective
tool for the development and verification of autonomous systems. During design,
they enable unambiguous description of requirements; in development, formal
specifications can be verified against requirements; software components may be
synthesised from verified specifications; and behaviour can be monitored at
runtime and compared to its original specification. Modern Formal Methods often
include highly automated tool support, which enables exhaustive checking of a
system's state space. This paper argues that Formal Methods are a powerful tool
for the repertoire of development techniques for safe autonomous systems,
alongside other robust software engineering techniques.
