【Lean 4 学习】用Lean 4证明自然数的平方差公式

news/2024/10/21 14:54:26/

引言

  • 最近开始学习Lean 4来做数学证明,虽然挺有挑战,但是对于我这个30多岁的大叔来说有种刚学编程时候探索的乐趣hhh
  • 自然数平方差公式这个问题,是我刚学了平方和公式,想变变给自己练手用的,结果卡了我好久,因为要的是自然数,而非整数,所以需要加上大小约束关系,而加上关系之后怎么使用rw规则就晕了
  • 最后各种尝试终于搞定小小记录一下
  • ps 由于一些语法规则还搞的不是很清楚,现在先记录一下通过编译验证的,一些重要细节的补充,等我学习更深入了再回来补充~

Lean_4_code_6">Lean 4 code

theorem square_diff_nat (a b: ℕ) (h: b ≤ a) : a ^ 2 - b ^ 2 = (a + b) * (a - b) := bycalca ^ 2 - b ^ 2= a * a - b * b := by repeat rw [Nat.pow_two]_ = a * a - b * b + 0 := by rw [add_zero (a * a - b * b)]_ = a * a - b * b + (a * b - a * b) := by rw [←Nat.sub_self (a * b)]have h1: a * b ≤ a * b := by rflhave h2: b * b ≤ a * a := Nat.mul_self_le_mul_self hcalc_ = a * a + (a * b - a * b) - b * b  := by rw[←Nat.sub_add_comm h2]_ = a * a + a * b - a * b - b * b := by rw [← Nat.add_sub_assoc h1]_ = a * (a + b) - (b * (a + b)) := by rw[←Nat.mul_add, Nat.sub_sub, ← Nat.add_mul, Nat.mul_comm (a + b) b]_ = (a + b) * (a - b) := by rw [← Nat.sub_mul, Nat.mul_comm]

http://www.ppmy.cn/news/1540822.html

相关文章

入侵及防护:7个迹象说明你的手机可能被入侵!

在现代社会中,手机已成为我们生活中不可或缺的一部分。然而,随着智能手机的普及,手机安全问题也日益严重。手机被入侵的风险不仅影响个人隐私,还可能导致财产损失。本文将为你介绍7个迹象,帮助你判断手机是否可能被入侵…

electron-vite_10electron-updater软件更新

网很多electron-updater更新文章,这里只简单写一下演示代码; 为什么选择 electron-updater插件可以自动更新应用程序,同时支持多个平台;比官方要强; 官方的autoUpdater仅支持macOS 和 Windows 自动更新; 注意是自动,直接更新那种; 脚手架中是…

LoadBalancer 类型的 Service工作期间,kube-proxy做了什么?

kube-proxy 是 Kubernetes 集群中一个重要的组件,负责实现服务的网络代理和负载均衡功能。当创建一个 LoadBalancer 类型的 Service 时,kube-proxy 在整个过程中扮演了关键角色。以下是 kube-proxy 在 LoadBalancer 类型 Service 创建和使用过程中所做的…

CentOS 8配置阿里云yum源

最近正好搞一套3.x体系的大数据技术集群,用CentOS8的系统,发现默认自带的所有yum源貌似无法使用,这里记录一下配置阿里的yum源。后面研究了一下,CentOS 8现在24年,最好是慎用,因为往后的系统升级就没有完全…

【算法】---栈与队列基础

前置准备 数据结构篇:学习过栈与队列这两种基本数据结构 前面会迅速回顾栈与队列的使用 本篇以Java为主, 其它语言可自行对应内置的栈与队列容器。 栈 栈是一种后进先出的容器。 如下图, 栈只有一个开口。 栈顶:栈的开口处&a…

二层交换机的工作原理与局域网设备通信详解

二层交换机(Layer 2 Switch)在计算机网络中是用于连接同一个局域网(LAN)内的设备,它的核心作用是根据MAC 地址来转发数据包,使得同一局域网中的不同设备能够相互通信。其主要功能是通过创建独立的冲突域来优…

5. Node.js Http模块

2.4 Http模块 2.4.1创建Http服务端 //1.导入http模块 let httprequire(http)//2.创建服务对象 let serverhttp.createServer((request,response)>{console.log(request.method) //获取请求方式console.log(request.url) //获取请求url(路径和参数部份)co…

基于SpringBoot的课程辅助教学系统

作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏:…