refactor(builtin): only load the kernel and natural numbers by default
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
This commit is contained in:
parent
a017801983
commit
08718e33dc
168 changed files with 362 additions and 357 deletions
|
@ -1,4 +1,5 @@
|
||||||
Import tactic
|
Import tactic
|
||||||
|
Import int
|
||||||
Definition a : Nat := 10
|
Definition a : Nat := 10
|
||||||
(* Trivial indicates a "proof by evaluation" *)
|
(* Trivial indicates a "proof by evaluation" *)
|
||||||
Theorem T1 : a > 0 := (by trivial)
|
Theorem T1 : a > 0 := (by trivial)
|
||||||
|
|
|
@ -68,9 +68,9 @@ endfunction()
|
||||||
|
|
||||||
add_kernel_theory("kernel.lean" "${CMAKE_CURRENT_BINARY_DIR}/macros.lua")
|
add_kernel_theory("kernel.lean" "${CMAKE_CURRENT_BINARY_DIR}/macros.lua")
|
||||||
add_kernel_theory("nat.lean" "${CMAKE_CURRENT_BINARY_DIR}/kernel.olean")
|
add_kernel_theory("nat.lean" "${CMAKE_CURRENT_BINARY_DIR}/kernel.olean")
|
||||||
add_kernel_theory("int.lean" "${CMAKE_CURRENT_BINARY_DIR}/nat.olean")
|
|
||||||
add_kernel_theory("real.lean" "${CMAKE_CURRENT_BINARY_DIR}/int.olean")
|
|
||||||
|
|
||||||
|
add_theory("int.lean" "${CMAKE_CURRENT_BINARY_DIR}/nat.olean")
|
||||||
|
add_theory("real.lean" "${CMAKE_CURRENT_BINARY_DIR}/int.olean")
|
||||||
add_theory("specialfn.lean" "${CMAKE_CURRENT_BINARY_DIR}/real.olean")
|
add_theory("specialfn.lean" "${CMAKE_CURRENT_BINARY_DIR}/real.olean")
|
||||||
add_theory("cast.lean" "${CMAKE_CURRENT_BINARY_DIR}/kernel.olean")
|
add_theory("cast.lean" "${CMAKE_CURRENT_BINARY_DIR}/kernel.olean")
|
||||||
|
|
||||||
|
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -21,7 +21,9 @@ Author: Leonardo de Moura
|
||||||
#include "kernel/io_state.h"
|
#include "kernel/io_state.h"
|
||||||
#include "library/expr_pair.h"
|
#include "library/expr_pair.h"
|
||||||
#include "library/expr_pair_maps.h"
|
#include "library/expr_pair_maps.h"
|
||||||
#include "library/all/all.h"
|
#include "library/arith/nat.h"
|
||||||
|
#include "library/arith/int.h"
|
||||||
|
#include "library/arith/real.h"
|
||||||
#include "frontends/lean/operator_info.h"
|
#include "frontends/lean/operator_info.h"
|
||||||
#include "frontends/lean/coercion.h"
|
#include "frontends/lean/coercion.h"
|
||||||
#include "frontends/lean/frontend.h"
|
#include "frontends/lean/frontend.h"
|
||||||
|
@ -554,17 +556,21 @@ static lean_extension & to_ext(environment const & env) {
|
||||||
return env->get_extension<lean_extension>(g_lean_extension_initializer.m_extid);
|
return env->get_extension<lean_extension>(g_lean_extension_initializer.m_extid);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
\brief Import all definitions and notation.
|
|
||||||
*/
|
|
||||||
void init_frontend(environment const & env, io_state & ios, bool no_kernel) {
|
void init_frontend(environment const & env, io_state & ios, bool no_kernel) {
|
||||||
ios.set_formatter(mk_pp_formatter(env));
|
ios.set_formatter(mk_pp_formatter(env));
|
||||||
if (!no_kernel)
|
if (!no_kernel) {
|
||||||
import_all(env);
|
import_kernel(env);
|
||||||
|
import_nat(env);
|
||||||
}
|
}
|
||||||
void init_frontend(environment const & env) {
|
}
|
||||||
io_state ios;
|
void init_full_frontend(environment const & env, io_state & ios) {
|
||||||
init_frontend(env, ios);
|
init_frontend(env, ios);
|
||||||
|
import_int(env);
|
||||||
|
import_real(env);
|
||||||
|
}
|
||||||
|
void init_full_frontend(environment const & env) {
|
||||||
|
io_state ios;
|
||||||
|
init_full_frontend(env, ios);
|
||||||
}
|
}
|
||||||
|
|
||||||
void add_infix(environment const & env, io_state const & ios, name const & opn, unsigned p, expr const & d) {
|
void add_infix(environment const & env, io_state const & ios, name const & opn, unsigned p, expr const & d) {
|
||||||
|
|
|
@ -14,10 +14,16 @@ Author: Leonardo de Moura
|
||||||
|
|
||||||
namespace lean {
|
namespace lean {
|
||||||
/**
|
/**
|
||||||
\brief Import all definitions and notation.
|
\brief Load kernel, nat and set pretty printer.
|
||||||
*/
|
*/
|
||||||
void init_frontend(environment const & env, io_state & ios, bool no_kernel = false);
|
void init_frontend(environment const & env, io_state & ios, bool no_kernel = false);
|
||||||
void init_frontend(environment const & env);
|
|
||||||
|
/*
|
||||||
|
\brief Load kernel, nat, int, real and set pretty printer.
|
||||||
|
It is used for testing.
|
||||||
|
*/
|
||||||
|
void init_full_frontend(environment const & env, io_state & ios);
|
||||||
|
void init_full_frontend(environment const & env);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@name Notation for parsing and pretty printing.
|
@name Notation for parsing and pretty printing.
|
||||||
|
|
|
@ -1139,6 +1139,24 @@ static int environment_is_opaque(lua_State * L) {
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int environment_import(lua_State * L) {
|
||||||
|
rw_shared_environment env(L, 1);
|
||||||
|
int nargs = lua_gettop(L);
|
||||||
|
if (nargs == 3) {
|
||||||
|
env->import(luaL_checkstring(L, 2), to_io_state(L, 3));
|
||||||
|
} else {
|
||||||
|
io_state * ios = get_io_state(L);
|
||||||
|
if (ios) {
|
||||||
|
env->import(luaL_checkstring(L, 2), *ios);
|
||||||
|
} else {
|
||||||
|
io_state ios;
|
||||||
|
ios.set_options(get_global_options(L));
|
||||||
|
env->import(luaL_checkstring(L, 2), ios);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
static const struct luaL_Reg environment_m[] = {
|
static const struct luaL_Reg environment_m[] = {
|
||||||
{"__gc", environment_gc}, // never throws
|
{"__gc", environment_gc}, // never throws
|
||||||
{"__tostring", safe_function<environment_tostring>},
|
{"__tostring", safe_function<environment_tostring>},
|
||||||
|
@ -1162,6 +1180,7 @@ static const struct luaL_Reg environment_m[] = {
|
||||||
{"local_objects", safe_function<environment_local_objects>},
|
{"local_objects", safe_function<environment_local_objects>},
|
||||||
{"set_opaque", safe_function<environment_set_opaque>},
|
{"set_opaque", safe_function<environment_set_opaque>},
|
||||||
{"is_opaque", safe_function<environment_is_opaque>},
|
{"is_opaque", safe_function<environment_is_opaque>},
|
||||||
|
{"import", safe_function<environment_import>},
|
||||||
{0, 0}
|
{0, 0}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -42,7 +42,7 @@ static void parse_error(environment const & env, io_state const & ios, char cons
|
||||||
}
|
}
|
||||||
|
|
||||||
static void tst1() {
|
static void tst1() {
|
||||||
environment env; io_state ios; init_frontend(env, ios);
|
environment env; io_state ios; init_full_frontend(env, ios);
|
||||||
parse(env, ios, "Variable x : Bool Variable y : Bool Axiom H : x && y || x => x");
|
parse(env, ios, "Variable x : Bool Variable y : Bool Axiom H : x && y || x => x");
|
||||||
parse(env, ios, "Eval true && true");
|
parse(env, ios, "Eval true && true");
|
||||||
parse(env, ios, "Show true && false Eval true && false");
|
parse(env, ios, "Show true && false Eval true && false");
|
||||||
|
@ -63,7 +63,7 @@ static void check(environment const & env, io_state & ios, char const * str, exp
|
||||||
}
|
}
|
||||||
|
|
||||||
static void tst2() {
|
static void tst2() {
|
||||||
environment env; io_state ios; init_frontend(env, ios);
|
environment env; io_state ios; init_full_frontend(env, ios);
|
||||||
env->add_var("x", Bool);
|
env->add_var("x", Bool);
|
||||||
env->add_var("y", Bool);
|
env->add_var("y", Bool);
|
||||||
env->add_var("z", Bool);
|
env->add_var("z", Bool);
|
||||||
|
@ -80,7 +80,7 @@ static void tst2() {
|
||||||
}
|
}
|
||||||
|
|
||||||
static void tst3() {
|
static void tst3() {
|
||||||
environment env; io_state ios; init_frontend(env, ios);
|
environment env; io_state ios; init_full_frontend(env, ios);
|
||||||
parse(env, ios, "Help");
|
parse(env, ios, "Help");
|
||||||
parse(env, ios, "Help Options");
|
parse(env, ios, "Help Options");
|
||||||
parse_error(env, ios, "Help Echo");
|
parse_error(env, ios, "Help Echo");
|
||||||
|
|
|
@ -63,7 +63,7 @@ static void tst2() {
|
||||||
|
|
||||||
static void tst3() {
|
static void tst3() {
|
||||||
std::cout << "tst3\n";
|
std::cout << "tst3\n";
|
||||||
environment env; init_frontend(env);
|
environment env; init_full_frontend(env);
|
||||||
try {
|
try {
|
||||||
env->add_definition("a", Int, Const("a"));
|
env->add_definition("a", Int, Const("a"));
|
||||||
lean_unreachable();
|
lean_unreachable();
|
||||||
|
@ -108,7 +108,7 @@ static void tst3() {
|
||||||
|
|
||||||
static void tst4() {
|
static void tst4() {
|
||||||
std::cout << "tst4\n";
|
std::cout << "tst4\n";
|
||||||
environment env; init_frontend(env);
|
environment env; init_full_frontend(env);
|
||||||
env->add_definition("a", Int, iVal(1), true); // add opaque definition
|
env->add_definition("a", Int, iVal(1), true); // add opaque definition
|
||||||
expr t = iAdd(Const("a"), iVal(1));
|
expr t = iAdd(Const("a"), iVal(1));
|
||||||
std::cout << t << " --> " << normalize(t, env) << "\n";
|
std::cout << t << " --> " << normalize(t, env) << "\n";
|
||||||
|
@ -121,7 +121,7 @@ static void tst4() {
|
||||||
}
|
}
|
||||||
|
|
||||||
static void tst5() {
|
static void tst5() {
|
||||||
environment env; init_frontend(env);
|
environment env; init_full_frontend(env);
|
||||||
env->add_definition("a", Int, iVal(1), true); // add opaque definition
|
env->add_definition("a", Int, iVal(1), true); // add opaque definition
|
||||||
try {
|
try {
|
||||||
std::cout << type_check(iAdd(Const("a"), Int), env) << "\n";
|
std::cout << type_check(iAdd(Const("a"), Int), env) << "\n";
|
||||||
|
@ -132,7 +132,7 @@ static void tst5() {
|
||||||
}
|
}
|
||||||
|
|
||||||
static void tst6() {
|
static void tst6() {
|
||||||
environment env; init_frontend(env);
|
environment env; init_full_frontend(env);
|
||||||
level u = env->add_uvar("u", level() + 1);
|
level u = env->add_uvar("u", level() + 1);
|
||||||
level w = env->add_uvar("w", u + 1);
|
level w = env->add_uvar("w", u + 1);
|
||||||
env->add_var("f", mk_arrow(Type(u), Type(u)));
|
env->add_var("f", mk_arrow(Type(u), Type(u)));
|
||||||
|
@ -159,7 +159,7 @@ static void tst6() {
|
||||||
}
|
}
|
||||||
|
|
||||||
static void tst7() {
|
static void tst7() {
|
||||||
environment env; init_frontend(env);
|
environment env; init_full_frontend(env);
|
||||||
env->add_var("a", Int);
|
env->add_var("a", Int);
|
||||||
env->add_var("b", Int);
|
env->add_var("b", Int);
|
||||||
expr t = If(Int, True, Const("a"), Const("b"));
|
expr t = If(Int, True, Const("a"), Const("b"));
|
||||||
|
@ -207,7 +207,7 @@ static void tst9() {
|
||||||
|
|
||||||
static void tst10() {
|
static void tst10() {
|
||||||
environment env;
|
environment env;
|
||||||
init_frontend(env);
|
init_full_frontend(env);
|
||||||
env->add_definition("a", Int, iVal(1));
|
env->add_definition("a", Int, iVal(1));
|
||||||
lean_assert(env->get_object("a").get_weight() == 1);
|
lean_assert(env->get_object("a").get_weight() == 1);
|
||||||
expr a = Const("a");
|
expr a = Const("a");
|
||||||
|
|
|
@ -546,7 +546,7 @@ static void tst26() {
|
||||||
*/
|
*/
|
||||||
std::cout << "\ntst26\n";
|
std::cout << "\ntst26\n";
|
||||||
environment env;
|
environment env;
|
||||||
init_frontend(env);
|
init_full_frontend(env);
|
||||||
metavar_env menv;
|
metavar_env menv;
|
||||||
buffer<unification_constraint> up;
|
buffer<unification_constraint> up;
|
||||||
type_checker checker(env);
|
type_checker checker(env);
|
||||||
|
@ -588,7 +588,7 @@ static void tst27() {
|
||||||
*/
|
*/
|
||||||
std::cout << "\ntst27\n";
|
std::cout << "\ntst27\n";
|
||||||
environment env;
|
environment env;
|
||||||
init_frontend(env);
|
init_full_frontend(env);
|
||||||
metavar_env menv;
|
metavar_env menv;
|
||||||
buffer<unification_constraint> up;
|
buffer<unification_constraint> up;
|
||||||
type_checker checker(env);
|
type_checker checker(env);
|
||||||
|
|
|
@ -191,7 +191,7 @@ static void tst2() {
|
||||||
|
|
||||||
static void tst3() {
|
static void tst3() {
|
||||||
environment env;
|
environment env;
|
||||||
init_frontend(env);
|
init_full_frontend(env);
|
||||||
env->add_var("a", Bool);
|
env->add_var("a", Bool);
|
||||||
expr t1 = Const("a");
|
expr t1 = Const("a");
|
||||||
expr t2 = Const("a");
|
expr t2 = Const("a");
|
||||||
|
@ -219,7 +219,7 @@ static void tst5() {
|
||||||
#if !defined(__APPLE__) && defined(LEAN_MULTI_THREAD)
|
#if !defined(__APPLE__) && defined(LEAN_MULTI_THREAD)
|
||||||
expr t = mk_big(18);
|
expr t = mk_big(18);
|
||||||
environment env;
|
environment env;
|
||||||
init_frontend(env);
|
init_full_frontend(env);
|
||||||
env->add_var("f", Bool >> (Bool >> Bool));
|
env->add_var("f", Bool >> (Bool >> Bool));
|
||||||
env->add_var("a", Bool);
|
env->add_var("a", Bool);
|
||||||
normalizer proc(env);
|
normalizer proc(env);
|
||||||
|
@ -255,7 +255,7 @@ static void tst6() {
|
||||||
|
|
||||||
static void tst7() {
|
static void tst7() {
|
||||||
environment env;
|
environment env;
|
||||||
init_frontend(env);
|
init_full_frontend(env);
|
||||||
metavar_env menv;
|
metavar_env menv;
|
||||||
expr m1 = menv->mk_metavar();
|
expr m1 = menv->mk_metavar();
|
||||||
expr x = Const("x");
|
expr x = Const("x");
|
||||||
|
@ -279,7 +279,7 @@ static void tst7() {
|
||||||
|
|
||||||
static void tst8() {
|
static void tst8() {
|
||||||
environment env;
|
environment env;
|
||||||
init_frontend(env);
|
init_full_frontend(env);
|
||||||
env->add_var("P", Int >> (Int >> Bool));
|
env->add_var("P", Int >> (Int >> Bool));
|
||||||
expr P = Const("P");
|
expr P = Const("P");
|
||||||
expr v0 = Var(0);
|
expr v0 = Var(0);
|
||||||
|
@ -307,7 +307,7 @@ static void tst9() {
|
||||||
|
|
||||||
static void tst10() {
|
static void tst10() {
|
||||||
environment env;
|
environment env;
|
||||||
init_frontend(env);
|
init_full_frontend(env);
|
||||||
metavar_env menv;
|
metavar_env menv;
|
||||||
context ctx({{"x", Bool}, {"y", Bool}});
|
context ctx({{"x", Bool}, {"y", Bool}});
|
||||||
expr m = menv->mk_metavar(ctx);
|
expr m = menv->mk_metavar(ctx);
|
||||||
|
|
|
@ -26,7 +26,7 @@ expr norm(expr const & e, environment & env) {
|
||||||
}
|
}
|
||||||
|
|
||||||
static void mk(expr const & a) {
|
static void mk(expr const & a) {
|
||||||
environment env; init_frontend(env);
|
environment env; init_full_frontend(env);
|
||||||
expr b = Const("b");
|
expr b = Const("b");
|
||||||
for (unsigned i = 0; i < 100; i++) {
|
for (unsigned i = 0; i < 100; i++) {
|
||||||
expr h = Const("h");
|
expr h = Const("h");
|
||||||
|
|
|
@ -78,7 +78,7 @@ static void tst2() {
|
||||||
|
|
||||||
static void tst3() {
|
static void tst3() {
|
||||||
environment env;
|
environment env;
|
||||||
init_frontend(env);
|
init_full_frontend(env);
|
||||||
expr f = Fun("a", Bool, Eq(Const("a"), True));
|
expr f = Fun("a", Bool, Eq(Const("a"), True));
|
||||||
std::cout << type_check(f, env) << "\n";
|
std::cout << type_check(f, env) << "\n";
|
||||||
lean_assert(type_check(f, env) == mk_arrow(Bool, Bool));
|
lean_assert(type_check(f, env) == mk_arrow(Bool, Bool));
|
||||||
|
@ -88,7 +88,7 @@ static void tst3() {
|
||||||
|
|
||||||
static void tst4() {
|
static void tst4() {
|
||||||
environment env;
|
environment env;
|
||||||
init_frontend(env);
|
init_full_frontend(env);
|
||||||
expr a = Eq(iVal(1), iVal(2));
|
expr a = Eq(iVal(1), iVal(2));
|
||||||
expr pr = mk_lambda("x", a, Var(0));
|
expr pr = mk_lambda("x", a, Var(0));
|
||||||
std::cout << type_check(pr, env) << "\n";
|
std::cout << type_check(pr, env) << "\n";
|
||||||
|
@ -96,7 +96,7 @@ static void tst4() {
|
||||||
|
|
||||||
static void tst5() {
|
static void tst5() {
|
||||||
environment env;
|
environment env;
|
||||||
init_frontend(env);
|
init_full_frontend(env);
|
||||||
env->add_var("P", Bool);
|
env->add_var("P", Bool);
|
||||||
expr P = Const("P");
|
expr P = Const("P");
|
||||||
expr H = Const("H");
|
expr H = Const("H");
|
||||||
|
@ -114,7 +114,7 @@ static void tst5() {
|
||||||
|
|
||||||
static void tst6() {
|
static void tst6() {
|
||||||
environment env;
|
environment env;
|
||||||
init_frontend(env);
|
init_full_frontend(env);
|
||||||
expr A = Const("A");
|
expr A = Const("A");
|
||||||
expr f = Const("f");
|
expr f = Const("f");
|
||||||
expr x = Const("x");
|
expr x = Const("x");
|
||||||
|
@ -129,7 +129,7 @@ static void tst6() {
|
||||||
|
|
||||||
static void tst7() {
|
static void tst7() {
|
||||||
environment env;
|
environment env;
|
||||||
init_frontend(env);
|
init_full_frontend(env);
|
||||||
expr A = Const(name{"foo", "bla", "bla", "foo"});
|
expr A = Const(name{"foo", "bla", "bla", "foo"});
|
||||||
expr f = Const("f");
|
expr f = Const("f");
|
||||||
expr x = Const("x");
|
expr x = Const("x");
|
||||||
|
@ -144,7 +144,7 @@ static void tst7() {
|
||||||
|
|
||||||
static void tst8() {
|
static void tst8() {
|
||||||
environment env;
|
environment env;
|
||||||
init_frontend(env);
|
init_full_frontend(env);
|
||||||
env->add_var("P", mk_arrow(Int, mk_arrow(Int, Bool)));
|
env->add_var("P", mk_arrow(Int, mk_arrow(Int, Bool)));
|
||||||
env->add_var("x", Int);
|
env->add_var("x", Int);
|
||||||
expr P = Const("P");
|
expr P = Const("P");
|
||||||
|
@ -164,7 +164,7 @@ static void tst8() {
|
||||||
|
|
||||||
static void tst9() {
|
static void tst9() {
|
||||||
environment env;
|
environment env;
|
||||||
init_frontend(env);
|
init_full_frontend(env);
|
||||||
env->add_var("P", mk_arrow(Int, mk_arrow(Int, Bool)));
|
env->add_var("P", mk_arrow(Int, mk_arrow(Int, Bool)));
|
||||||
env->add_var("x", Int);
|
env->add_var("x", Int);
|
||||||
expr P = Const("P");
|
expr P = Const("P");
|
||||||
|
@ -184,7 +184,7 @@ static void tst9() {
|
||||||
|
|
||||||
static void tst10() {
|
static void tst10() {
|
||||||
environment env;
|
environment env;
|
||||||
init_frontend(env);
|
init_full_frontend(env);
|
||||||
env->add_var("f", mk_arrow(Int, Int));
|
env->add_var("f", mk_arrow(Int, Int));
|
||||||
env->add_var("b", Int);
|
env->add_var("b", Int);
|
||||||
expr f = Const("f");
|
expr f = Const("f");
|
||||||
|
@ -201,7 +201,7 @@ static void tst10() {
|
||||||
|
|
||||||
static void tst11() {
|
static void tst11() {
|
||||||
environment env;
|
environment env;
|
||||||
init_frontend(env);
|
init_full_frontend(env);
|
||||||
env->add_var("f", Int >> (Int >> Int));
|
env->add_var("f", Int >> (Int >> Int));
|
||||||
env->add_var("a", Int);
|
env->add_var("a", Int);
|
||||||
unsigned n = 1000;
|
unsigned n = 1000;
|
||||||
|
@ -232,7 +232,7 @@ static void tst12() {
|
||||||
#if !defined(__APPLE__) && defined(LEAN_MULTI_THREAD)
|
#if !defined(__APPLE__) && defined(LEAN_MULTI_THREAD)
|
||||||
expr t = mk_big(18);
|
expr t = mk_big(18);
|
||||||
environment env;
|
environment env;
|
||||||
init_frontend(env);
|
init_full_frontend(env);
|
||||||
env->add_var("f", Int >> (Int >> Int));
|
env->add_var("f", Int >> (Int >> Int));
|
||||||
env->add_var("a", Int);
|
env->add_var("a", Int);
|
||||||
type_checker checker(env);
|
type_checker checker(env);
|
||||||
|
@ -255,7 +255,7 @@ static void tst12() {
|
||||||
|
|
||||||
static void tst13() {
|
static void tst13() {
|
||||||
environment env;
|
environment env;
|
||||||
init_frontend(env);
|
init_full_frontend(env);
|
||||||
env->add_var("f", Type() >> Type());
|
env->add_var("f", Type() >> Type());
|
||||||
expr f = Const("f");
|
expr f = Const("f");
|
||||||
std::cout << type_check(f(Bool), env) << "\n";
|
std::cout << type_check(f(Bool), env) << "\n";
|
||||||
|
@ -264,7 +264,7 @@ static void tst13() {
|
||||||
|
|
||||||
static void tst14() {
|
static void tst14() {
|
||||||
environment env;
|
environment env;
|
||||||
init_frontend(env);
|
init_full_frontend(env);
|
||||||
expr f = Const("f");
|
expr f = Const("f");
|
||||||
expr a = Const("a");
|
expr a = Const("a");
|
||||||
env->add_var("f", Int >> Int);
|
env->add_var("f", Int >> Int);
|
||||||
|
@ -282,7 +282,7 @@ static void tst14() {
|
||||||
|
|
||||||
static void tst15() {
|
static void tst15() {
|
||||||
environment env;
|
environment env;
|
||||||
init_frontend(env);
|
init_full_frontend(env);
|
||||||
context ctx1, ctx2;
|
context ctx1, ctx2;
|
||||||
expr A = Const("A");
|
expr A = Const("A");
|
||||||
expr vec1 = Const("vec1");
|
expr vec1 = Const("vec1");
|
||||||
|
@ -350,7 +350,7 @@ static void f2(type_checker & tc, expr const & F) {
|
||||||
|
|
||||||
static void tst17() {
|
static void tst17() {
|
||||||
environment env;
|
environment env;
|
||||||
init_frontend(env);
|
init_full_frontend(env);
|
||||||
type_checker tc(env);
|
type_checker tc(env);
|
||||||
expr A = Const("A");
|
expr A = Const("A");
|
||||||
expr F;
|
expr F;
|
||||||
|
@ -374,7 +374,7 @@ static std::ostream & operator<<(std::ostream & out, buffer<unification_constrai
|
||||||
|
|
||||||
static void tst18() {
|
static void tst18() {
|
||||||
environment env;
|
environment env;
|
||||||
init_frontend(env);
|
init_full_frontend(env);
|
||||||
type_inferer type_of(env);
|
type_inferer type_of(env);
|
||||||
expr f = Const("f");
|
expr f = Const("f");
|
||||||
expr g = Const("g");
|
expr g = Const("g");
|
||||||
|
@ -406,7 +406,7 @@ static expr mk_big(unsigned val, unsigned depth) {
|
||||||
|
|
||||||
static void tst19() {
|
static void tst19() {
|
||||||
environment env;
|
environment env;
|
||||||
init_frontend(env);
|
init_full_frontend(env);
|
||||||
type_inferer type_of(env);
|
type_inferer type_of(env);
|
||||||
type_checker type_of_slow(env);
|
type_checker type_of_slow(env);
|
||||||
expr t = mk_big(0, 10);
|
expr t = mk_big(0, 10);
|
||||||
|
@ -428,7 +428,7 @@ static void tst19() {
|
||||||
|
|
||||||
static void tst20() {
|
static void tst20() {
|
||||||
environment env;
|
environment env;
|
||||||
init_frontend(env);
|
init_full_frontend(env);
|
||||||
context ctx1, ctx2;
|
context ctx1, ctx2;
|
||||||
expr A = Const("A");
|
expr A = Const("A");
|
||||||
expr vec1 = Const("vec1");
|
expr vec1 = Const("vec1");
|
||||||
|
@ -456,7 +456,7 @@ static void tst20() {
|
||||||
|
|
||||||
static void tst21() {
|
static void tst21() {
|
||||||
environment env;
|
environment env;
|
||||||
init_frontend(env);
|
init_full_frontend(env);
|
||||||
metavar_env menv;
|
metavar_env menv;
|
||||||
buffer<unification_constraint> uc;
|
buffer<unification_constraint> uc;
|
||||||
type_inferer inferer(env);
|
type_inferer inferer(env);
|
||||||
|
|
|
@ -16,7 +16,7 @@ using namespace lean;
|
||||||
|
|
||||||
static void tst0() {
|
static void tst0() {
|
||||||
environment env;
|
environment env;
|
||||||
init_frontend(env);
|
init_full_frontend(env);
|
||||||
normalizer norm(env);
|
normalizer norm(env);
|
||||||
env->add_var("n", Nat);
|
env->add_var("n", Nat);
|
||||||
expr n = Const("n");
|
expr n = Const("n");
|
||||||
|
@ -47,7 +47,7 @@ static void tst0() {
|
||||||
|
|
||||||
static void tst1() {
|
static void tst1() {
|
||||||
environment env;
|
environment env;
|
||||||
init_frontend(env);
|
init_full_frontend(env);
|
||||||
expr e = mk_int_value(mpz(10));
|
expr e = mk_int_value(mpz(10));
|
||||||
lean_assert(is_int_value(e));
|
lean_assert(is_int_value(e));
|
||||||
lean_assert(type_check(e, env) == Int);
|
lean_assert(type_check(e, env) == Int);
|
||||||
|
@ -56,7 +56,7 @@ static void tst1() {
|
||||||
|
|
||||||
static void tst2() {
|
static void tst2() {
|
||||||
environment env;
|
environment env;
|
||||||
init_frontend(env);
|
init_full_frontend(env);
|
||||||
expr e = iAdd(iVal(10), iVal(30));
|
expr e = iAdd(iVal(10), iVal(30));
|
||||||
std::cout << e << "\n";
|
std::cout << e << "\n";
|
||||||
std::cout << normalize(e, env) << "\n";
|
std::cout << normalize(e, env) << "\n";
|
||||||
|
@ -73,7 +73,7 @@ static void tst2() {
|
||||||
|
|
||||||
static void tst3() {
|
static void tst3() {
|
||||||
environment env;
|
environment env;
|
||||||
init_frontend(env);
|
init_full_frontend(env);
|
||||||
expr e = iMul(iVal(10), iVal(30));
|
expr e = iMul(iVal(10), iVal(30));
|
||||||
std::cout << e << "\n";
|
std::cout << e << "\n";
|
||||||
std::cout << normalize(e, env) << "\n";
|
std::cout << normalize(e, env) << "\n";
|
||||||
|
@ -90,7 +90,7 @@ static void tst3() {
|
||||||
|
|
||||||
static void tst4() {
|
static void tst4() {
|
||||||
environment env;
|
environment env;
|
||||||
init_frontend(env);
|
init_full_frontend(env);
|
||||||
expr e = iSub(iVal(10), iVal(30));
|
expr e = iSub(iVal(10), iVal(30));
|
||||||
std::cout << e << "\n";
|
std::cout << e << "\n";
|
||||||
std::cout << normalize(e, env) << "\n";
|
std::cout << normalize(e, env) << "\n";
|
||||||
|
@ -107,7 +107,7 @@ static void tst4() {
|
||||||
|
|
||||||
static void tst5() {
|
static void tst5() {
|
||||||
environment env;
|
environment env;
|
||||||
init_frontend(env);
|
init_full_frontend(env);
|
||||||
env->add_var(name("a"), Int);
|
env->add_var(name("a"), Int);
|
||||||
expr e = Eq(iVal(3), iVal(4));
|
expr e = Eq(iVal(3), iVal(4));
|
||||||
std::cout << e << " --> " << normalize(e, env) << "\n";
|
std::cout << e << " --> " << normalize(e, env) << "\n";
|
||||||
|
|
|
@ -20,7 +20,7 @@ using namespace lean;
|
||||||
|
|
||||||
static void tst1() {
|
static void tst1() {
|
||||||
environment env;
|
environment env;
|
||||||
init_frontend(env);
|
init_full_frontend(env);
|
||||||
metavar_env menv;
|
metavar_env menv;
|
||||||
buffer<unification_constraint> ucs;
|
buffer<unification_constraint> ucs;
|
||||||
type_checker checker(env);
|
type_checker checker(env);
|
||||||
|
@ -75,7 +75,7 @@ static void tst2() {
|
||||||
?m4 in { Id, nat2int, nat2real }
|
?m4 in { Id, nat2int, nat2real }
|
||||||
*/
|
*/
|
||||||
environment env;
|
environment env;
|
||||||
init_frontend(env);
|
init_full_frontend(env);
|
||||||
metavar_env menv;
|
metavar_env menv;
|
||||||
buffer<unification_constraint> ucs;
|
buffer<unification_constraint> ucs;
|
||||||
type_checker checker(env);
|
type_checker checker(env);
|
||||||
|
@ -116,7 +116,7 @@ static void tst3() {
|
||||||
?m5 in { Id, int2real }
|
?m5 in { Id, int2real }
|
||||||
*/
|
*/
|
||||||
environment env;
|
environment env;
|
||||||
init_frontend(env);
|
init_full_frontend(env);
|
||||||
metavar_env menv;
|
metavar_env menv;
|
||||||
buffer<unification_constraint> ucs;
|
buffer<unification_constraint> ucs;
|
||||||
type_checker checker(env);
|
type_checker checker(env);
|
||||||
|
@ -158,7 +158,7 @@ static void tst4() {
|
||||||
?m6 in { Id, int2real }
|
?m6 in { Id, int2real }
|
||||||
*/
|
*/
|
||||||
environment env;
|
environment env;
|
||||||
init_frontend(env);
|
init_full_frontend(env);
|
||||||
metavar_env menv;
|
metavar_env menv;
|
||||||
buffer<unification_constraint> ucs;
|
buffer<unification_constraint> ucs;
|
||||||
type_checker checker(env);
|
type_checker checker(env);
|
||||||
|
@ -202,7 +202,7 @@ static void tst5() {
|
||||||
?m4 in { Id, int2real }
|
?m4 in { Id, int2real }
|
||||||
*/
|
*/
|
||||||
environment env;
|
environment env;
|
||||||
init_frontend(env);
|
init_full_frontend(env);
|
||||||
metavar_env menv;
|
metavar_env menv;
|
||||||
buffer<unification_constraint> ucs;
|
buffer<unification_constraint> ucs;
|
||||||
type_checker checker(env);
|
type_checker checker(env);
|
||||||
|
@ -239,7 +239,7 @@ static void tst6() {
|
||||||
Theorem T : (f a (f b b)) == a := Subst _ _ _ _ H1 H2
|
Theorem T : (f a (f b b)) == a := Subst _ _ _ _ H1 H2
|
||||||
*/
|
*/
|
||||||
environment env;
|
environment env;
|
||||||
init_frontend(env);
|
init_full_frontend(env);
|
||||||
metavar_env menv;
|
metavar_env menv;
|
||||||
buffer<unification_constraint> ucs;
|
buffer<unification_constraint> ucs;
|
||||||
type_checker checker(env);
|
type_checker checker(env);
|
||||||
|
@ -307,7 +307,7 @@ static void unsolved(expr const & e, environment const & env) {
|
||||||
static void tst7() {
|
static void tst7() {
|
||||||
std::cout << "\nTST 7\n";
|
std::cout << "\nTST 7\n";
|
||||||
environment env;
|
environment env;
|
||||||
init_frontend(env);
|
init_full_frontend(env);
|
||||||
expr A = Const("A");
|
expr A = Const("A");
|
||||||
expr B = Const("B");
|
expr B = Const("B");
|
||||||
expr F = Const("F");
|
expr F = Const("F");
|
||||||
|
@ -328,7 +328,7 @@ static void tst7() {
|
||||||
static void tst8() {
|
static void tst8() {
|
||||||
std::cout << "\nTST 8\n";
|
std::cout << "\nTST 8\n";
|
||||||
environment env;
|
environment env;
|
||||||
init_frontend(env);
|
init_full_frontend(env);
|
||||||
expr a = Const("a");
|
expr a = Const("a");
|
||||||
expr b = Const("b");
|
expr b = Const("b");
|
||||||
expr c = Const("c");
|
expr c = Const("c");
|
||||||
|
@ -354,7 +354,7 @@ static void tst8() {
|
||||||
static void tst9() {
|
static void tst9() {
|
||||||
std::cout << "\nTST 9\n";
|
std::cout << "\nTST 9\n";
|
||||||
environment env;
|
environment env;
|
||||||
init_frontend(env);
|
init_full_frontend(env);
|
||||||
expr Nat = Const("N");
|
expr Nat = Const("N");
|
||||||
env->add_var("N", Type());
|
env->add_var("N", Type());
|
||||||
env->add_var("vec", Nat >> Type());
|
env->add_var("vec", Nat >> Type());
|
||||||
|
@ -386,7 +386,7 @@ static void tst9() {
|
||||||
static void tst10() {
|
static void tst10() {
|
||||||
std::cout << "\nTST 10\n";
|
std::cout << "\nTST 10\n";
|
||||||
environment env;
|
environment env;
|
||||||
init_frontend(env);
|
init_full_frontend(env);
|
||||||
expr Nat = Const("N");
|
expr Nat = Const("N");
|
||||||
env->add_var("N", Type());
|
env->add_var("N", Type());
|
||||||
expr R = Const("R");
|
expr R = Const("R");
|
||||||
|
@ -410,7 +410,7 @@ static void tst10() {
|
||||||
static void tst11() {
|
static void tst11() {
|
||||||
std::cout << "\nTST 11\n";
|
std::cout << "\nTST 11\n";
|
||||||
environment env;
|
environment env;
|
||||||
init_frontend(env);
|
init_full_frontend(env);
|
||||||
expr A = Const("A");
|
expr A = Const("A");
|
||||||
expr B = Const("B");
|
expr B = Const("B");
|
||||||
expr a = Const("a");
|
expr a = Const("a");
|
||||||
|
@ -428,7 +428,7 @@ static void tst11() {
|
||||||
static void tst12() {
|
static void tst12() {
|
||||||
std::cout << "\nTST 12\n";
|
std::cout << "\nTST 12\n";
|
||||||
environment env;
|
environment env;
|
||||||
init_frontend(env);
|
init_full_frontend(env);
|
||||||
expr lst = Const("list");
|
expr lst = Const("list");
|
||||||
expr nil = Const("nil");
|
expr nil = Const("nil");
|
||||||
expr cons = Const("cons");
|
expr cons = Const("cons");
|
||||||
|
@ -449,7 +449,7 @@ static void tst12() {
|
||||||
static void tst13() {
|
static void tst13() {
|
||||||
std::cout << "\nTST 13\n";
|
std::cout << "\nTST 13\n";
|
||||||
environment env;
|
environment env;
|
||||||
init_frontend(env);
|
init_full_frontend(env);
|
||||||
expr B = Const("B");
|
expr B = Const("B");
|
||||||
expr A = Const("A");
|
expr A = Const("A");
|
||||||
expr x = Const("x");
|
expr x = Const("x");
|
||||||
|
@ -472,7 +472,7 @@ static void tst13() {
|
||||||
static void tst14() {
|
static void tst14() {
|
||||||
std::cout << "\nTST 14\n";
|
std::cout << "\nTST 14\n";
|
||||||
environment env;
|
environment env;
|
||||||
init_frontend(env);
|
init_full_frontend(env);
|
||||||
expr A = Const("A");
|
expr A = Const("A");
|
||||||
expr B = Const("B");
|
expr B = Const("B");
|
||||||
expr f = Const("f");
|
expr f = Const("f");
|
||||||
|
@ -513,7 +513,7 @@ static void tst14() {
|
||||||
static void tst15() {
|
static void tst15() {
|
||||||
std::cout << "\nTST 15\n";
|
std::cout << "\nTST 15\n";
|
||||||
environment env;
|
environment env;
|
||||||
init_frontend(env);
|
init_full_frontend(env);
|
||||||
expr A = Const("A");
|
expr A = Const("A");
|
||||||
expr B = Const("B");
|
expr B = Const("B");
|
||||||
expr C = Const("C");
|
expr C = Const("C");
|
||||||
|
@ -539,7 +539,7 @@ static void tst15() {
|
||||||
static void tst16() {
|
static void tst16() {
|
||||||
std::cout << "\nTST 16\n";
|
std::cout << "\nTST 16\n";
|
||||||
environment env;
|
environment env;
|
||||||
init_frontend(env);
|
init_full_frontend(env);
|
||||||
expr a = Const("a");
|
expr a = Const("a");
|
||||||
expr b = Const("b");
|
expr b = Const("b");
|
||||||
expr c = Const("c");
|
expr c = Const("c");
|
||||||
|
@ -560,7 +560,7 @@ static void tst16() {
|
||||||
EqTIntro(c, EqMP(a, c, Symm(Bool, c, a, Trans(Bool, c, b, a, Symm(Bool, b, c, H2), Symm(Bool, a, b, H1))), H3))),
|
EqTIntro(c, EqMP(a, c, Symm(Bool, c, a, Trans(Bool, c, b, a, Symm(Bool, b, c, H2), Symm(Bool, a, b, H1))), H3))),
|
||||||
env);
|
env);
|
||||||
environment env2;
|
environment env2;
|
||||||
init_frontend(env2);
|
init_full_frontend(env2);
|
||||||
success(Fun({{a, Bool}, {b, Bool}, {c, Bool}, {H1, Eq(a, b)}, {H2, Eq(b, c)}, {H3, a}},
|
success(Fun({{a, Bool}, {b, Bool}, {c, Bool}, {H1, Eq(a, b)}, {H2, Eq(b, c)}, {H3, a}},
|
||||||
EqTIntro(_, EqMP(_, _, Symm(_, _, _, Trans(_, _, _, _, Symm(_, _, _, H2), Symm(_, _, _, H1))), H3))),
|
EqTIntro(_, EqMP(_, _, Symm(_, _, _, Trans(_, _, _, _, Symm(_, _, _, H2), Symm(_, _, _, H1))), H3))),
|
||||||
Fun({{a, Bool}, {b, Bool}, {c, Bool}, {H1, Eq(a, b)}, {H2, Eq(b, c)}, {H3, a}},
|
Fun({{a, Bool}, {b, Bool}, {c, Bool}, {H1, Eq(a, b)}, {H2, Eq(b, c)}, {H3, a}},
|
||||||
|
@ -577,7 +577,7 @@ static void tst16() {
|
||||||
void tst17() {
|
void tst17() {
|
||||||
std::cout << "\nTST 17\n";
|
std::cout << "\nTST 17\n";
|
||||||
environment env;
|
environment env;
|
||||||
init_frontend(env);
|
init_full_frontend(env);
|
||||||
expr A = Const("A");
|
expr A = Const("A");
|
||||||
expr B = Const("B");
|
expr B = Const("B");
|
||||||
expr a = Const("a");
|
expr a = Const("a");
|
||||||
|
@ -592,7 +592,7 @@ void tst17() {
|
||||||
void tst18() {
|
void tst18() {
|
||||||
std::cout << "\nTST 18\n";
|
std::cout << "\nTST 18\n";
|
||||||
environment env;
|
environment env;
|
||||||
init_frontend(env);
|
init_full_frontend(env);
|
||||||
expr A = Const("A");
|
expr A = Const("A");
|
||||||
expr h = Const("h");
|
expr h = Const("h");
|
||||||
expr f = Const("f");
|
expr f = Const("f");
|
||||||
|
@ -606,7 +606,7 @@ void tst18() {
|
||||||
void tst19() {
|
void tst19() {
|
||||||
std::cout << "\nTST 19\n";
|
std::cout << "\nTST 19\n";
|
||||||
environment env;
|
environment env;
|
||||||
init_frontend(env);
|
init_full_frontend(env);
|
||||||
expr R = Const("R");
|
expr R = Const("R");
|
||||||
expr A = Const("A");
|
expr A = Const("A");
|
||||||
expr r = Const("r");
|
expr r = Const("r");
|
||||||
|
@ -633,7 +633,7 @@ void tst19() {
|
||||||
void tst20() {
|
void tst20() {
|
||||||
std::cout << "\nTST 20\n";
|
std::cout << "\nTST 20\n";
|
||||||
environment env;
|
environment env;
|
||||||
init_frontend(env);
|
init_full_frontend(env);
|
||||||
metavar_env menv;
|
metavar_env menv;
|
||||||
expr N = Const("N1");
|
expr N = Const("N1");
|
||||||
expr M = Const("M1");
|
expr M = Const("M1");
|
||||||
|
@ -666,7 +666,7 @@ void tst20() {
|
||||||
void tst21() {
|
void tst21() {
|
||||||
std::cout << "\nTST 21\n";
|
std::cout << "\nTST 21\n";
|
||||||
environment env;
|
environment env;
|
||||||
init_frontend(env);
|
init_full_frontend(env);
|
||||||
metavar_env menv;
|
metavar_env menv;
|
||||||
expr N = Const("N");
|
expr N = Const("N");
|
||||||
expr M = Const("M");
|
expr M = Const("M");
|
||||||
|
@ -698,7 +698,7 @@ void tst21() {
|
||||||
void tst22() {
|
void tst22() {
|
||||||
std::cout << "\nTST 22\n";
|
std::cout << "\nTST 22\n";
|
||||||
environment env;
|
environment env;
|
||||||
init_frontend(env);
|
init_full_frontend(env);
|
||||||
metavar_env menv;
|
metavar_env menv;
|
||||||
expr N = Const("N");
|
expr N = Const("N");
|
||||||
env->add_var("N", Type());
|
env->add_var("N", Type());
|
||||||
|
@ -733,7 +733,7 @@ void tst22() {
|
||||||
void tst23() {
|
void tst23() {
|
||||||
std::cout << "\nTST 23\n";
|
std::cout << "\nTST 23\n";
|
||||||
environment env;
|
environment env;
|
||||||
init_frontend(env);
|
init_full_frontend(env);
|
||||||
metavar_env menv;
|
metavar_env menv;
|
||||||
expr N = Const("N");
|
expr N = Const("N");
|
||||||
env->add_var("N", Type());
|
env->add_var("N", Type());
|
||||||
|
@ -763,7 +763,7 @@ void tst23() {
|
||||||
void tst24() {
|
void tst24() {
|
||||||
std::cout << "\nTST 24\n";
|
std::cout << "\nTST 24\n";
|
||||||
environment env;
|
environment env;
|
||||||
init_frontend(env);
|
init_full_frontend(env);
|
||||||
metavar_env menv;
|
metavar_env menv;
|
||||||
expr N = Const("N");
|
expr N = Const("N");
|
||||||
env->add_var("N", Type());
|
env->add_var("N", Type());
|
||||||
|
@ -783,7 +783,7 @@ void tst24() {
|
||||||
void tst25() {
|
void tst25() {
|
||||||
std::cout << "\nTST 25\n";
|
std::cout << "\nTST 25\n";
|
||||||
environment env;
|
environment env;
|
||||||
init_frontend(env);
|
init_full_frontend(env);
|
||||||
metavar_env menv;
|
metavar_env menv;
|
||||||
expr N = Const("N");
|
expr N = Const("N");
|
||||||
env->add_var("N", Type());
|
env->add_var("N", Type());
|
||||||
|
@ -819,7 +819,7 @@ void tst26() {
|
||||||
Axiom H : g _ a = a
|
Axiom H : g _ a = a
|
||||||
*/
|
*/
|
||||||
environment env;
|
environment env;
|
||||||
init_frontend(env);
|
init_full_frontend(env);
|
||||||
metavar_env menv;
|
metavar_env menv;
|
||||||
buffer<unification_constraint> ucs;
|
buffer<unification_constraint> ucs;
|
||||||
type_checker checker(env);
|
type_checker checker(env);
|
||||||
|
@ -849,7 +849,7 @@ void tst27() {
|
||||||
fun f : _, eq _ ((g _ f) a) a
|
fun f : _, eq _ ((g _ f) a) a
|
||||||
*/
|
*/
|
||||||
environment env;
|
environment env;
|
||||||
init_frontend(env);
|
init_full_frontend(env);
|
||||||
metavar_env menv;
|
metavar_env menv;
|
||||||
buffer<unification_constraint> ucs;
|
buffer<unification_constraint> ucs;
|
||||||
type_checker checker(env);
|
type_checker checker(env);
|
||||||
|
|
|
@ -38,7 +38,7 @@ static void theorem_rewriter1_tst() {
|
||||||
Eq(nAdd(Const("x"), Const("y")), nAdd(Const("y"), Const("x")))));
|
Eq(nAdd(Const("x"), Const("y")), nAdd(Const("y"), Const("x")))));
|
||||||
expr add_comm_thm_body = Const("ADD_COMM");
|
expr add_comm_thm_body = Const("ADD_COMM");
|
||||||
|
|
||||||
environment env; init_frontend(env);
|
environment env; init_full_frontend(env);
|
||||||
env->add_var("a", Nat);
|
env->add_var("a", Nat);
|
||||||
env->add_var("b", Nat);
|
env->add_var("b", Nat);
|
||||||
env->add_axiom("ADD_COMM", add_comm_thm_type); // ADD_COMM : Pi (x, y: N), x + y = y + z
|
env->add_axiom("ADD_COMM", add_comm_thm_type); // ADD_COMM : Pi (x, y: N), x + y = y + z
|
||||||
|
@ -70,7 +70,7 @@ static void theorem_rewriter2_tst() {
|
||||||
Eq(nAdd(Const("x"), zero), Const("x")));
|
Eq(nAdd(Const("x"), zero), Const("x")));
|
||||||
expr add_id_thm_body = Const("ADD_ID");
|
expr add_id_thm_body = Const("ADD_ID");
|
||||||
|
|
||||||
environment env; init_frontend(env);
|
environment env; init_full_frontend(env);
|
||||||
env->add_var("a", Nat);
|
env->add_var("a", Nat);
|
||||||
env->add_axiom("ADD_ID", add_id_thm_type); // ADD_ID : Pi (x : N), x = x + 0
|
env->add_axiom("ADD_ID", add_id_thm_type); // ADD_ID : Pi (x : N), x = x + 0
|
||||||
|
|
||||||
|
@ -108,7 +108,7 @@ static void then_rewriter1_tst() {
|
||||||
Eq(nAdd(Const("x"), zero), Const("x")));
|
Eq(nAdd(Const("x"), zero), Const("x")));
|
||||||
expr add_id_thm_body = Const("ADD_ID");
|
expr add_id_thm_body = Const("ADD_ID");
|
||||||
|
|
||||||
environment env; init_frontend(env);
|
environment env; init_full_frontend(env);
|
||||||
env->add_var("a", Nat);
|
env->add_var("a", Nat);
|
||||||
env->add_axiom("ADD_COMM", add_comm_thm_type); // ADD_COMM : Pi (x, y: N), x + y = y + z
|
env->add_axiom("ADD_COMM", add_comm_thm_type); // ADD_COMM : Pi (x, y: N), x + y = y + z
|
||||||
env->add_axiom("ADD_ID", add_id_thm_type); // ADD_ID : Pi (x : N), x = x + 0
|
env->add_axiom("ADD_ID", add_id_thm_type); // ADD_ID : Pi (x : N), x = x + 0
|
||||||
|
@ -164,7 +164,7 @@ static void then_rewriter2_tst() {
|
||||||
Eq(nAdd(Const("x"), zero), Const("x")));
|
Eq(nAdd(Const("x"), zero), Const("x")));
|
||||||
expr add_id_thm_body = Const("ADD_ID");
|
expr add_id_thm_body = Const("ADD_ID");
|
||||||
|
|
||||||
environment env; init_frontend(env);
|
environment env; init_full_frontend(env);
|
||||||
env->add_var("a", Nat);
|
env->add_var("a", Nat);
|
||||||
env->add_axiom("ADD_ASSOC", add_assoc_thm_type); // ADD_ASSOC : Pi (x, y, z : N), x + (y + z) = (x + y) + z
|
env->add_axiom("ADD_ASSOC", add_assoc_thm_type); // ADD_ASSOC : Pi (x, y, z : N), x + (y + z) = (x + y) + z
|
||||||
env->add_axiom("ADD_COMM", add_comm_thm_type); // ADD_COMM : Pi (x, y: N), x + y = y + z
|
env->add_axiom("ADD_COMM", add_comm_thm_type); // ADD_COMM : Pi (x, y: N), x + y = y + z
|
||||||
|
@ -223,7 +223,7 @@ static void orelse_rewriter1_tst() {
|
||||||
Eq(nAdd(Const("x"), zero), Const("x")));
|
Eq(nAdd(Const("x"), zero), Const("x")));
|
||||||
expr add_id_thm_body = Const("ADD_ID");
|
expr add_id_thm_body = Const("ADD_ID");
|
||||||
|
|
||||||
environment env; init_frontend(env);
|
environment env; init_full_frontend(env);
|
||||||
env->add_var("a", Nat);
|
env->add_var("a", Nat);
|
||||||
env->add_var("b", Nat);
|
env->add_var("b", Nat);
|
||||||
env->add_axiom("ADD_COMM", add_comm_thm_type); // ADD_COMM : Pi (x, y: N), x + y = y + z
|
env->add_axiom("ADD_COMM", add_comm_thm_type); // ADD_COMM : Pi (x, y: N), x + y = y + z
|
||||||
|
@ -270,7 +270,7 @@ static void orelse_rewriter2_tst() {
|
||||||
Eq(nAdd(Const("x"), zero), Const("x")));
|
Eq(nAdd(Const("x"), zero), Const("x")));
|
||||||
expr add_id_thm_body = Const("ADD_ID");
|
expr add_id_thm_body = Const("ADD_ID");
|
||||||
|
|
||||||
environment env; init_frontend(env);
|
environment env; init_full_frontend(env);
|
||||||
env->add_var("a", Nat);
|
env->add_var("a", Nat);
|
||||||
env->add_var("b", Nat);
|
env->add_var("b", Nat);
|
||||||
env->add_axiom("ADD_ASSOC", add_assoc_thm_type);
|
env->add_axiom("ADD_ASSOC", add_assoc_thm_type);
|
||||||
|
@ -319,7 +319,7 @@ static void try_rewriter1_tst() {
|
||||||
Eq(nAdd(Const("x"), zero), Const("x")));
|
Eq(nAdd(Const("x"), zero), Const("x")));
|
||||||
expr add_id_thm_body = Const("ADD_ID");
|
expr add_id_thm_body = Const("ADD_ID");
|
||||||
|
|
||||||
environment env; init_frontend(env);
|
environment env; init_full_frontend(env);
|
||||||
env->add_var("a", Nat);
|
env->add_var("a", Nat);
|
||||||
env->add_var("b", Nat);
|
env->add_var("b", Nat);
|
||||||
env->add_axiom("ADD_COMM", add_comm_thm_type); // ADD_COMM : Pi (x, y: N), x + y = y + z
|
env->add_axiom("ADD_COMM", add_comm_thm_type); // ADD_COMM : Pi (x, y: N), x + y = y + z
|
||||||
|
@ -370,7 +370,7 @@ static void try_rewriter2_tst() {
|
||||||
Eq(nAdd(Const("x"), zero), Const("x")));
|
Eq(nAdd(Const("x"), zero), Const("x")));
|
||||||
expr add_id_thm_body = Const("ADD_ID");
|
expr add_id_thm_body = Const("ADD_ID");
|
||||||
|
|
||||||
environment env; init_frontend(env);
|
environment env; init_full_frontend(env);
|
||||||
env->add_var("a", Nat);
|
env->add_var("a", Nat);
|
||||||
env->add_var("b", Nat);
|
env->add_var("b", Nat);
|
||||||
env->add_axiom("ADD_COMM", add_comm_thm_type); // ADD_COMM : Pi (x, y: N), x + y = y + z
|
env->add_axiom("ADD_COMM", add_comm_thm_type); // ADD_COMM : Pi (x, y: N), x + y = y + z
|
||||||
|
@ -416,7 +416,7 @@ static void app_rewriter1_tst() {
|
||||||
Eq(nAdd(Const("x"), Const("y")), nAdd(Const("y"), Const("x")))));
|
Eq(nAdd(Const("x"), Const("y")), nAdd(Const("y"), Const("x")))));
|
||||||
expr add_comm_thm_body = Const("ADD_COMM");
|
expr add_comm_thm_body = Const("ADD_COMM");
|
||||||
|
|
||||||
environment env; init_frontend(env);
|
environment env; init_full_frontend(env);
|
||||||
env->add_var("f1", Nat >> Nat);
|
env->add_var("f1", Nat >> Nat);
|
||||||
env->add_var("f2", Nat >> (Nat >> Nat));
|
env->add_var("f2", Nat >> (Nat >> Nat));
|
||||||
env->add_var("f3", Nat >> (Nat >> (Nat >> Nat)));
|
env->add_var("f3", Nat >> (Nat >> (Nat >> Nat)));
|
||||||
|
@ -506,7 +506,7 @@ static void repeat_rewriter1_tst() {
|
||||||
Eq(nAdd(Const("x"), zero), Const("x")));
|
Eq(nAdd(Const("x"), zero), Const("x")));
|
||||||
expr add_id_thm_body = Const("ADD_ID");
|
expr add_id_thm_body = Const("ADD_ID");
|
||||||
|
|
||||||
environment env; init_frontend(env);
|
environment env; init_full_frontend(env);
|
||||||
env->add_var("a", Nat);
|
env->add_var("a", Nat);
|
||||||
env->add_axiom("ADD_ASSOC", add_assoc_thm_type); // ADD_ASSOC : Pi (x, y, z : N), x + (y + z) = (x + y) + z
|
env->add_axiom("ADD_ASSOC", add_assoc_thm_type); // ADD_ASSOC : Pi (x, y, z : N), x + (y + z) = (x + y) + z
|
||||||
env->add_axiom("ADD_COMM", add_comm_thm_type); // ADD_COMM : Pi (x, y: N), x + y = y + z
|
env->add_axiom("ADD_COMM", add_comm_thm_type); // ADD_COMM : Pi (x, y: N), x + y = y + z
|
||||||
|
@ -564,7 +564,7 @@ static void repeat_rewriter2_tst() {
|
||||||
Eq(nAdd(Const("x"), zero), Const("x")));
|
Eq(nAdd(Const("x"), zero), Const("x")));
|
||||||
expr add_id_thm_body = Const("ADD_ID");
|
expr add_id_thm_body = Const("ADD_ID");
|
||||||
|
|
||||||
environment env; init_frontend(env);
|
environment env; init_full_frontend(env);
|
||||||
env->add_var("a", Nat);
|
env->add_var("a", Nat);
|
||||||
env->add_axiom("ADD_ASSOC", add_assoc_thm_type); // ADD_ASSOC : Pi (x, y, z : N), x + (y + z) = (x + y) + z
|
env->add_axiom("ADD_ASSOC", add_assoc_thm_type); // ADD_ASSOC : Pi (x, y, z : N), x + (y + z) = (x + y) + z
|
||||||
env->add_axiom("ADD_COMM", add_comm_thm_type); // ADD_COMM : Pi (x, y: N), x + y = y + z
|
env->add_axiom("ADD_COMM", add_comm_thm_type); // ADD_COMM : Pi (x, y: N), x + y = y + z
|
||||||
|
@ -611,7 +611,7 @@ static void depth_rewriter1_tst() {
|
||||||
Eq(nAdd(Const("x"), Const("y")), nAdd(Const("y"), Const("x")))));
|
Eq(nAdd(Const("x"), Const("y")), nAdd(Const("y"), Const("x")))));
|
||||||
expr add_comm_thm_body = Const("ADD_COMM");
|
expr add_comm_thm_body = Const("ADD_COMM");
|
||||||
|
|
||||||
environment env; init_frontend(env);
|
environment env; init_full_frontend(env);
|
||||||
env->add_var("f1", Nat >> Nat);
|
env->add_var("f1", Nat >> Nat);
|
||||||
env->add_var("f2", Nat >> (Nat >> Nat));
|
env->add_var("f2", Nat >> (Nat >> Nat));
|
||||||
env->add_var("f3", Nat >> (Nat >> (Nat >> Nat)));
|
env->add_var("f3", Nat >> (Nat >> (Nat >> Nat)));
|
||||||
|
@ -658,7 +658,7 @@ static void lambda_body_rewriter_tst() {
|
||||||
Eq(nAdd(Const("x"), Const("y")), nAdd(Const("y"), Const("x")))));
|
Eq(nAdd(Const("x"), Const("y")), nAdd(Const("y"), Const("x")))));
|
||||||
expr add_comm_thm_body = Const("ADD_COMM");
|
expr add_comm_thm_body = Const("ADD_COMM");
|
||||||
|
|
||||||
environment env; init_frontend(env);
|
environment env; init_full_frontend(env);
|
||||||
env->add_var("f1", Nat >> Nat);
|
env->add_var("f1", Nat >> Nat);
|
||||||
env->add_var("f2", Nat >> (Nat >> Nat));
|
env->add_var("f2", Nat >> (Nat >> Nat));
|
||||||
env->add_var("f3", Nat >> (Nat >> (Nat >> Nat)));
|
env->add_var("f3", Nat >> (Nat >> (Nat >> Nat)));
|
||||||
|
@ -703,7 +703,7 @@ static void lambda_type_rewriter_tst() {
|
||||||
// Result : fun (x : vec(Nat, b + a)), x
|
// Result : fun (x : vec(Nat, b + a)), x
|
||||||
cout << "=== lambda_type_rewriter_tst() ===" << std::endl;
|
cout << "=== lambda_type_rewriter_tst() ===" << std::endl;
|
||||||
context ctx;
|
context ctx;
|
||||||
environment env; init_frontend(env);
|
environment env; init_full_frontend(env);
|
||||||
expr a = Const("a"); // a : Nat
|
expr a = Const("a"); // a : Nat
|
||||||
env->add_var("a", Nat);
|
env->add_var("a", Nat);
|
||||||
expr b = Const("b"); // b : Nat
|
expr b = Const("b"); // b : Nat
|
||||||
|
|
|
@ -49,7 +49,7 @@ static void check_failure(tactic t, ro_environment const & env, io_state const &
|
||||||
static void tst1() {
|
static void tst1() {
|
||||||
environment env;
|
environment env;
|
||||||
io_state io(options(), mk_simple_formatter());
|
io_state io(options(), mk_simple_formatter());
|
||||||
init_frontend(env);
|
init_full_frontend(env);
|
||||||
env->add_var("p", Bool);
|
env->add_var("p", Bool);
|
||||||
env->add_var("q", Bool);
|
env->add_var("q", Bool);
|
||||||
expr p = Const("p");
|
expr p = Const("p");
|
||||||
|
@ -115,7 +115,7 @@ static void tst1() {
|
||||||
static void tst2() {
|
static void tst2() {
|
||||||
environment env;
|
environment env;
|
||||||
io_state io(options(), mk_simple_formatter());
|
io_state io(options(), mk_simple_formatter());
|
||||||
init_frontend(env);
|
init_full_frontend(env);
|
||||||
env->add_var("p", Bool);
|
env->add_var("p", Bool);
|
||||||
env->add_var("q", Bool);
|
env->add_var("q", Bool);
|
||||||
env->add_var("r", Bool);
|
env->add_var("r", Bool);
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
Import int.
|
||||||
Axiom PlusComm(a b : Int) : a + b == b + a.
|
Axiom PlusComm(a b : Int) : a + b == b + a.
|
||||||
Variable a : Int.
|
Variable a : Int.
|
||||||
Check (Abst (fun x : Int, (PlusComm a x))).
|
Check (Abst (fun x : Int, (PlusComm a x))).
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
Set: pp::colors
|
Set: pp::colors
|
||||||
Set: pp::unicode
|
Set: pp::unicode
|
||||||
|
Imported 'int'
|
||||||
Assumed: PlusComm
|
Assumed: PlusComm
|
||||||
Assumed: a
|
Assumed: a
|
||||||
Abst (λ x : ℤ, PlusComm a x) : (λ x : ℤ, a + x) == (λ x : ℤ, x + a)
|
Abst (λ x : ℤ, PlusComm a x) : (λ x : ℤ, a + x) == (λ x : ℤ, x + a)
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
(** import("tactic.lua") **)
|
Import tactic.
|
||||||
|
Import int.
|
||||||
|
|
||||||
Variable f : Int -> Int -> Bool
|
Variable f : Int -> Int -> Bool
|
||||||
Variable P : Int -> Int -> Bool
|
Variable P : Int -> Int -> Bool
|
||||||
|
|
|
@ -1,5 +1,7 @@
|
||||||
Set: pp::colors
|
Set: pp::colors
|
||||||
Set: pp::unicode
|
Set: pp::unicode
|
||||||
|
Imported 'tactic'
|
||||||
|
Imported 'int'
|
||||||
Assumed: f
|
Assumed: f
|
||||||
Assumed: P
|
Assumed: P
|
||||||
Assumed: Ax1
|
Assumed: Ax1
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
Import int.
|
||||||
Check 10 + 20
|
Check 10 + 20
|
||||||
Check 10
|
Check 10
|
||||||
Check 10 - 20
|
Check 10 - 20
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
Set: pp::colors
|
Set: pp::colors
|
||||||
Set: pp::unicode
|
Set: pp::unicode
|
||||||
|
Imported 'int'
|
||||||
10 + 20 : ℕ
|
10 + 20 : ℕ
|
||||||
10 : ℕ
|
10 : ℕ
|
||||||
10 - 20 : ℤ
|
10 - 20 : ℤ
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
Import int.
|
||||||
|
Import real.
|
||||||
Show 1/2
|
Show 1/2
|
||||||
Eval 4/6
|
Eval 4/6
|
||||||
Show 3 div 2
|
Show 3 div 2
|
||||||
|
|
|
@ -1,5 +1,7 @@
|
||||||
Set: pp::colors
|
Set: pp::colors
|
||||||
Set: pp::unicode
|
Set: pp::unicode
|
||||||
|
Imported 'int'
|
||||||
|
Imported 'real'
|
||||||
1 / 2
|
1 / 2
|
||||||
2/3
|
2/3
|
||||||
3 div 2
|
3 div 2
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
Import int.
|
||||||
Eval 8 mod 3
|
Eval 8 mod 3
|
||||||
Eval 8 div 4
|
Eval 8 div 4
|
||||||
Eval 7 div 3
|
Eval 7 div 3
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
Set: pp::colors
|
Set: pp::colors
|
||||||
Set: pp::unicode
|
Set: pp::unicode
|
||||||
|
Imported 'int'
|
||||||
2
|
2
|
||||||
2
|
2
|
||||||
2
|
2
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
Import int.
|
||||||
SetOption pp::unicode false
|
SetOption pp::unicode false
|
||||||
Show 3 | 6
|
Show 3 | 6
|
||||||
Eval 3 | 6
|
Eval 3 | 6
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
Set: pp::colors
|
Set: pp::colors
|
||||||
Set: pp::unicode
|
Set: pp::unicode
|
||||||
|
Imported 'int'
|
||||||
Set: pp::unicode
|
Set: pp::unicode
|
||||||
3 | 6
|
3 | 6
|
||||||
true
|
true
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
Import int.
|
||||||
Eval | -2 |
|
Eval | -2 |
|
||||||
(*
|
(*
|
||||||
Unfortunately, we can't write |-2|, because |- is considered a single token.
|
Unfortunately, we can't write |-2|, because |- is considered a single token.
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
Set: pp::colors
|
Set: pp::colors
|
||||||
Set: pp::unicode
|
Set: pp::unicode
|
||||||
|
Imported 'int'
|
||||||
2
|
2
|
||||||
3
|
3
|
||||||
Defined: x
|
Defined: x
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
Import real.
|
||||||
Eval 10.3
|
Eval 10.3
|
||||||
Eval 0.3
|
Eval 0.3
|
||||||
Eval 0.3 + 0.1
|
Eval 0.3 + 0.1
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
Set: pp::colors
|
Set: pp::colors
|
||||||
Set: pp::unicode
|
Set: pp::unicode
|
||||||
|
Imported 'real'
|
||||||
103/10
|
103/10
|
||||||
3/10
|
3/10
|
||||||
2/5
|
2/5
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
Import int.
|
||||||
Show (Int -> Int) -> Int
|
Show (Int -> Int) -> Int
|
||||||
Show Int -> Int -> Int
|
Show Int -> Int -> Int
|
||||||
Show Int -> (Int -> Int)
|
Show Int -> (Int -> Int)
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
Set: pp::colors
|
Set: pp::colors
|
||||||
Set: pp::unicode
|
Set: pp::unicode
|
||||||
|
Imported 'int'
|
||||||
(ℤ → ℤ) → ℤ
|
(ℤ → ℤ) → ℤ
|
||||||
ℤ → ℤ → ℤ
|
ℤ → ℤ → ℤ
|
||||||
ℤ → ℤ → ℤ
|
ℤ → ℤ → ℤ
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
Import int.
|
||||||
Variable g : Pi A : Type, A -> A.
|
Variable g : Pi A : Type, A -> A.
|
||||||
Variables a b : Int
|
Variables a b : Int
|
||||||
Axiom H1 : g _ a > 0
|
Axiom H1 : g _ a > 0
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
Set: pp::colors
|
Set: pp::colors
|
||||||
Set: pp::unicode
|
Set: pp::unicode
|
||||||
|
Imported 'int'
|
||||||
Assumed: g
|
Assumed: g
|
||||||
Assumed: a
|
Assumed: a
|
||||||
Assumed: b
|
Assumed: b
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
Import int.
|
||||||
Variable list : Type -> Type
|
Variable list : Type -> Type
|
||||||
Variable nil {A : Type} : list A
|
Variable nil {A : Type} : list A
|
||||||
Variable cons {A : Type} (head : A) (tail : list A) : list A
|
Variable cons {A : Type} (head : A) (tail : list A) : list A
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
Set: pp::colors
|
Set: pp::colors
|
||||||
Set: pp::unicode
|
Set: pp::unicode
|
||||||
|
Imported 'int'
|
||||||
Assumed: list
|
Assumed: list
|
||||||
Assumed: nil
|
Assumed: nil
|
||||||
Assumed: cons
|
Assumed: cons
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
Import int.
|
||||||
Variable list : Type -> Type
|
Variable list : Type -> Type
|
||||||
Variable nil {A : Type} : list A
|
Variable nil {A : Type} : list A
|
||||||
Variable cons {A : Type} (head : A) (tail : list A) : list A
|
Variable cons {A : Type} (head : A) (tail : list A) : list A
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
Set: pp::colors
|
Set: pp::colors
|
||||||
Set: pp::unicode
|
Set: pp::unicode
|
||||||
|
Imported 'int'
|
||||||
Assumed: list
|
Assumed: list
|
||||||
Assumed: nil
|
Assumed: nil
|
||||||
Assumed: cons
|
Assumed: cons
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
Import int.
|
||||||
Variable f {A : Type} (a : A) : A
|
Variable f {A : Type} (a : A) : A
|
||||||
Variable a : Int
|
Variable a : Int
|
||||||
Definition tst : Bool := (fun x, (f x) > 10) a
|
Definition tst : Bool := (fun x, (f x) > 10) a
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
Set: pp::colors
|
Set: pp::colors
|
||||||
Set: pp::unicode
|
Set: pp::unicode
|
||||||
|
Imported 'int'
|
||||||
Assumed: f
|
Assumed: f
|
||||||
Assumed: a
|
Assumed: a
|
||||||
Defined: tst
|
Defined: tst
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
Import int.
|
||||||
Variable g {A : Type} (a : A) : A
|
Variable g {A : Type} (a : A) : A
|
||||||
Variable a : Int
|
Variable a : Int
|
||||||
Variable b : Int
|
Variable b : Int
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
Set: pp::colors
|
Set: pp::colors
|
||||||
Set: pp::unicode
|
Set: pp::unicode
|
||||||
|
Imported 'int'
|
||||||
Assumed: g
|
Assumed: g
|
||||||
Assumed: a
|
Assumed: a
|
||||||
Assumed: b
|
Assumed: b
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
Import int.
|
||||||
|
Import real.
|
||||||
Variable f {A : Type} (a : A) : A
|
Variable f {A : Type} (a : A) : A
|
||||||
Variable a : Int
|
Variable a : Int
|
||||||
Variable b : Real
|
Variable b : Real
|
||||||
|
|
|
@ -1,5 +1,7 @@
|
||||||
Set: pp::colors
|
Set: pp::colors
|
||||||
Set: pp::unicode
|
Set: pp::unicode
|
||||||
|
Imported 'int'
|
||||||
|
Imported 'real'
|
||||||
Assumed: f
|
Assumed: f
|
||||||
Assumed: a
|
Assumed: a
|
||||||
Assumed: b
|
Assumed: b
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
Import real.
|
||||||
Variable f {A : Type} (a b : A) : Bool
|
Variable f {A : Type} (a b : A) : Bool
|
||||||
Variable a : Int
|
Variable a : Int
|
||||||
Variable b : Real
|
Variable b : Real
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
Set: pp::colors
|
Set: pp::colors
|
||||||
Set: pp::unicode
|
Set: pp::unicode
|
||||||
|
Imported 'real'
|
||||||
Assumed: f
|
Assumed: f
|
||||||
Assumed: a
|
Assumed: a
|
||||||
Assumed: b
|
Assumed: b
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
Import int.
|
||||||
Variable list : Type → Type
|
Variable list : Type → Type
|
||||||
Variable nil {A : Type} : list A
|
Variable nil {A : Type} : list A
|
||||||
Variable cons {A : Type} (head : A) (tail : list A) : list A
|
Variable cons {A : Type} (head : A) (tail : list A) : list A
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
Set: pp::colors
|
Set: pp::colors
|
||||||
Set: pp::unicode
|
Set: pp::unicode
|
||||||
|
Imported 'int'
|
||||||
Assumed: list
|
Assumed: list
|
||||||
Assumed: nil
|
Assumed: nil
|
||||||
Assumed: cons
|
Assumed: cons
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
Import cast
|
Import cast.
|
||||||
|
Import int.
|
||||||
|
|
||||||
Variable vector : Type -> Nat -> Type
|
Variable vector : Type -> Nat -> Type
|
||||||
Axiom N0 (n : Nat) : n + 0 = n
|
Axiom N0 (n : Nat) : n + 0 = n
|
||||||
|
|
|
@ -1,13 +1,14 @@
|
||||||
Set: pp::colors
|
Set: pp::colors
|
||||||
Set: pp::unicode
|
Set: pp::unicode
|
||||||
Imported 'cast'
|
Imported 'cast'
|
||||||
|
Imported 'int'
|
||||||
Assumed: vector
|
Assumed: vector
|
||||||
Assumed: N0
|
Assumed: N0
|
||||||
Proved: V0
|
Proved: V0
|
||||||
Assumed: f
|
Assumed: f
|
||||||
Assumed: m
|
Assumed: m
|
||||||
Assumed: v1
|
Assumed: v1
|
||||||
Error (line: 14, pos: 6) type mismatch at application
|
Error (line: 15, pos: 6) type mismatch at application
|
||||||
f m v1
|
f m v1
|
||||||
Function type:
|
Function type:
|
||||||
Π (n : ℕ), vector ℤ n → ℤ
|
Π (n : ℕ), vector ℤ n → ℤ
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
Import int.
|
||||||
Definition id (A : Type) : (Type U) := A.
|
Definition id (A : Type) : (Type U) := A.
|
||||||
Variable p : (Int -> Int) -> Bool.
|
Variable p : (Int -> Int) -> Bool.
|
||||||
Check fun (x : id Int), x.
|
Check fun (x : id Int), x.
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
Set: pp::colors
|
Set: pp::colors
|
||||||
Set: pp::unicode
|
Set: pp::unicode
|
||||||
|
Imported 'int'
|
||||||
Defined: id
|
Defined: id
|
||||||
Assumed: p
|
Assumed: p
|
||||||
λ x : id ℤ, x : id ℤ → id ℤ
|
λ x : id ℤ, x : id ℤ → id ℤ
|
||||||
|
|
|
@ -1,10 +1,6 @@
|
||||||
Set: pp::colors
|
Set: pp::colors
|
||||||
Set: pp::unicode
|
Set: pp::unicode
|
||||||
Assumed: f
|
Assumed: f
|
||||||
Failed to solve
|
|
||||||
⊢ (?M::1 ≈ λ x : ℕ, x) ⊕ (?M::1 ≈ nat_to_int) ⊕ (?M::1 ≈ nat_to_real)
|
|
||||||
(line: 4: pos: 8) Coercion for
|
|
||||||
10
|
|
||||||
Failed to solve
|
Failed to solve
|
||||||
⊢ Bool ≺ ℕ
|
⊢ Bool ≺ ℕ
|
||||||
Substitution
|
Substitution
|
||||||
|
@ -13,100 +9,16 @@ Failed to solve
|
||||||
@f
|
@f
|
||||||
with arguments:
|
with arguments:
|
||||||
?M::0
|
?M::0
|
||||||
?M::1 10
|
10
|
||||||
⊤
|
⊤
|
||||||
Assignment
|
Assignment
|
||||||
⊢ ℕ ≺ ?M::0
|
⊢ ℕ ≺ ?M::0
|
||||||
Substitution
|
|
||||||
⊢ ?M::5[inst:0 (10)] ≺ ?M::0
|
|
||||||
(line: 4: pos: 6) Type of argument 2 must be convertible to the expected type in the application of
|
(line: 4: pos: 6) Type of argument 2 must be convertible to the expected type in the application of
|
||||||
@f
|
@f
|
||||||
with arguments:
|
with arguments:
|
||||||
?M::0
|
?M::0
|
||||||
?M::1 10
|
10
|
||||||
⊤
|
⊤
|
||||||
Assignment
|
|
||||||
x : ℕ ⊢ ℕ ≈ ?M::5
|
|
||||||
Destruct/Decompose
|
|
||||||
⊢ ℕ → ℕ ≈ Π x : ?M::4, ?M::5
|
|
||||||
Substitution
|
|
||||||
⊢ ?M::3 ≈ Π x : ?M::4, ?M::5
|
|
||||||
Function expected at
|
|
||||||
?M::1 10
|
|
||||||
Assignment
|
|
||||||
⊢ ℕ → ℕ ≺ ?M::3
|
|
||||||
Propagate type, ?M::1 : ?M::3
|
|
||||||
Assignment
|
|
||||||
⊢ ?M::1 ≈ λ x : ℕ, x
|
|
||||||
Assumption 0
|
|
||||||
Failed to solve
|
|
||||||
⊢ Bool ≺ ℤ
|
|
||||||
Substitution
|
|
||||||
⊢ Bool ≺ ?M::0
|
|
||||||
(line: 4: pos: 6) Type of argument 3 must be convertible to the expected type in the application of
|
|
||||||
@f
|
|
||||||
with arguments:
|
|
||||||
?M::0
|
|
||||||
?M::1 10
|
|
||||||
⊤
|
|
||||||
Assignment
|
|
||||||
⊢ ℤ ≺ ?M::0
|
|
||||||
Substitution
|
|
||||||
⊢ ?M::5[inst:0 (10)] ≺ ?M::0
|
|
||||||
(line: 4: pos: 6) Type of argument 2 must be convertible to the expected type in the application of
|
|
||||||
@f
|
|
||||||
with arguments:
|
|
||||||
?M::0
|
|
||||||
?M::1 10
|
|
||||||
⊤
|
|
||||||
Assignment
|
|
||||||
a : ℕ ⊢ ℤ ≈ ?M::5
|
|
||||||
Destruct/Decompose
|
|
||||||
⊢ ℕ → ℤ ≈ Π x : ?M::4, ?M::5
|
|
||||||
Substitution
|
|
||||||
⊢ ?M::3 ≈ Π x : ?M::4, ?M::5
|
|
||||||
Function expected at
|
|
||||||
?M::1 10
|
|
||||||
Assignment
|
|
||||||
⊢ ℕ → ℤ ≺ ?M::3
|
|
||||||
Propagate type, ?M::1 : ?M::3
|
|
||||||
Assignment
|
|
||||||
⊢ ?M::1 ≈ nat_to_int
|
|
||||||
Assumption 1
|
|
||||||
Failed to solve
|
|
||||||
⊢ Bool ≺ ℝ
|
|
||||||
Substitution
|
|
||||||
⊢ Bool ≺ ?M::0
|
|
||||||
(line: 4: pos: 6) Type of argument 3 must be convertible to the expected type in the application of
|
|
||||||
@f
|
|
||||||
with arguments:
|
|
||||||
?M::0
|
|
||||||
?M::1 10
|
|
||||||
⊤
|
|
||||||
Assignment
|
|
||||||
⊢ ℝ ≺ ?M::0
|
|
||||||
Substitution
|
|
||||||
⊢ ?M::5[inst:0 (10)] ≺ ?M::0
|
|
||||||
(line: 4: pos: 6) Type of argument 2 must be convertible to the expected type in the application of
|
|
||||||
@f
|
|
||||||
with arguments:
|
|
||||||
?M::0
|
|
||||||
?M::1 10
|
|
||||||
⊤
|
|
||||||
Assignment
|
|
||||||
a : ℕ ⊢ ℝ ≈ ?M::5
|
|
||||||
Destruct/Decompose
|
|
||||||
⊢ ℕ → ℝ ≈ Π x : ?M::4, ?M::5
|
|
||||||
Substitution
|
|
||||||
⊢ ?M::3 ≈ Π x : ?M::4, ?M::5
|
|
||||||
Function expected at
|
|
||||||
?M::1 10
|
|
||||||
Assignment
|
|
||||||
⊢ ℕ → ℝ ≺ ?M::3
|
|
||||||
Propagate type, ?M::1 : ?M::3
|
|
||||||
Assignment
|
|
||||||
⊢ ?M::1 ≈ nat_to_real
|
|
||||||
Assumption 2
|
|
||||||
Assumed: g
|
Assumed: g
|
||||||
Error (line: 7, pos: 8) invalid expression, it still contains metavariables after elaboration, metavariable: ?M::1, type:
|
Error (line: 7, pos: 8) invalid expression, it still contains metavariables after elaboration, metavariable: ?M::1, type:
|
||||||
Type
|
Type
|
||||||
|
|
|
@ -7,8 +7,6 @@
|
||||||
Set: lean::pp::implicit
|
Set: lean::pp::implicit
|
||||||
Import "kernel"
|
Import "kernel"
|
||||||
Import "nat"
|
Import "nat"
|
||||||
Import "int"
|
|
||||||
Import "real"
|
|
||||||
Variable C {A B : Type} (H : @eq Type A B) (a : A) : B
|
Variable C {A B : Type} (H : @eq Type A B) (a : A) : B
|
||||||
Variable D {A A' : Type} {B : A → Type} {B' : A' → Type} (H : @eq Type (Π x : A, B x) (Π x : A', B' x)) :
|
Variable D {A A' : Type} {B : A → Type} {B' : A' → Type} (H : @eq Type (Π x : A, B x) (Π x : A', B' x)) :
|
||||||
@eq Type A A'
|
@eq Type A A'
|
||||||
|
|
|
@ -7,8 +7,6 @@
|
||||||
Set: lean::pp::implicit
|
Set: lean::pp::implicit
|
||||||
Import "kernel"
|
Import "kernel"
|
||||||
Import "nat"
|
Import "nat"
|
||||||
Import "int"
|
|
||||||
Import "real"
|
|
||||||
Variable C {A B : Type} (H : @eq Type A B) (a : A) : B
|
Variable C {A B : Type} (H : @eq Type A B) (a : A) : B
|
||||||
Variable D {A A' : Type} {B : A → Type} {B' : A' → Type} (H : @eq Type (Π x : A, B x) (Π x : A', B' x)) :
|
Variable D {A A' : Type} {B : A → Type} {B' : A' → Type} (H : @eq Type (Π x : A, B x) (Π x : A', B' x)) :
|
||||||
@eq Type A A'
|
@eq Type A A'
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
|
Import int.
|
||||||
Variable i : Int
|
Variable i : Int
|
||||||
Check i = 0
|
Check i = 0
|
||||||
SetOption pp::coercion true
|
SetOption pp::coercion true
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
Set: pp::colors
|
Set: pp::colors
|
||||||
Set: pp::unicode
|
Set: pp::unicode
|
||||||
|
Imported 'int'
|
||||||
Assumed: i
|
Assumed: i
|
||||||
i = 0 : Bool
|
i = 0 : Bool
|
||||||
Set: lean::pp::coercion
|
Set: lean::pp::coercion
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
Import int.
|
||||||
Variable List : Type -> Type
|
Variable List : Type -> Type
|
||||||
Variable nil {A : Type} : List A
|
Variable nil {A : Type} : List A
|
||||||
Variable cons {A : Type} (head : A) (tail : List A) : List A
|
Variable cons {A : Type} (head : A) (tail : List A) : List A
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
Set: pp::colors
|
Set: pp::colors
|
||||||
Set: pp::unicode
|
Set: pp::unicode
|
||||||
|
Imported 'int'
|
||||||
Assumed: List
|
Assumed: List
|
||||||
Assumed: nil
|
Assumed: nil
|
||||||
Assumed: cons
|
Assumed: cons
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
Import int.
|
||||||
Variable a : Int
|
Variable a : Int
|
||||||
Variable P : Int -> Int -> Bool
|
Variable P : Int -> Int -> Bool
|
||||||
Axiom H : P a a
|
Axiom H : P a a
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
Set: pp::colors
|
Set: pp::colors
|
||||||
Set: pp::unicode
|
Set: pp::unicode
|
||||||
|
Imported 'int'
|
||||||
Assumed: a
|
Assumed: a
|
||||||
Assumed: P
|
Assumed: P
|
||||||
Assumed: H
|
Assumed: H
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
Import int.
|
||||||
Variable a : Int
|
Variable a : Int
|
||||||
Variable P : Int -> Int -> Bool
|
Variable P : Int -> Int -> Bool
|
||||||
Variable f : Int -> Int -> Int
|
Variable f : Int -> Int -> Int
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
Set: pp::colors
|
Set: pp::colors
|
||||||
Set: pp::unicode
|
Set: pp::unicode
|
||||||
|
Imported 'int'
|
||||||
Assumed: a
|
Assumed: a
|
||||||
Assumed: P
|
Assumed: P
|
||||||
Assumed: f
|
Assumed: f
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
Import int.
|
||||||
Variable P : Int -> Int -> Bool
|
Variable P : Int -> Int -> Bool
|
||||||
|
|
||||||
Theorem T1 (R1 : not (exists x y, P x y)) : forall x y, not (P x y) :=
|
Theorem T1 (R1 : not (exists x y, P x y)) : forall x y, not (P x y) :=
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
Set: pp::colors
|
Set: pp::colors
|
||||||
Set: pp::unicode
|
Set: pp::unicode
|
||||||
|
Imported 'int'
|
||||||
Assumed: P
|
Assumed: P
|
||||||
Proved: T1
|
Proved: T1
|
||||||
Assumed: Ax
|
Assumed: Ax
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
Import int.
|
||||||
Variable P : Int -> Int -> Int -> Bool
|
Variable P : Int -> Int -> Int -> Bool
|
||||||
Axiom Ax1 : exists x y z, P x y z
|
Axiom Ax1 : exists x y z, P x y z
|
||||||
Axiom Ax2 : forall x y z, not (P x y z)
|
Axiom Ax2 : forall x y z, not (P x y z)
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
Set: pp::colors
|
Set: pp::colors
|
||||||
Set: pp::unicode
|
Set: pp::unicode
|
||||||
|
Imported 'int'
|
||||||
Assumed: P
|
Assumed: P
|
||||||
Assumed: Ax1
|
Assumed: Ax1
|
||||||
Assumed: Ax2
|
Assumed: Ax2
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
Import int.
|
||||||
Variable f {A : Type} : A -> A -> A
|
Variable f {A : Type} : A -> A -> A
|
||||||
Variable module::g {A : Type} : A -> A -> A
|
Variable module::g {A : Type} : A -> A -> A
|
||||||
Check @f
|
Check @f
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
Set: pp::colors
|
Set: pp::colors
|
||||||
Set: pp::unicode
|
Set: pp::unicode
|
||||||
|
Imported 'int'
|
||||||
Assumed: f
|
Assumed: f
|
||||||
Assumed: module::g
|
Assumed: module::g
|
||||||
@f : Π (A : Type), A → A → A
|
@f : Π (A : Type), A → A → A
|
||||||
|
@ -8,4 +9,4 @@ module::@g : Π (A : Type), A → A → A
|
||||||
h::1::explicit : Π (A B : Type), A → B → A
|
h::1::explicit : Π (A B : Type), A → B → A
|
||||||
Assumed: @h
|
Assumed: @h
|
||||||
Assumed: h
|
Assumed: h
|
||||||
Error (line: 8, pos: 37) failed to mark implicit arguments for 'h', the frontend already has an object named '@h'
|
Error (line: 9, pos: 37) failed to mark implicit arguments for 'h', the frontend already has an object named '@h'
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
Import int.
|
||||||
Variable P : Int -> Bool
|
Variable P : Int -> Bool
|
||||||
Axiom Ax (x : Int) : P x
|
Axiom Ax (x : Int) : P x
|
||||||
Check ForallIntro Ax
|
Check ForallIntro Ax
|
|
@ -1,5 +1,6 @@
|
||||||
Set: pp::colors
|
Set: pp::colors
|
||||||
Set: pp::unicode
|
Set: pp::unicode
|
||||||
|
Imported 'int'
|
||||||
Assumed: P
|
Assumed: P
|
||||||
Assumed: Ax
|
Assumed: Ax
|
||||||
ForallIntro Ax : ∀ x : ℤ, P x
|
ForallIntro Ax : ∀ x : ℤ, P x
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
Import int.
|
||||||
Variable g {A : Type} (a : A) : A
|
Variable g {A : Type} (a : A) : A
|
||||||
Variable a : Int
|
Variable a : Int
|
||||||
Variable b : Int
|
Variable b : Int
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
Set: pp::colors
|
Set: pp::colors
|
||||||
Set: pp::unicode
|
Set: pp::unicode
|
||||||
|
Imported 'int'
|
||||||
Assumed: g
|
Assumed: g
|
||||||
Assumed: a
|
Assumed: a
|
||||||
Assumed: b
|
Assumed: b
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
Import int.
|
||||||
|
Import real.
|
||||||
Variable f : Int -> Int -> Int
|
Variable f : Int -> Int -> Int
|
||||||
Show forall a, f a a > 0
|
Show forall a, f a a > 0
|
||||||
Show forall a b, f a b > 0
|
Show forall a b, f a b > 0
|
||||||
|
|
|
@ -1,5 +1,7 @@
|
||||||
Set: pp::colors
|
Set: pp::colors
|
||||||
Set: pp::unicode
|
Set: pp::unicode
|
||||||
|
Imported 'int'
|
||||||
|
Imported 'real'
|
||||||
Assumed: f
|
Assumed: f
|
||||||
∀ a : ℤ, f a a > 0
|
∀ a : ℤ, f a a > 0
|
||||||
∀ a b : ℤ, f a b > 0
|
∀ a b : ℤ, f a b > 0
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
Import real.
|
||||||
Variable f {A : Type} (x y : A) : A
|
Variable f {A : Type} (x y : A) : A
|
||||||
Check f 10 20
|
Check f 10 20
|
||||||
Check f 10
|
Check f 10
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
Set: pp::colors
|
Set: pp::colors
|
||||||
Set: pp::unicode
|
Set: pp::unicode
|
||||||
|
Imported 'real'
|
||||||
Assumed: f
|
Assumed: f
|
||||||
f 10 20 : ℕ
|
f 10 20 : ℕ
|
||||||
f 10 : ℕ → ℕ
|
f 10 : ℕ → ℕ
|
||||||
|
@ -7,6 +8,6 @@ f 10 : ℕ → ℕ
|
||||||
Assumed: g
|
Assumed: g
|
||||||
g 10 20 ⊤ : Bool → Bool
|
g 10 20 ⊤ : Bool → Bool
|
||||||
let r : ℝ → ℝ → ℝ := g 10 20 in r : ℝ → ℝ → ℝ
|
let r : ℝ → ℝ → ℝ := g 10 20 in r : ℝ → ℝ → ℝ
|
||||||
Error (line: 10, pos: 0) invalid expression, unexpected token
|
Error (line: 11, pos: 0) invalid expression, unexpected token
|
||||||
Set: lean::pp::implicit
|
Set: lean::pp::implicit
|
||||||
let r : ℝ → ℝ → ℝ := @g ℕ 10 20 ℝ in r : ℝ → ℝ → ℝ
|
let r : ℝ → ℝ → ℝ := @g ℕ 10 20 ℝ in r : ℝ → ℝ → ℝ
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
Import int.
|
||||||
|
|
||||||
Show 10 = 20
|
Show 10 = 20
|
||||||
Variable f : Int -> Int -> Int
|
Variable f : Int -> Int -> Int
|
||||||
Variable g : Int -> Int -> Int -> Int
|
Variable g : Int -> Int -> Int -> Int
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
Set: pp::colors
|
Set: pp::colors
|
||||||
Set: pp::unicode
|
Set: pp::unicode
|
||||||
|
Imported 'int'
|
||||||
10 = 20
|
10 = 20
|
||||||
Assumed: f
|
Assumed: f
|
||||||
Assumed: g
|
Assumed: g
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
Import int.
|
||||||
Variable f {A : Type} (a1 a2 : A) {B : Type} (b1 b2 : B) : A
|
Variable f {A : Type} (a1 a2 : A) {B : Type} (b1 b2 : B) : A
|
||||||
Variable g {A1 A2 : Type} (a1 : A1) (a2 : A2) {B : Type} (b : B) : A1
|
Variable g {A1 A2 : Type} (a1 : A1) (a2 : A2) {B : Type} (b : B) : A1
|
||||||
Variable p (a1 a2 : Int) {B : Type} (b1 b2 b3 : B) : B
|
Variable p (a1 a2 : Int) {B : Type} (b1 b2 b3 : B) : B
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
Set: pp::colors
|
Set: pp::colors
|
||||||
Set: pp::unicode
|
Set: pp::unicode
|
||||||
|
Imported 'int'
|
||||||
Assumed: f
|
Assumed: f
|
||||||
Assumed: g
|
Assumed: g
|
||||||
Assumed: p
|
Assumed: p
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
Import int.
|
||||||
|
Import real.
|
||||||
Variable f {A : Type} (a1 a2 : A) : A
|
Variable f {A : Type} (a1 a2 : A) : A
|
||||||
Variable g : Int -> Int -> Int
|
Variable g : Int -> Int -> Int
|
||||||
Variable h : Int -> Int -> Real -> Int
|
Variable h : Int -> Int -> Real -> Int
|
||||||
|
|
|
@ -1,5 +1,7 @@
|
||||||
Set: pp::colors
|
Set: pp::colors
|
||||||
Set: pp::unicode
|
Set: pp::unicode
|
||||||
|
Imported 'int'
|
||||||
|
Imported 'real'
|
||||||
Assumed: f
|
Assumed: f
|
||||||
Assumed: g
|
Assumed: g
|
||||||
Assumed: h
|
Assumed: h
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
Import int.
|
||||||
Variable f {A : Type} : A -> A -> A
|
Variable f {A : Type} : A -> A -> A
|
||||||
Infixl 65 + : f
|
Infixl 65 + : f
|
||||||
Show true + false
|
Show true + false
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
Set: pp::colors
|
Set: pp::colors
|
||||||
Set: pp::unicode
|
Set: pp::unicode
|
||||||
|
Imported 'int'
|
||||||
Assumed: f
|
Assumed: f
|
||||||
⊤ + ⊥
|
⊤ + ⊥
|
||||||
10 + 20
|
10 + 20
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
Import int.
|
||||||
(** import("tactic.lua") **)
|
(** import("tactic.lua") **)
|
||||||
Variable q : Int -> Int -> Bool.
|
Variable q : Int -> Int -> Bool.
|
||||||
Variable p : Int -> Bool.
|
Variable p : Int -> Bool.
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
# Set: pp::colors
|
# Set: pp::colors
|
||||||
Set: pp::unicode
|
Set: pp::unicode
|
||||||
Assumed: q
|
Imported 'int'
|
||||||
|
# Assumed: q
|
||||||
# Assumed: p
|
# Assumed: p
|
||||||
# Assumed: Ax
|
# Assumed: Ax
|
||||||
# Assumed: a
|
# Assumed: a
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
Import int.
|
||||||
|
|
||||||
Show let a : Nat := 10, b : Nat := 20, c : Nat := 30, d : Nat := 10 in a + b + c + d
|
Show let a : Nat := 10, b : Nat := 20, c : Nat := 30, d : Nat := 10 in a + b + c + d
|
||||||
Show let a : Nat := 1000000000000000000, b : Nat := 20000000000000000000, c : Nat := 3000000000000000000, d : Nat := 4000000000000000000 in a + b + c + d
|
Show let a : Nat := 1000000000000000000, b : Nat := 20000000000000000000, c : Nat := 3000000000000000000, d : Nat := 4000000000000000000 in a + b + c + d
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
Set: pp::colors
|
Set: pp::colors
|
||||||
Set: pp::unicode
|
Set: pp::unicode
|
||||||
|
Imported 'int'
|
||||||
let a : ℕ := 10, b : ℕ := 20, c : ℕ := 30, d : ℕ := 10 in a + b + c + d
|
let a : ℕ := 10, b : ℕ := 20, c : ℕ := 30, d : ℕ := 10 in a + b + c + d
|
||||||
let a : ℕ := 1000000000000000000,
|
let a : ℕ := 1000000000000000000,
|
||||||
b : ℕ := 20000000000000000000,
|
b : ℕ := 20000000000000000000,
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
Import int.
|
||||||
|
|
||||||
Variable magic : Pi (H : Bool), H
|
Variable magic : Pi (H : Bool), H
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
Set: pp::colors
|
Set: pp::colors
|
||||||
Set: pp::unicode
|
Set: pp::unicode
|
||||||
|
Imported 'int'
|
||||||
Assumed: magic
|
Assumed: magic
|
||||||
Set: lean::pp::notation
|
Set: lean::pp::notation
|
||||||
Set: lean::pp::coercion
|
Set: lean::pp::coercion
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
Import int.
|
||||||
|
|
||||||
Show
|
Show
|
||||||
let b := true,
|
let b := true,
|
||||||
|
|
|
@ -1,23 +1,24 @@
|
||||||
Set: pp::colors
|
Set: pp::colors
|
||||||
Set: pp::unicode
|
Set: pp::unicode
|
||||||
|
Imported 'int'
|
||||||
let b := ⊤, a : ℤ := b in a
|
let b := ⊤, a : ℤ := b in a
|
||||||
Assumed: vector
|
Assumed: vector
|
||||||
Assumed: const
|
Assumed: const
|
||||||
let a := 10, v1 := const a ⊤, v2 := v1 in v2 : vector Bool 10
|
let a := 10, v1 := const a ⊤, v2 := v1 in v2 : vector Bool 10
|
||||||
let a := 10, v1 : vector Bool a := const a ⊤, v2 : vector Bool a := v1 in v2
|
let a := 10, v1 : vector Bool a := const a ⊤, v2 : vector Bool a := v1 in v2
|
||||||
let a := 10, v1 : vector Bool a := const a ⊤, v2 : vector Bool a := v1 in v2 : vector Bool 10
|
let a := 10, v1 : vector Bool a := const a ⊤, v2 : vector Bool a := v1 in v2 : vector Bool 10
|
||||||
Error (line: 31, pos: 26) type mismatch at definition 'v2', expected type
|
Error (line: 32, pos: 26) type mismatch at definition 'v2', expected type
|
||||||
vector ℤ a
|
vector ℤ a
|
||||||
Given type:
|
Given type:
|
||||||
vector Bool a
|
vector Bool a
|
||||||
Assumed: foo
|
Assumed: foo
|
||||||
Coercion foo
|
Coercion foo
|
||||||
Error (line: 40, pos: 26) type mismatch at definition 'v2', expected type
|
Error (line: 41, pos: 26) type mismatch at definition 'v2', expected type
|
||||||
vector ℤ a
|
vector ℤ a
|
||||||
Given type:
|
Given type:
|
||||||
vector Bool a
|
vector Bool a
|
||||||
Set: lean::pp::coercion
|
Set: lean::pp::coercion
|
||||||
Error (line: 48, pos: 26) type mismatch at definition 'v2', expected type
|
Error (line: 49, pos: 26) type mismatch at definition 'v2', expected type
|
||||||
vector ℤ a
|
vector ℤ a
|
||||||
Given type:
|
Given type:
|
||||||
vector Bool a
|
vector Bool a
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
Import int.
|
||||||
|
|
||||||
(**
|
(**
|
||||||
function add_paren(code)
|
function add_paren(code)
|
||||||
return "(" .. "** " .. code .. " **" .. ")"
|
return "(" .. "** " .. code .. " **" .. ")"
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
Set: pp::colors
|
Set: pp::colors
|
||||||
Set: pp::unicode
|
Set: pp::unicode
|
||||||
|
Imported 'int'
|
||||||
Variable x : ℤ
|
Variable x : ℤ
|
||||||
done
|
done
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue