======
Quiz
======

------------------------
Quiz - Frame Condition
------------------------

Which statement is correct?

   A. :answer:`The frame condition is easily overlooked.`
   B. The frame condition is generated by :toolname:`GNATprove`.
   C. Delta aggregates are only used in frame conditions.
   D. Attribute :ada:`Old` is illegal after :ada:`and then` or :ada:`or else`.

.. container:: animate

   Explanations

   A. Correct
   B. Only part of the frame condition is generated.
   C. No, but they are particularly useful in frame conditions.
   D. Use pragma :ada:`Unevaluated_Use_Of_Old (Allow)`.

--------------------
Quiz - Unsoundness
--------------------

Which statement is correct?

   A. All functions terminate by definition in SPARK.
   B. An inconsistent axiom may be caused only by a non-terminating function.
   C. The only protection against unsoundness is reviews.
   D. :answer:`A proved terminating subprogram cannot lead to unsoundness.`

.. container:: animate

   Explanations

   A. No, recursion and infinite loops may cause non-termination.
   B. The contract may be unfeasible if the function is not proved.
   C. :toolname:`GNATprove` has multiple defenses against inconsistent axioms.
   D. Correct

