Lean 4.13.0 (2024-11-01)
完整变更日志:https://github.com/leanprover/lean4/compare/v4.12.0...v4.13.0
语言功能、策略和元程序
-
structure命令 -
rfl和apply_rfl策略 -
unfold策略-
#4834 让
unfold执行局部定义的 zeta-delta 缩减,合并 Mathlibunfold_let策略的功能。
-
-
omega策略 -
simp策略-
#5479 让
simp应用具有高阶模式的规则。
-
-
induction策略-
#5494 修复了
induction的“pre-策略”块始终缩进,避免意外使用它。
-
-
ac_nf策略-
#5524 添加了
ac_nf(ac_rfl的对应项),用于标准化有关结合性和交换性的表达式。使用BitVec表达式对其进行测试。
-
-
bv_decide-
#5211 使
extractLsb'成为bv_decide理解的原语,而不是extractLsb(@alexkeizer) -
#5365 添加
bv_decide诊断。 -
#5375 为
ofBool (a.getLsbD i)和ofBool a[i]添加bv_decide标准化规则 (@alexkeizer) -
#5423 增强了
bv_decide的重写规则 -
#5433 在 API 上呈现
bv_decide反例 -
#5484 使用
bv_decide中的Natfvar 处理BitVec.ofNat -
#5568 概括
bv_normalize管道以支持更通用的预处理过程 -
#5573 使用当前的
BitVec重写获取最新的bv_normalize
-
-
精化改进
-
派生处理程序
-
#5432 使
Repr派生实例处理显式类型参数
-
-
功能性诱导
-
#5364 在上下文中添加更多平等性,更仔细的清理。
-
-
短绒棉
-
其他修复
-
#4768 修复了当
..出现且下一行带有.时的解析错误
-
-
元编程
语言服务器、小部件和 IDE 扩展
漂亮的印刷
图书馆
-
#5222 减少
Json.compress中的分配。 -
#5231 上游
Zero和NeZero -
#5292 重构
Lean.Elab.Deriving.FromToJson(@arthur-adjedj) -
#5415 实现
Repr Empty(@TomasPuverle) -
#5421 实现
To/FromJSON Empty(@TomasPuverle) -
逻辑
-
Bool -
BitVec-
#5240 删除具有复杂 RHS 的 BitVec simps
-
#5247
BitVec.getElem_zeroExtend -
#5248 BitVec 的简化引理,改进融合
-
#5249 从一些 BitVec 引理中删除
@[simp] -
#5252 将
BitVec.intMin/Max从缩写更改为定义 -
#5278 添加
BitVec.getElem_truncate(@tobiasgrosser) -
#5281 为
bv_decide添加 udiv/umod 位爆破 (@bollu) -
#5297
BitVec无符号阶理论结果 -
#5313 为 UInt 添加更多基本 BitVec 排序理论
-
#5314 添加
toNat_sub_of_le(@bollu) -
#5357 添加
BitVec.truncate引理 -
#5358 引入
BitVec.setWidth来统一 ZeroExtend 和截断 (@tobiasgrosser) -
#5361 一些 BitVec GetElem 引理
-
#5385 添加
BitVec.ofBool_[and|or|xor]_ofBool定理 (@tobiasgrosser) -
#5404 更多
BitVec.getElem_*(@tobiasgrosser) -
#5410
Nat.{mul_two, two_mul, mul_succ, succ_mul}的 BitVec 类似物 (@bollu) -
#5411
BitVec.toNat_{add,sub,mul_of_lt}用于 BitVector 非溢出推理 (@bollu) -
#5413 为
BitVec.[and|or|xor]添加_self、_zero和_allOnes(@tobiasgrosser) -
#5416 为
BitVec.[and|or|xor]添加 LawCommIdentity + IdempotOp (@tobiasgrosser) -
#5418 BitVec 的可判定量词
-
#5450 添加
BitVec.toInt_[intMin|neg|neg_of_ne_intMin](@tobiasgrosser) -
#5459 缺少 BitVec 引理
-
#5469 添加
BitVec.[not_not, allOnes_shiftLeft_or_shiftLeft, allOnes_shiftLeft_and_shiftLeft](@luisacicolini) -
#5478 添加
BitVec.(shiftLeft_add_distrib, shiftLeft_ushiftRight)(@luisacicolini) -
#5487 添加
sdiv_eq、smod_eq以允许sdiv/smod位爆破 (@bollu) -
#5491 添加
BitVec.toNat_[abs|sdiv|smod](@tobiasgrosser) -
#5492
BitVec.(not_sshiftRight, not_sshiftRight_not, getMsb_not, msb_not)(@luisacicolini) -
#5499
BitVec.Lemmas- 删除非终端 simps (@tobiasgrosser) -
#5505 取消
BitVec.divRec_succ' -
#5508 添加
BitVec.getElem_[add|add_add_bool|mul|rotateLeft|rotateRight…(@tobiasgrosser) -
#5554 添加
Bitvec.[add, sub, mul]_eq_xor和width_one_cases(@luisacicolini)
-
-
List-
#5242 改进
List.mergeSort引理的命名 -
#5302 提供
mergeSort比较器 autoParam -
#5373 修复
List.length_mergeSort的名称 -
#5377 上游
map_mergeSort -
#5378 修改有关
mergeSort的引理签名 -
#5245 避免在没有 List.Impl 的情况下导入
List.Basic -
#5260 列表 API 的审核
-
#5264 列表 API 的审核
-
#5269 删除 HashMap 的重复 Pairwise 和 Sublist
-
#5271 从
List.head_mem和类似内容中删除 @[simp] -
#5273 关于
List.attach的引理 -
#5275
List.tail_map的反方向 -
#5277 更多
List.attach引理 -
#5285
List.count引理 -
#5287 在
List.filter中使用布尔谓词 -
#5289
List.mem_ite_nil_left和类似物 -
#5293
List.findIdx/List.take引理的清理 -
#5294 在
List.getElem_take上切换素数 -
#5300更多
List.findIdx定理 -
#5310 修复
List.all/any引理 -
#5311 修复
List.countP引理 -
#5316
List.tail引理 -
#5331 修复
List.getElem_mem的隐式性 -
#5350
List.replicate引理 -
#5352
List.attachWith引理 -
#5353
List.head_mem_head? -
#5360 关于
List.tail的引理 -
#5391
List.erase/List.find引理的审查 -
#5392
List.fold/attach引理 -
#5393
List.fold相关器 -
#5394 关于
List.maximum?的引理 -
#5403 关于
List.toArray的定理 -
#5405
List.set_map方向相反 -
#5448 添加有关
List.IsPrefix的引理 (@Command-Master) -
#5460 缺少
List.set_replicate_self -
#5518 将
List.maximum?重命名为max? -
#5519 上游
List.fold引理 -
#5520 在
List.getElem_mem等上恢复@[simp]。 -
#5521 列表简化修复
-
#5550
List.unattach和简单引理 -
#5594 感应友好型
List.min?_cons
-
-
Array-
#5246 清理 Array.Lemmas 的导入
-
#5255 拆分 Init.Data.Array.Lemmas 以实现更好的引导
-
#5288 将
Array.data重命名为Array.toList -
#5303 清理
List.getElem_append变体 -
#5304
Array.not_mem_empty -
#5400 数组/基本中的重组
-
#5420 使
Array函数可半简化或使用结构递归 -
#5422 重构
DecidableEq (Array α) -
#5452 数组重构
-
#5458 重构后清理数组文档字符串
-
#5461 在
Array.swapAt!_def上恢复@[simp] -
#5465 改进 Array GetElem 引理
-
#5466
Array.foldX引理 -
#5472 @[simp] 关于
List.toArray的引理 -
#5485
toArray_concat的反向简单方向 -
#5514
Array.eraseReps -
#5515 上游
Array.qsortOrd -
#5516 上游
Subarray.empty -
#5526 修复
Array.length_toList的名称 -
#5527 减少数组中已弃用引理的使用
-
#5534 清理数组 GetElem 引理
-
#5536 修复
Array.modify引理 -
#5551 上游
Array.flatten引理 -
#5552 将数组“bang”
[]!索引的明显情况切换为依赖于假设 (@TomasPuverle) -
#5577 将缺失的 sim 添加到
Array.size_feraseIdx -
#5586
Array/Option.unattach
-
-
Option -
Nat -
Int -
Fin -
HashMap -
Monads -
简单引理清理
编译器、运行时和 FFI
Lake
-
Reservoir 构建缓存。 Lake 现在将在构建之前尝试从 Reservoir 获取包的预构建副本。仅对leanprover 或leanprover 社区组织中由Reservoir 索引的版本上的软件包启用此功能。用户可以通过在 CLI 上传递 --no-cache 或将 LAKE_NO_CACHE 环境变量设置为 true 来强制 Lake 从源构建包。 #5486、#5572、#5583、#5600、#5641、 #5642。
-
#5504 Lake new 和 Lake init 现在默认生成 TOML 配置。
-
#5878 修复了一个严重问题:当尝试清理名称不正确所需的依赖项时,Lake 会删除路径依赖项。
-
重大变更
-
#5641 包内目标的 Lake 构建将不再构建包的依赖项包级额外目标依赖项。在技术层面上,包的 extraDep 方面不再传递地构建其依赖项的 extraDep 方面(其中包括其 extraDepTargets)。
-
文档修复
-
#3918
@[builtin_doc]属性 (@digama0) -
#4305 解释借位语法 (@eric-wieser)
-
#5349 添加了
groupBy.loop的文档 (@vihdzp) -
#5473 修复了
BitVec.mul文档字符串中的拼写错误 (@llllvvuu) -
#5476 修复了
Lean.MetavarContext中的拼写错误 -
#5481 删除提及
Lean.withSeconds(@alexkeizer) -
#5497 更新了
toUIntX函数的文档和测试 (@TomasPuverle) -
#5087 提到
inferType不能确保类型正确性 -
对文档字符串中的拼写进行了许多修复,(@euprunin): #5425 #5426 #5427 #5430 #5431 #5434 #5435 #5436 #5438 #5439 #5440 #5599