Lean 4 安装教程及环境管理

在这里插入图片描述

唠唠闲话

Lean 是一个交互式定理证明器(Interactive Theorem Prover, ITP),也是一门通用函数式编程语言。微软研究院在 2013 年推出这一计算机定理证明器,数学家可以把数学定理转换成代码,再输入到 Lean 中,让程序来验证定理是否正确。用于定理证明的编程语言还有很多,比如 Coq,isabelle,HOL Light 等。很多数学家选择使用 Lean 的标准库 mathlib 作为基础,这个仓库也被称为未来的数学图书馆。

Lean 4 的官方文档(Get started)提供了不同平台的安装方式,包括 Windows、MacOS 和 Ubuntu 系统,且都提供了一行脚本运行的方式。但在国内因为网络问题,通常要借助镜像站或手动安装。

当前教程针对 Ubuntu 系统,Windows 可以参考 子鱼的博客,Mac 系统可以按官网教程,使用 homebrew 来快速配置。

安装教程

如果没有网络问题,用一行命令安装:

wget -q https://raw.githubusercontent.com/leanprover-community/mathlib4/master/scripts/install_debian.sh && bash install_debian.sh ; rm -f install_debian.sh && source ~/.profile

该命令执行了一个脚本:install_debian.sh,脚本安装了 VsCode,LEAN 插件,以及 elan。

如果下载不了 GitHub 资源,在安装了 VsCode 和 LEAN 4 拓展后,脚本里只有 elan 是需要手动安装的。

安装 elan

elan 是一个用于管理 LEAN 环境的工具。它的功能类似于 Rust 的 rustup 或 Node.js 的 nvm,用于安装、管理和切换不同版本的 Lean。

在 GitHub release 页面根据系统版本下载新版 elan,比如 linux-x86_64 系统的 elan 安装器地址为:

https://github.com/leanprover/elan/releases/download/v3.1.1/elan-x86_64-unknown-linux-gnu.tar.gz

如果不确定系统架构,执行 uname -suname -m 查看:

uname -s
Linux
❯ uname -m
x86_64

下载文件并解压:

# 如果网络不行就本地下载再上传
curl https://github.com/leanprover/elan/releases/download/v3.1.1/elan-x86_64-unknown-linux-gnu.tar.gz -o elan.tar.gz
tar xf elan.tar.gz

解压得到 elan-init 文件,赋予可执行权限并执行:

chmod +x elan-init
./elan-init

完成后,在 .bashrc.zshrc 中修改环境变量:

export PATH="$HOME/.elan/bin:$PATH"

重启终端,检查 elan 版本和默认安装的 Lean 版本:

❯ elan -V
elan 3.1.1 (71ddc6633 2024-02-22)
❯ elan show
stable (default)
Lean (version 4.7.0, x86_64-unknown-linux-gnu, commit 6fce8f7d5cd1, Release)

elan 的管理目录为 $HOME/.elan,内容形如

❯ tree .elan -L 2
.elan
├── bin
│   ├── elan
│   ├── lake
│   ├── lean
│   ├── leanc
│   ├── leanchecker
│   ├── leanmake
│   └── leanpkg
├── env
├── settings.toml
├── tmp
├── toolchains
│   └── stable
└── update-hashes└── stable

下载的 LEAN 版本在 toolchains 目录下,settings.toml 是 elan 的配置文件。

elan 的二进制文件中,lake 经常会用到。

Lake 管理器

lake 全称 Lean Make,是 LEAN4 的包管理器,已合并到 LEAN4 仓库,作为源码的一部分。

下边用一个简单的例子演示 lake 的基本用法。

创建项目,目录为 hello

# 创建包
lake new hello
## 或者
mkdir hello && cd hello && lake init hello
# 构建包
lake build
# 运行
lake exec hello # Hello, world!
# 清理构建文件
lake clean
# 更新依赖
lake update
# 运行 lakefile.lean 的脚本
lake run <script>

