Un compagnon Lean pour "Analyse I" : Quand les mathématiques rigoureuses rencontrent la vérification formelle

A Lean companion to “Analysis I”

Un compagnon Lean pour "Analyse I" : Quand les mathématiques rigoureuses rencontrent la vérification formelle

Il y a près de 20 ans, j'ai publié un manuel d'analyse réelle intitulé "Analyse I". Ce livre se distinguait en abordant les fondements des mathématiques, comme la construction des nombres naturels, entiers, rationnels et réels, tout en intégrant des éléments de théorie des ensembles et de logique. Aujourd'hui, je lance un projet complémentaire utilisant Lean, un assistant de preuve, pour formaliser les concepts du manuel.

À l'époque de la rédaction, les assistants de preuve comme Coq ou Agda existaient déjà, mais la vérification formelle n'était pas dans mon champ de vision. Mon expérience récente avec Lean m'a fait réaliser que le contenu de "Analyse I" s'y prête parfaitement. La "théorie des types naïve" implicite dans le livre correspond bien à la théorie des types dépendants de Lean.

Ce compagnon Lean propose une traduction des définitions, théorèmes et exercices du manuel en code Lean. Les exercices peuvent ainsi être résolus en complétant les "sorries" (espaces à remplir) dans le code. Je n'ai pas prévu de fournir de solutions officielles, mais les utilisateurs peuvent créer des forks du dépôt pour partager leurs réponses.

Actuellement, plusieurs sections ont été traduites : les nombres naturels, l'addition, la multiplication, la théorie des ensembles de base et les entiers. La formalisation alterne entre des développements indépendants et l'utilisation de la bibliothèque standard Mathlib de Lean.

Par exemple, pour les nombres naturels, j'ai d'abord construit manuellement une version alternative (Chapter2.Nat), avec des résultats de base établis comme exercices. Ensuite, une section épilogue établit des isomorphismes avec les nombres naturels de Mathlib, après quoi cette version alternative est abandonnée.

Cette approche progressive permet de s'appuyer de plus en plus sur Mathlib dans les chapitres avancés. Ainsi, ce projet sert à la fois d'introduction à l'analyse réelle et à Lean/Mathlib, dans l'esprit du "Natural number game" qui recoupe largement le chapitre 2 de mon manuel.

Le code du dépôt compile dans Lean, mais je n'ai pas vérifié si tous les "sorries" peuvent être résolus. J'invite des volontaires à tester le compagnon et à fournir des retours sur la faisabilité des exercices et l'adéquation des lemmes d'aide fournis.

[Mise à jour du 31 mai : le compagnon a été déplacé vers un dépôt indépendant.]

"Phân tích I" phiên bản Lean: Khi toán học cơ bản gặp công nghệ kiểm chứng hình thức

Cách đây gần 20 năm, tôi đã xuất bản giáo trình phân tích thực "Phân tích I" với trọng tâm vào các vấn đề nền tảng như xây dựng hệ thống số tự nhiên, số nguyên, số hữu tỉ và số thực. Giờ đây, tôi ra mắt phiên bản bổ trợ sử dụng Lean - một công cụ kiểm chứng hình thức để mã hóa nội dung sách.

Thời điểm viết sách, các công cụ như Coq hay Agda đã tồn tại nhưng kiểm chứng hình thức chưa phải mối quan tâm của tôi. Kinh nghiệm gần đây với Lean giúp tôi nhận ra nội dung sách rất phù hợp với phương pháp này, đặc biệt là cách tiếp cận "lý thuyết kiểu ngây ngô" tương đồng với lý thuyết kiểu phụ thuộc của Lean.

Phiên bản Lean này chuyển dịch các định nghĩa, định lý và bài tập trong sách thành mã Lean. Người học có thể làm bài tập bằng cách điền vào các khoảng trống "sorries" trong code. Tôi không cung cấp lời giải chính thức nhưng khuyến khích tạo các bản fork để chia sẻ đáp án.

Hiện tại, các phần sau đã được dịch: số tự nhiên, phép cộng, phép nhân, lý thuyết tập hợp cơ bản và số nguyên. Quá trình chuyển đổi kết hợp giữa phát triển độc lập và sử dụng thư viện chuẩn Mathlib của Lean.

Ví dụ với số tự nhiên, tôi xây dựng thủ công phiên bản Chapter2.Nat song song với Mathlib, đặt nhiều kết quả cơ bản dưới dạng bài tập. Phần kết chương thiết lập đẳng cấu giữa hai phiên bản, sau đó chuyển sang dùng Mathlib hoàn toàn.

Cách tiếp cận này giúp người học dần làm quen với Mathlib khi tiến vào chương sau. Dự án vừa là tài liệu học phân tích thực, vừa giới thiệu Lean/Mathlib, tương tự tinh thần trò chơi "Natural number game" có nhiều điểm chung với chương 2 sách.

Code trong kho lưu trữ đã biên dịch được bằng Lean, nhưng tôi chưa kiểm tra khả năng giải tất cả bài tập. Tôi mong nhận được phản hồi từ người dùng về tính khả thi của các bài tập và chất lượng "API" hỗ trợ.

[Cập nhật 31/5: Dự án đã chuyển sang kho lưu trữ riêng.]