SMT-language is a simple input language (parsing/resolve/typing/translate/import). It's main objective is to ease the use Sat Modulo Theory solver(s) (actually z3).
console
xxx@XXX:~$ sudo apt install z3
console
xxx@XXX:~$ cargo install smt-lang
console
xxx@XXX:~$ smt-lang --file problem_file.sl
``` let b: Bool let i: Int = j + 1 // single line comment let r: Real /* multi lines comment */ let bb: Bool = not b let j: Int let rr: Real = i / 10
constraint cst1 = r > 2.5 and j <= 5 constraint cst2 = b => j > 0 ```
console
xxx@XXX:~$ smt-lang --file example.sl
var b: Bool = true
var i: Int = 2
var r: Real = 7/2
var bb: Bool = false
var j: Int = 1
var rr: Real = 1/5
let <identifier> : <Type> [= <Expression>]
constraint <identifier> = <Expression>
include ".+"
true | false
not <Expression>
<Expression> and <Expression>
<Expression> or <Expression>
<Expression> => <Expression>
<Expression> = <Expression>
<Expression> /= <Expression>
<Expression> < <Expression>
<Expression> <= <Expression>
<Expression> > <Expression>
<Expression> >= <Expression>
[0-9]+ | [0-9]+.[0-9]+
- <Expression>
<Expression> + <Expression>
<Expression> - <Expression>
<Expression> * <Expression>
<Expression> / <Expression>
( <Expression> )