Ubuntu下安装Jasmin&EasyCrypt

 P.S.本人没有系统学过linux命令,现有的知识来源于过往课程中配置环境的经验以及chatgpt,如遇非专业操作请指正。

安装过程参考Jasmin&EasyCrypt github与某些论文提到的安装教程,因为之前的安装方式是本地下载包,每次更新都要重新下载,想使用可以在线更新的安装方式~

前置:

ubuntu版本:

一开始我安装的是 "ubuntu-22.04.1-desktop-amd64",内置的opam版本较高,且貌似无法回退版本,导致使用depext命令时报错。改换成安装ubuntu-20.04.6-desktop-amd64,内置opam 2.0.5即可。

opam depext 是一个 opam 命令,用于检查并安装一个包的系统依赖项。它会分析一个包的元数据,查找需要安装的系统依赖项,并尝试自动安装这些依赖项。

ubuntu虚拟机共享主机VPN

Ubuntu虚拟机共享主机VPN(适用于NAT或桥接) - 简书 (jianshu.com)

安装过程:

Jasmin

sudo apt install opam cvc4 gcc clang
opam init --auto-setup -y -c ocaml-base-compiler.4.12.1
eval $(opam env)

opam install -y depext 
opam depext -y jasmin
opam install -y jasmin
#如遇ERROR可能是网络问题,请重试...

此时安装的就是最新版本的Jasmin了,且可以使用 opam upgrade 更新~

使用 jasminc file.jazz 编译文件吧,若提示无此命令,使用 eval $(opam env) 加载当前活动的 opam 环境的相关环境变量和路径设置即可(或者opam init中有环境变量自动设置的命令)。

EasyCrypt

#Add the EasyCrypt package from repository:
opam pin -yn add easycrypt https://github.com/EasyCrypt/easycrypt.git

#Install EasyCrypt's dependencies:
opam depext easycrypt
opam install --deps-only easycrypt
opam depext alt-ergo z3
opam install alt-ergo z3
#z3安装得很慢,建议去摸鱼~

opam install easycrypt

alt-ergo、z3及之前安装的cvc4均是SMT求解器,EC的github安装说明上提示:

"Why3" 是一个用于形式验证的开源工具,它提供了一个统一的框架来进行程序验证和数学证明。

Why3 通常与不同的验证引擎(如Alt-Ergo、Z3、CVC4等)集成,以提供不同的验证方法。它的工作流程通常涉及编写规范、编写验证任务、选择验证引擎、运行验证任务并分析结果。

最初,以及在安装/卸载/更新SMT证明器之后,你需要通过以下easycrypt命令来(重新)配置Why3:

easycrypt why3config

联系Jasmin&EasyCrypt

EasyCrypt models of Jasmin programs may refer to some JModel or JWord modules. These are part of the Jasmin library for EasyCrypt (to be found in the source code of Jasmin). 

 以下方式二选一,本人采用的是上面一种:

vim ~/.config/easycrypt/easycrypt.conf
#或
easycrypt -I Jasmin:/path/to/jasmin/easycrypt/

 在其中加入Jasmin为EasyCrypt写的模块路径:

[general]
idirs=Jasmin:/path/to/jasmin/easycrypt/

 寻找方式:

find / -type d -name "easycrypt" 2>/dev/null

找到其中后缀为 /jasmin/easycrypt/ 的路径替换 /path/to/jasmin/easycrypt/ 即可。

Proof General Front-End 

Proof General 是一个用于交互式定理证明的 Emacs 前端。它为 Emacs 提供了一种用户友好的界面,用于与不同的定理证明系统(支持的证明助手:Coq、EasyCrypt、PhoX、qrhl-tool)进行交互式证明。 

sudo apt-get install emacs
git clone https://github.com/ProofGeneral/PG ~/.emacs.d/lisp/PG
cd ~/.emacs.d/lisp/PG
make

 在 .emacs.d 目录下新建文件init.el,并在其中输入以下内容:

cd ~/.emacs.d
touch init.el
vim init.el #vim a插入;Esc + : + wq保存退出

;; Open .v files with Proof General's Coq mode
  (require 'proof-site "~/.emacs.d/lisp/PG/generic/proof-site")
  ;; Jasmin
  (require 'generic-x)
  (define-generic-mode
      'jasmin-mode ; name
    '("//" ("/*" . "*/")) ; comments
    '("param" "fn" "inline" "export" "reg" "stack" "global" "int" "bool" "u8" "u16" "u32" "u64" "u128" "u256"
      "from" "require"
      "return" "ptr" "const" "mut"
      "while" "for" "to" "downto") ; keywords
    '(("#\\(if\\(def\\)?\\|else\\|endif\\).*$" . 'font-lock-preprocessor-face)
      ("\\(if\\|else\\)" . 'font-lock-keyword-face)
      ("#[a-zA-Z_][a-zA-Z_0-9]*" . 'font-lock-builtin-face)
      ("\\b[0-9]+\\b" . 'font-lock-constant-face)
      ); font-lock
    '("\\.jazz$" "\\.japp$" "\\.jinc$"); file names
    '()
    "Not A Jasmin Mode"
    )

运行界面:

Jasmin:

在终端将Jasmin文件编译成EasyCrypt文件:

jasminc -oec test1.ec test.jazz

EasyCrypt: 

 打开一个你编写的.ec文件,开始运行吧~

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 8
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值