Le Corsaire
Le sous-système de navigation n'avait été écrit par personne à bord du navire. Il avait été écrit par un prestataire — une petite entreprise spécialisée dans l'optimisation de trajectoires à source fermée — et livré sous forme de binaire scellé, accompagné d'une preuve à divulgation nulle de connaissance attestant que le comportement du binaire satisfaisait une spécification formelle. La spécification était dans le dépôt. Le hachage du binaire était dans le dépôt. Le code source ne l'était pas.
C'était l'arrangement que la mission avait accepté parce que l'algorithme du prestataire était véritablement supérieur à tout ce que l'équipe interne aurait pu produire dans le temps imparti. C'était aussi un arrangement avec lequel plusieurs membres de l'équipage étaient mal à l'aise. Le sous-système de navigation n'était pas un système de survie, mais il n'était pas facultatif non plus. Un navire qui ne peut pas naviguer est un navire qui dérive.
La preuve était élégante. Elle démontrait, sans révéler le code source, que toute entrée dans le domaine de la spécification produisait une sortie dans le codomaine de la spécification, et que la sortie satisfaisait un ensemble de propriétés de correction — efficacité énergétique, évitement des collisions, précision temporelle — qui avaient été formellement vérifiées avant l'appareillage du navire. L'équipage ne pouvait pas lire le code. Il pouvait vérifier que le code faisait ce que la spécification disait qu'il ferait.
Rania, devenue la spécialiste de facto des méthodes formelles de l'équipage, lut la preuve trois fois. Elle n'y trouva aucune lacune. Elle l'ajouta au dépôt comme dérivation de la spécification, avec une entrée de journal de travail décrivant ce que la preuve garantissait et ne garantissait pas. La dernière ligne de son entrée se lisait ainsi : « La preuve nous dit que l'algorithme est correct pour le domaine spécifié. Elle ne nous dit pas si le domaine est complet. Surveillez les cas limites. »
Le sous-système de navigation fonctionna sans incident pendant quatre ans. La cinquième année, lors d'une correction de trajectoire qui se trouvait en dehors du domaine de la spécification originale — parce que personne n'avait prévu d'en avoir besoin — il produisit un résultat sous-optimal. L'équipage le corrigea manuellement, à l'aide d'un combinateur que Yusuf avait écrit à la Cale et qui s'avéra, finalement, suffisant. Rania nota dans le journal de travail : « Cas limite. Comme prévu. Géré. »