以上,遇到问题欢迎评论讨论~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/848742.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Paperless-Ngx文档管理系统结合内网穿透实现随时远程搜索查阅文本

文章目录 前言1. 部署Paperless-ngx2. 本地访问Paperless-ngx3. Linux安装Cpolar4. 配置公网地址5. 远程访问6. 固定Cpolar公网地址7. 固定地址访问 前言 Paperless-ngx是一个开源的文档管理系统&#xff0c;可以将物理文档转换成可搜索的在线档案&#xff0c;从而减少纸张的使…

深入解析Nginx配置文件:优化你的Web服务器

Nginx作为一款高性能的HTTP和反向代理服务器,在Web服务器市场中占据了重要地位。它的高并发处理能力和丰富的功能,使其成为了许多大型网站和应用的首选。而Nginx配置文件是Nginx性能和功能的核心,理解和优化这些配置对于提升Web服务器性能至关重要。本文将深入解析Nginx配置…

CVE-2024-2961:将phpfilter任意文件读取提升为远程代码执行(RCE)

0x00 前言 前几天p牛师傅在星球发了一个帖子&#xff1a;PHP利用glibc iconv()中的一个缓冲区溢出漏洞CVE-2024-2961&#xff0c;实现将文件读取提升为任意命令执行漏洞&#xff0c;当时觉得这个漏洞蛮有意思&#xff0c;就想研究一下。于是web狗开启了一次二进制漏洞的学习之…

python 字符串(str)、列表(list)、元组(tuple)、字典(dict)

学习目标: 1:能够知道如何定义一个字符串; [重点] 使用双引号引起来: 变量名 "xxxx" 2:能够知道切片的语法格式; [重点] [起始: 结束] 3:掌握如何定义一个列表; [重点] 使用[ ]引起来: 变量名 [xx,xx,...] 4:能够说出4个列表相关的方法; [了解] ap…

项目相关面试问题

项目用了哪些技术 python的内存如何分配 对之前工具的改进用了哪些方法&#xff0c;得到了什么提升&#xff0c;衡量的指标有哪些&#xff0c;在项目开始之前经过怎样的前期调研才决定用这种方法&#xff1f; 说一个比较熟悉的项目 实习期间做了什么工作&#xff0c;举一个…

图神经网络(GNN)在生产过程优化中的应用介绍

目录 一、说明 二、图神经网络和应用 2.1 什么是图神经网络&#xff1f; 2.2 将生产系统建模为图形 2.3 过程模拟和假设分析 2.4 优化生产计划 三、生产系统中的图形数据表示 3.1 生产图中的节点表示 3.2 生产图中的边缘表示 3.3 图形表示的好处 3.4 将 GNN 与图形表示集成 3.5…

Liunx启动oracle 、redis命令

1、启动redis命令&#xff0c;启动后默认后台运行 找到redis的安装目录 cd /usr/local/bin启动redis命令 ./src/redis-server ./redis.conf --daemonize yes查看Redis是否运行 ps -ef | grep redis杀掉进程号 kill -9 杀掉号2、启动oracle命令 一、在Linux下启动Oracle 2.…

博睿数据应邀出席双态IT用户大会,分享《构建云原生时代的一体化智能可观测性》

5月31日-6月2日&#xff0c;第十二届双态IT用户大会于成都成功举行&#xff0c;此次大会由DCMG和双态IT论坛联合主办&#xff0c;聚焦“信创时代的组织级云原生能力建设”和“组织级云原生运维能力建设”两大会议主题&#xff0c;旨在推动双态IT落地与创新&#xff0c;为企业数…

(学习笔记)数据基建-数据质量

数据基建-数据质量 数据质量数据质量保障措施如何推动上下游开展数据质量活动数据质量保障如何量化产出数据质量思考全链路数据质量保障项目 数据质量 概念&#xff1a;数据质量&#xff0c;意如其名&#xff0c;就是数据的准确性&#xff0c;他是数据仓库的基石&#xff0c;控…

