## Section: Scientific Foundations

### Proof assistants

The first operation that a proof assistant can perform on a proof is
to check its correctness. This participates in the quest
for a new step in mathematical rigor: the point where nothing is
understated, and where the reader can therefore be replaced by a
program. This quest for rigor is specially important for the large
proofs, either hand written or computer aided, that mathematicians
have built since the middle of the 20^{th} century.
For instance, without using a proof assistant, it is
quite difficult to establish the correctness of a proof using
symbolic computations on polynomials formed with hundreds of
monomials, or a case analysis requiring the inspection of several
hundreds of cases, or establishing that a complex object such as a
long program or a complex digital circuit has some property. This
quest for correctness is especially important in application domains
where a malfunction may jeopardize human life, health or environment,
such as transportations or computer aided surgery.

Besides this correctness check, proof assistants can help the users to build proofs interactively. The “tactic language” allowing the user to control the system in this proof construction process has always been the object of intensive studies. The ML language, for instance, was originally the tactic language of the LCF proof assistant. More recent questions about this language are focused on the formal expression of its operational semantic, in particular the handling of exceptions.

Proof assistants may also prove some easy but big size lemmas automatically. The automatisation of proof assistants can be increased by the development of decision procedures. Either they can be developed inside the proof assistant or we can use external tools producing certificates later used inside the proof assistant to reconstruct the proof.

Proof assistants may also transform mathematical proofs into other formal objects such as programs.

A more recent kind of applications is the construction of large libraries of mathematical results on the net.