lean2/tests/lua/template1.lua
Leonardo de Moura 4ba097a141 feat(frontends/lean): use lowercase commands, replace 'endscope' and 'endnamespace' with 'end'
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2014-01-05 13:06:36 -08:00

18 lines
954 B
Lua

import("util.lua")
import("template.lua")
local env = environment()
env:import("Int")
parse_lean_cmds([[
variables a b c : Int
variables f : Int -> Int
]], env)
local a, b, c = Consts("a, b, c")
print(parse_template("%1 + f %2 + %1 + %1", {a, b}, env))
assert(tostring(parse_template("%1 + f %2 + %1 + %1", {a, b}, env)) == "Int::add (Int::add (Int::add a (f b)) a) a")
assert(not pcall(function() print(parse_template("%1 + f %2 + %1 + %1", {a}, env)) end))
print(parse_template("%1 + f %2 + %3 + f (f %1)", {a, b, c}, env))
print(parse_template("%1 + f %2 + 10 + f (f %1)", {a, b, c}, env))
assert(tostring(parse_template("%1 + f %2 + 10 + f (f %1)", {a, b, c}, env)) == "Int::add (Int::add (Int::add a (f b)) (nat_to_int 10)) (f (f a))")
set_formatter(lean_formatter(env))
print(parse_template("%1 + f %2 + %3 + f (f %1)", {a, b, c}, env))
assert(tostring(parse_template("%1 + f %2 + %3 + f (f %1)", {a, b, c}, env)) == "a + f b + c + f (f a)")