fastadmin设置表字段不参与搜索

再对应的js文件中&#xff0c;把operate设置为false即可

容器(Docker)安装

centos安装Docker sudo yum remove docker* sudo yum install -y yum-utils#配置docker的yum地址 sudo yum-config-manager \ --add-repo \ http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo#安装指定版本 - 可以根据实际安装版本 sudo yum install -y docke…

easyexcel动态表头导出

动态表头导出excel 红框固定&#xff0c;绿框动态 引入依赖 <dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>3.1.1</version></dependency>工具类 import com.alibaba.excel.util…

【C++修行之道】类和对象(五)日期类的实现、const成员、取地址及const和取地址操作符重载

目录 一、 日期类的实现 Date.h 1.1 GetMonthDay函数&#xff08;获取某年某月的天数&#xff09; 问&#xff1a;这个函数为什么不和其他的函数一样放在Date.cpp文件中实现呢&#xff1f; 1.2 CheckDate函数&#xff08;检查日期有效性&#xff09;、Print函数&#xff08;…

【WP】猿人学13_入门级cookie

https://match.yuanrenxue.cn/match/13 抓包分析 抓包分析发现加密参数是cookie中有一个yuanrenxue_cookie 当cookie过期的时候&#xff0c;就会重新给match/13发包&#xff0c;这个包返回一段js代码&#xff0c;应该是生成cookie的 <script>document.cookie(y)(u)(a…

【初阶数据结构】栈和队列(附题目)

目录 1.栈 1.1栈的概念及结构 1.2栈的实现 1.2.2实现结构的选择 a.数组 b.链表 c.更优的选择 1.2.3实现结构 a.栈的结构体 b.栈的初始化 c.栈的销毁 d.入栈 e.出栈 f.获取栈顶元素 g.获取栈中有效元素个数 h.检测队列是否为空&#xff0c;如果为空返回非零结…

m1系列芯片aarch64架构使用docker-compose安装seata

之前看到 DockerHub 上发布了 m1 芯片 aarch64 架构的 seata 镜像, 所以就尝试的安装了下, 亲测可用: 使用该命令查看正在运行的 seata 容器 docker ps | grep seata 一. docker-compose.yml 命令编写 volumes 命令所指定的宿主机映射地址, 需要根据自己的电脑环境更换 环…

MySQL条件查询

018条件查询之或者or or表示或者&#xff0c;还有另一种写法&#xff1a;|| 案例&#xff1a;找出工作岗位是MANAGER和SALESMAN的员工姓名、工作岗位 注意字符串一定要带单引号 select ename, job from emp where jobmanager or jobsalesman;任务&#xff1a;查询20和30部门的…

Redis 7.2.x 主从复制

IP操作系统服务版本192.168.140.153CentOS 7remaster7.2.5192.168.140.159CentOS 7redis-slave7.2.5 一、安装依赖 yum -y install gcc gcc-c 二、安装Redis 1、下载安装包 wget http://download.redis.io/releases/redis-7.2.5.tar.gz 2、解压 tar -zxvf redis-7.2.5.t…

西湖大学最新AI工具:识别虚假新闻和辨别AI生成内容,准确率达99%

你好&#xff0c;我是郭震 随着人工智能技术的发展&#xff0c;生成式AI在文本生成领域展示了惊人的潜力。然而&#xff0c;随之而来的虚假新闻和AI生成的文章让人们难以分辨。 近日&#xff0c;西湖大学团队发布了一款名为Fast-DetectGPT的新工具&#xff0c;为识别虚假新闻和…

Linuxftp服务001匿名登入

在Linux系统中搭建FTP&#xff08;File Transfer Protocol&#xff09;服务&#xff0c;可以让用户通过网络在服务器与其他客户端之间传输文件。它有几种登入模式&#xff0c;今天我们讲一下匿名登入。 操作系统 CentOS Stream9 操作步骤 首先我们先下载ftp [rootlocalhost…