获取Maude
Maude
运行Maude
将下载Maude中的bin目录添加到系统目录中,输入maude即可运行。
退出: q or quit
module:大写
文件:以.maude结尾
pnat.maude
fmod PNAT is
sorts Nat .
op 0 : -> Nat .
op s_ : Nat -> Nat .
var Y X : Nat .
op _+_ : Nat Nat -> Nat [assoc comm] .
op _*_ : Nat Nat -> Nat [assoc comm] .
eq 0 + X = X .
eq s X + Y = s (X + Y) .
eq 0 * X = 0 .
eq s X * Y = (X * Y) + Y .
endfm
reduce: 归纳
用red可以替代reduce,in XXmodulename 也不是必须的。
load pnat.maude
reduce in PNAT : s s 0 + s s s 0 .
ctrl + C可以打断reduce进程。
load
prelude.maude文件是预定义了maude2的许多模型。
Maude从以下三个目录顺序加载模型文件:
- MAUDE_LIB为名的环境变量
- 环境变量中可执行目录
- 当前文件夹
STRING模型就是predefined的
red in STRING: "hello" + " " + "world!" .
in
使用某个模型文件:
in XXX
XXX是模型文件名字,可是是单独的名字或者以.maude .fm .obj扩展名结束。
Maude从以下三个目录顺序查找特定文件:
- 当前目录
- MAUDE_LIB环境变量
- 可执行文件目录
注释
- 单行注释 *** —
- 多行注释 *** XX ***
介绍
简洁性、表达性、高效性
Maude的三大设计原则
- 简介性:程序尽可能简洁,意义明晰
- 表达性:能运用于多种情况下的应用,以及形式化逻辑,表达性好
- 高效性:要和其他高效编程语言一样牛逼
明确域的语言在某些特定应用下,高效经济。Maude 可以被视为高效的元语言。
简洁性
有三表述,等式equations和规则rules以及重写语义rewriting semantics
- S_ 表示自然数的继承函数
- == 引用中的相等断言
- or Bool值的析取
等式从左到右替换
表达性
相等模式匹配
- 语法匹配
类型
Maude有两种变量类型:
- sorts 对应完好定义的数据,可以分层为不同的子集,Nat<Int<Rat
- kinds 可能存在错误的元素
Maude的逻辑基础
Maude计算是一种逻辑推论,数学上,成员等式逻辑基于重写逻辑。
成员等式逻辑,可是视为(Σ,EUA)
Σ是信号,表明类型,sorts、subsorts、kinds、overload operators
E是等式集合,函数模型
A是等式属性,assoc结合律、comm交换律等。
从数学到程序的转化,保持一致性