chore(frontends/lean): remove 'new_elaborator' option
This commit is contained in:
parent
465f898882
commit
9df712581b
204 changed files with 42 additions and 232 deletions
|
|
@ -5,7 +5,6 @@ Author: Leonardo de Moura
|
|||
-/
|
||||
prelude
|
||||
import init.logic init.applicative
|
||||
set_option new_elaborator true
|
||||
universe variables u v
|
||||
|
||||
structure [class] alternative (F : Type u → Type v) extends applicative F : Type (max u+1 v) :=
|
||||
|
|
|
|||
|
|
@ -5,7 +5,6 @@ Author: Leonardo de Moura
|
|||
-/
|
||||
prelude
|
||||
import init.functor
|
||||
set_option new_elaborator true
|
||||
universe variables u v
|
||||
|
||||
structure [class] applicative (F : Type u → Type v) extends functor F : Type (max u+1 v):=
|
||||
|
|
|
|||
|
|
@ -3,7 +3,6 @@
|
|||
-- Author: Leonardo de Moura
|
||||
prelude
|
||||
import init.datatypes
|
||||
set_option new_elaborator true
|
||||
|
||||
namespace bool
|
||||
attribute [inline]
|
||||
|
|
|
|||
|
|
@ -5,7 +5,6 @@ Author: Leonardo de Moura
|
|||
-/
|
||||
prelude
|
||||
import init.fin
|
||||
set_option new_elaborator true
|
||||
|
||||
open nat
|
||||
definition char_sz : nat := succ 255
|
||||
|
|
|
|||
|
|
@ -5,7 +5,6 @@ Authors: Leonardo de Moura, Jeremy Avigad
|
|||
-/
|
||||
prelude
|
||||
import init.subtype init.funext
|
||||
set_option new_elaborator true
|
||||
namespace classical
|
||||
open subtype
|
||||
universe variables u v
|
||||
|
|
|
|||
|
|
@ -25,7 +25,6 @@ a type to a sort.
|
|||
-/
|
||||
prelude
|
||||
import init.list init.subtype init.prod
|
||||
set_option new_elaborator true
|
||||
universe variables u v
|
||||
|
||||
structure [class] has_lift (A : Type u) (B : Type v) :=
|
||||
|
|
|
|||
|
|
@ -4,7 +4,6 @@ Released under Apache 2.0 license as described in the file LICENSE.
|
|||
Authors: Leonardo de Moura
|
||||
-/
|
||||
prelude
|
||||
set_option new_elaborator true
|
||||
/- Combinator calculus -/
|
||||
namespace combinator
|
||||
universe variables u₁ u₂ u₃
|
||||
|
|
|
|||
|
|
@ -6,7 +6,6 @@ Authors: Leonardo de Moura
|
|||
Basic datatypes
|
||||
-/
|
||||
prelude
|
||||
set_option new_elaborator true
|
||||
|
||||
notation `Prop` := Type 0
|
||||
notation `Type₂` := Type 2
|
||||
|
|
|
|||
|
|
@ -6,7 +6,6 @@ Author: Leonardo de Moura
|
|||
prelude
|
||||
import init.nat
|
||||
open nat
|
||||
set_option new_elaborator true
|
||||
structure fin (n : nat) := (val : nat) (is_lt : val < n)
|
||||
|
||||
namespace fin
|
||||
|
|
|
|||
|
|
@ -7,7 +7,6 @@ General operations on functions.
|
|||
-/
|
||||
prelude
|
||||
import init.prod init.funext init.logic
|
||||
set_option new_elaborator true
|
||||
notation f ` $ `:1 a:1 := f a
|
||||
universe variables u_a u_b u_c u_d u_e
|
||||
variables {A : Type u_a} {B : Type u_b} {C : Type u_c} {D : Type u_d} {E : Type u_a}
|
||||
|
|
|
|||
|
|
@ -4,7 +4,6 @@ Released under Apache 2.0 license as described in the file LICENSE.
|
|||
Authors: Luke Nelson and Jared Roesch
|
||||
-/
|
||||
prelude
|
||||
set_option new_elaborator true
|
||||
universe variables u v
|
||||
|
||||
structure [class] functor (F : Type u → Type v) : Type (max u+1 v) :=
|
||||
|
|
|
|||
|
|
@ -7,7 +7,6 @@ Extensional equality for functions, and a proof of function extensionality from
|
|||
-/
|
||||
prelude
|
||||
import init.quot init.logic
|
||||
set_option new_elaborator true
|
||||
|
||||
namespace function
|
||||
universe variables u v
|
||||
|
|
|
|||
|
|
@ -6,7 +6,6 @@ Authors: Leonardo de Moura
|
|||
prelude
|
||||
import init.meta.tactic init.meta.constructor_tactic
|
||||
open tactic
|
||||
set_option new_elaborator true
|
||||
/-
|
||||
Define id_locked using meta-programming because we don't have
|
||||
syntax for setting reducibility_hints.
|
||||
|
|
|
|||
|
|
@ -5,7 +5,6 @@ Author: Leonardo de Moura
|
|||
-/
|
||||
prelude
|
||||
import init.meta.mk_dec_eq_instance init.subtype init.meta.occurrences init.sum
|
||||
set_option new_elaborator true
|
||||
open tactic subtype
|
||||
universe variables u v
|
||||
|
||||
|
|
|
|||
|
|
@ -6,7 +6,6 @@ Author: Leonardo de Moura
|
|||
prelude
|
||||
import init.logic init.nat
|
||||
open decidable list
|
||||
set_option new_elaborator true
|
||||
|
||||
universe variables u v
|
||||
|
||||
|
|
|
|||
|
|
@ -6,7 +6,6 @@ Author: Leonardo de Moura
|
|||
prelude
|
||||
import init.monad init.alternative
|
||||
open list
|
||||
set_option new_elaborator true
|
||||
universe variables u v
|
||||
attribute [inline]
|
||||
definition list_fmap {A : Type u} {B : Type v} (f : A → B) (l : list A) : list B :=
|
||||
|
|
|
|||
|
|
@ -5,7 +5,6 @@ Authors: Leonardo de Moura, Jeremy Avigad, Floris van Doorn
|
|||
-/
|
||||
prelude
|
||||
import init.datatypes
|
||||
set_option new_elaborator true
|
||||
|
||||
universe variables u v
|
||||
|
||||
|
|
|
|||
|
|
@ -5,7 +5,6 @@ Authors: Luke Nelson and Jared Roesch
|
|||
-/
|
||||
prelude
|
||||
import init.applicative init.string init.trace
|
||||
set_option new_elaborator true
|
||||
universe variables u v
|
||||
|
||||
structure [class] monad (M : Type u → Type v) extends functor M : Type (max u+1 v) :=
|
||||
|
|
|
|||
|
|
@ -7,7 +7,6 @@ Monad combinators, as in Haskell's Control.Monad.
|
|||
-/
|
||||
prelude
|
||||
import init.monad init.list
|
||||
set_option new_elaborator true
|
||||
namespace monad
|
||||
|
||||
definition mapM {m : Type → Type} [monad m] {A B : Type} (f : A → m B) : list A → m (list B)
|
||||
|
|
|
|||
|
|
@ -5,7 +5,6 @@ Authors: Floris van Doorn, Leonardo de Moura
|
|||
-/
|
||||
prelude
|
||||
import init.relation init.num
|
||||
set_option new_elaborator true
|
||||
|
||||
notation `ℕ` := nat
|
||||
|
||||
|
|
|
|||
|
|
@ -5,7 +5,6 @@ Authors: Leonardo de Moura
|
|||
-/
|
||||
prelude
|
||||
import init.wf init.nat
|
||||
set_option new_elaborator true
|
||||
namespace nat
|
||||
|
||||
private definition div_rec_lemma {x y : nat} : 0 < y ∧ y ≤ x → x - y < x :=
|
||||
|
|
|
|||
|
|
@ -5,7 +5,6 @@ Authors: Leonardo de Moura
|
|||
-/
|
||||
prelude
|
||||
import init.bool
|
||||
set_option new_elaborator true
|
||||
|
||||
namespace pos_num
|
||||
protected definition mul (a b : pos_num) : pos_num :=
|
||||
|
|
|
|||
|
|
@ -5,7 +5,6 @@ Authors: Leonardo de Moura
|
|||
-/
|
||||
prelude
|
||||
import init.logic init.monad init.alternative
|
||||
set_option new_elaborator true
|
||||
open decidable
|
||||
|
||||
universe variables u v
|
||||
|
|
|
|||
|
|
@ -5,7 +5,6 @@ Authors: Leonardo de Moura
|
|||
-/
|
||||
prelude
|
||||
import init.to_string init.prod init.sum
|
||||
set_option new_elaborator true
|
||||
|
||||
inductive ordering
|
||||
| lt | eq | gt
|
||||
|
|
|
|||
|
|
@ -5,7 +5,6 @@ Author: Leonardo de Moura, Jeremy Avigad
|
|||
-/
|
||||
prelude
|
||||
import init.num init.relation
|
||||
set_option new_elaborator true
|
||||
notation A × B := prod A B
|
||||
-- notation for n-ary tuples
|
||||
notation `(` h `, ` t:(foldr `, ` (e r, prod.mk e r)) `)` := prod.mk h t
|
||||
|
|
|
|||
|
|
@ -8,7 +8,6 @@ Quotient types.
|
|||
prelude
|
||||
import init.sigma init.setoid init.logic
|
||||
open sigma.ops setoid
|
||||
set_option new_elaborator true
|
||||
|
||||
universe variables u v
|
||||
|
||||
|
|
|
|||
|
|
@ -7,7 +7,6 @@ Authors: Leonardo de Moura
|
|||
-/
|
||||
prelude
|
||||
import init.logic
|
||||
set_option new_elaborator true
|
||||
|
||||
-- TODO(Leo): remove duplication between this file and algebra/relation.lean
|
||||
-- We need some of the following definitions asap when "initializing" Lean.
|
||||
|
|
|
|||
|
|
@ -6,7 +6,6 @@ Authors: Leonardo de Moura
|
|||
-/
|
||||
prelude
|
||||
import init.relation
|
||||
set_option new_elaborator true
|
||||
universe variables u
|
||||
structure [class] setoid (A : Type u) :=
|
||||
(r : A → A → Prop) (iseqv : equivalence r)
|
||||
|
|
|
|||
|
|
@ -5,7 +5,6 @@ Author: Leonardo de Moura, Jeremy Avigad, Floris van Doorn
|
|||
-/
|
||||
prelude
|
||||
import init.datatypes init.num init.wf init.logic
|
||||
set_option new_elaborator true
|
||||
|
||||
definition dpair := @sigma.mk
|
||||
notation `Σ` binders `, ` r:(scoped P, sigma P) := r
|
||||
|
|
|
|||
|
|
@ -5,7 +5,6 @@ Authors: Leonardo de Moura
|
|||
-/
|
||||
prelude
|
||||
import init.logic init.monad init.alternative init.prod
|
||||
set_option new_elaborator true
|
||||
|
||||
definition state (S : Type) (A : Type) : Type :=
|
||||
S → A × S
|
||||
|
|
|
|||
|
|
@ -5,7 +5,6 @@ Author: Leonardo de Moura
|
|||
-/
|
||||
prelude
|
||||
import init.char init.list
|
||||
set_option new_elaborator true
|
||||
attribute [reducible]
|
||||
definition string := list char
|
||||
|
||||
|
|
|
|||
|
|
@ -6,7 +6,6 @@ Author: Leonardo de Moura, Jeremy Avigad
|
|||
prelude
|
||||
import init.datatypes init.logic
|
||||
open decidable
|
||||
set_option new_elaborator true
|
||||
|
||||
universe variables u
|
||||
|
||||
|
|
|
|||
|
|
@ -7,7 +7,6 @@ The sum type, aka disjoint union.
|
|||
-/
|
||||
prelude
|
||||
import init.logic
|
||||
set_option new_elaborator true
|
||||
|
||||
notation A ⊕ B := sum A B
|
||||
|
||||
|
|
|
|||
|
|
@ -3,7 +3,6 @@
|
|||
-- Author: Leonardo de Moura
|
||||
prelude
|
||||
import init.string
|
||||
set_option new_elaborator true
|
||||
|
||||
/- This function has a native implementation that tracks time. -/
|
||||
definition timeit {A : Type} (s : string) (f : unit → A) : A :=
|
||||
|
|
|
|||
|
|
@ -3,7 +3,6 @@
|
|||
-- Author: Leonardo de Moura
|
||||
prelude
|
||||
import init.string init.bool init.subtype init.unsigned init.prod init.sum
|
||||
set_option new_elaborator true
|
||||
open bool list sum prod sigma subtype nat
|
||||
|
||||
universe variables u v
|
||||
|
|
|
|||
|
|
@ -3,7 +3,6 @@
|
|||
-- Author: Leonardo de Moura
|
||||
prelude
|
||||
import init.string
|
||||
set_option new_elaborator true
|
||||
|
||||
/- This function has a native implementation that displays the given string in the regular output stream. -/
|
||||
definition trace {A : Type} (s : string) (f : unit → A) : A :=
|
||||
|
|
|
|||
|
|
@ -5,7 +5,6 @@ Author: Leonardo de Moura
|
|||
-/
|
||||
prelude
|
||||
import init.logic
|
||||
set_option new_elaborator true
|
||||
|
||||
theorem unit_eq (a b : unit) : a = b :=
|
||||
unit.rec_on a (unit.rec_on b rfl)
|
||||
|
|
|
|||
|
|
@ -5,7 +5,6 @@ Authors: Leonardo de Moura
|
|||
-/
|
||||
prelude
|
||||
import init.fin
|
||||
set_option new_elaborator true
|
||||
|
||||
open nat
|
||||
definition unsigned_sz : nat := succ 4294967295
|
||||
|
|
|
|||
|
|
@ -75,7 +75,6 @@ namespace lean {
|
|||
// Parser configuration options
|
||||
static name * g_parser_show_errors;
|
||||
static name * g_parser_parallel_import;
|
||||
static name * g_new_elaborator;
|
||||
|
||||
bool get_parser_show_errors(options const & opts) {
|
||||
return opts.get_bool(*g_parser_show_errors, LEAN_DEFAULT_PARSER_SHOW_ERRORS);
|
||||
|
|
@ -84,10 +83,6 @@ bool get_parser_show_errors(options const & opts) {
|
|||
bool get_parser_parallel_import(options const & opts) {
|
||||
return opts.get_bool(*g_parser_parallel_import, LEAN_DEFAULT_PARSER_PARALLEL_IMPORT);
|
||||
}
|
||||
|
||||
bool get_new_elaborator(options const & opts) {
|
||||
return opts.get_bool(*g_new_elaborator, true);
|
||||
}
|
||||
// ==========================================
|
||||
|
||||
static name * g_anonymous_inst_name_prefix = nullptr;
|
||||
|
|
@ -321,7 +316,6 @@ void parser::declare_sorry() {
|
|||
void parser::updt_options() {
|
||||
m_verbose = get_verbose(m_ios.get_options());
|
||||
m_show_errors = get_parser_show_errors(m_ios.get_options());
|
||||
m_new_elaborator = get_new_elaborator(m_ios.get_options());
|
||||
try {
|
||||
set_max_memory_megabyte(get_max_memory(m_ios.get_options()));
|
||||
} catch (exception&) {
|
||||
|
|
@ -2355,12 +2349,10 @@ bool parse_commands(environment & env, io_state & ios, char const * fname, optio
|
|||
void initialize_parser() {
|
||||
g_parser_show_errors = new name{"parser", "show_errors"};
|
||||
g_parser_parallel_import = new name{"parser", "parallel_import"};
|
||||
g_new_elaborator = new name{"new_elaborator"};
|
||||
register_bool_option(*g_parser_show_errors, LEAN_DEFAULT_PARSER_SHOW_ERRORS,
|
||||
"(lean parser) display error messages in the regular output channel");
|
||||
register_bool_option(*g_parser_parallel_import, LEAN_DEFAULT_PARSER_PARALLEL_IMPORT,
|
||||
"(lean parser) import modules in parallel");
|
||||
register_bool_option(*g_new_elaborator, false, "(lean parser) use new elaborator");
|
||||
g_tmp_prefix = new name(name::mk_internal_unique_name());
|
||||
g_anonymous_inst_name_prefix = new name("_inst");
|
||||
}
|
||||
|
|
@ -2370,6 +2362,5 @@ void finalize_parser() {
|
|||
delete g_tmp_prefix;
|
||||
delete g_parser_show_errors;
|
||||
delete g_parser_parallel_import;
|
||||
delete g_new_elaborator;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -234,9 +234,6 @@ public:
|
|||
|
||||
cmd_table const & cmds() const { return get_cmd_table(env()); }
|
||||
|
||||
/* TODO(Leo): delete after we finish the transition to new elaborator */
|
||||
bool use_new_elaborator() const { return m_new_elaborator; }
|
||||
|
||||
void set_cache(definition_cache * c) { m_cache = c; }
|
||||
void cache_definition(name const & n, expr const & pre_type, expr const & pre_value,
|
||||
level_param_names const & ls, expr const & type, expr const & value, bool is_trusted);
|
||||
|
|
|
|||
|
|
@ -1,4 +1,3 @@
|
|||
set_option new_elaborator true
|
||||
universe variables u
|
||||
variables (A : Type u) [H : inhabited A] (x : A)
|
||||
include H
|
||||
|
|
|
|||
|
|
@ -1,4 +1,3 @@
|
|||
set_option new_elaborator true open nat
|
||||
section
|
||||
universe l
|
||||
definition A {n : ℕ} (t : Type l) := t
|
||||
|
|
|
|||
|
|
@ -1,4 +1,3 @@
|
|||
set_option new_elaborator true
|
||||
open tactic
|
||||
|
||||
constant f : nat → nat
|
||||
|
|
|
|||
|
|
@ -1,9 +1,9 @@
|
|||
attribute_bug1.lean:8:0: error: simp tactic failed to simplify
|
||||
attribute_bug1.lean:7:0: error: simp tactic failed to simplify
|
||||
state:
|
||||
n : ℕ
|
||||
⊢ f n = n + 1
|
||||
constant fdef : ∀ (n : ℕ), f n = n + 1
|
||||
attribute_bug1.lean:20:0: error: simp tactic failed to simplify
|
||||
attribute_bug1.lean:19:0: error: simp tactic failed to simplify
|
||||
state:
|
||||
n : ℕ
|
||||
⊢ f n = n + 1
|
||||
|
|
|
|||
|
|
@ -1,4 +1,3 @@
|
|||
set_option new_elaborator true
|
||||
universe variables u
|
||||
definition foo (A : Type u) := A
|
||||
|
||||
|
|
|
|||
|
|
@ -1,2 +1,2 @@
|
|||
attributes.lean:6:0: error: cannot remove attribute [reducible]
|
||||
attributes.lean:10:0: error: cannot remove attribute [instance]
|
||||
attributes.lean:5:0: error: cannot remove attribute [reducible]
|
||||
attributes.lean:9:0: error: cannot remove attribute [instance]
|
||||
|
|
|
|||
|
|
@ -1,4 +1,3 @@
|
|||
set_option new_elaborator true
|
||||
|
||||
inductive vec (A : Type*) : nat → Type*
|
||||
| nil : vec 0
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
aux_decl_zeta.lean:7:0: error: equation compiler failed to create auxiliary declaration 'f._match_1', auxiliary declaration has references to let-declarations (possible solution: use 'set_option eqn_compiler.zeta true')
|
||||
aux_decl_zeta.lean:6:0: error: equation compiler failed to create auxiliary declaration 'f._match_1', auxiliary declaration has references to let-declarations (possible solution: use 'set_option eqn_compiler.zeta true')
|
||||
nested exception message:
|
||||
type mismatch at application
|
||||
x = w
|
||||
|
|
|
|||
|
|
@ -1,4 +1,3 @@
|
|||
set_option new_elaborator true
|
||||
universe variables u
|
||||
definition f : nat → nat → nat
|
||||
| a .a := a
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
bad_inaccessible.lean:4:5: error: invalid use of inaccessible term, it is not fixed by other arguments
|
||||
bad_inaccessible.lean:7:7: error: invalid use of inaccessible term, the provided term is
|
||||
bad_inaccessible.lean:3:5: error: invalid use of inaccessible term, it is not fixed by other arguments
|
||||
bad_inaccessible.lean:6:7: error: invalid use of inaccessible term, the provided term is
|
||||
b
|
||||
but is expected to be
|
||||
a
|
||||
bad_inaccessible.lean:15:3: error: invalid use of inaccessible term, it is not completely fixed by other arguments
|
||||
bad_inaccessible.lean:14:3: error: invalid use of inaccessible term, it is not completely fixed by other arguments
|
||||
.?m_1 + 1
|
||||
|
|
|
|||
|
|
@ -1,4 +1,3 @@
|
|||
set_option new_elaborator true
|
||||
universe variables u
|
||||
inductive vec (A : Type u) : nat → Type (max 1 u)
|
||||
| nil {} : vec 0
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
bad_inaccessible2.lean:32:2: error: type mismatch at application
|
||||
bad_inaccessible2.lean:31:2: error: type mismatch at application
|
||||
map_head (cons a va) (cons b vb)
|
||||
term
|
||||
cons b vb
|
||||
|
|
|
|||
|
|
@ -1,4 +1,3 @@
|
|||
set_option new_elaborator true --
|
||||
open tactic nat
|
||||
|
||||
example (a b : nat) : a ≠ b → ¬ a = b :=
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ a_1 : ¬¬a = b,
|
|||
H : ¬a = b
|
||||
⊢ false
|
||||
-------
|
||||
by_contradiction.lean:23:0: error: tactic by_contradiction failed, target is not a negation nor a decidable proposition (remark: when 'local attribute classical.prop_decidable [instance]' is used all propositions are decidable)
|
||||
by_contradiction.lean:22:0: error: tactic by_contradiction failed, target is not a negation nor a decidable proposition (remark: when 'local attribute classical.prop_decidable [instance]' is used all propositions are decidable)
|
||||
state:
|
||||
p q : Prop,
|
||||
a : ¬¬p
|
||||
|
|
|
|||
|
|
@ -1,4 +1,3 @@
|
|||
set_option new_elaborator true
|
||||
definition foo_attr : caching_user_attribute :=
|
||||
⟨`foo, "bar", string, list.join ∘ list.map (list.append "\n" ∘ to_string ∘ declaration.to_name) ⟩
|
||||
|
||||
|
|
|
|||
|
|
@ -1,4 +1,3 @@
|
|||
set_option new_elaborator true
|
||||
universe variables u
|
||||
namespace N1
|
||||
definition pr {A : Type u} (a b : A) := a
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
pr : Π {A : Type u_1}, A → A → A
|
||||
pr a b : N
|
||||
choice_expl.lean:16:6: error: ambiguous overload, possible interpretations
|
||||
choice_expl.lean:15:6: error: ambiguous overload, possible interpretations
|
||||
N2.pr a b
|
||||
N1.pr a b
|
||||
|
|
|
|||
|
|
@ -2,4 +2,3 @@
|
|||
prelude
|
||||
set_option pp.colors false
|
||||
set_option pp.unicode true
|
||||
set_option new_elaborator true
|
||||
|
|
|
|||
|
|
@ -1,4 +1,3 @@
|
|||
set_option new_elaborator true
|
||||
universe variable u
|
||||
variable {A : Type u}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
def1.lean:6:16: error: "eliminator" elaborator type mismatch, term
|
||||
def1.lean:5:16: error: "eliminator" elaborator type mismatch, term
|
||||
rfl
|
||||
has type
|
||||
?m_2 = ?m_2
|
||||
|
|
|
|||
|
|
@ -1,4 +1,3 @@
|
|||
set_option new_elaborator true
|
||||
|
||||
axiom val : nat
|
||||
|
||||
|
|
|
|||
|
|
@ -1,2 +1,2 @@
|
|||
def2.lean:5:0: error: definition 'foo' is noncomputable, it depends on 'val'
|
||||
def2.lean:11:0: error: definition 'bla' was incorrectly marked as noncomputable
|
||||
def2.lean:4:0: error: definition 'foo' is noncomputable, it depends on 'val'
|
||||
def2.lean:10:0: error: definition 'bla' was incorrectly marked as noncomputable
|
||||
|
|
|
|||
|
|
@ -1,4 +1,3 @@
|
|||
set_option new_elaborator true
|
||||
universe variable u
|
||||
section
|
||||
variable (A : Type u)
|
||||
|
|
|
|||
|
|
@ -1,4 +1,3 @@
|
|||
set_option new_elaborator true
|
||||
universe variable u
|
||||
section
|
||||
parameter (A : Type u)
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
f : A → A
|
||||
def4.lean:10:8: error: type mismatch at application
|
||||
def4.lean:9:8: error: type mismatch at application
|
||||
f 0
|
||||
term
|
||||
0
|
||||
|
|
@ -8,7 +8,7 @@ has type
|
|||
but is expected to have type
|
||||
A
|
||||
g : A → A
|
||||
def4.lean:18:8: error: type mismatch at application
|
||||
def4.lean:17:8: error: type mismatch at application
|
||||
g 0
|
||||
term
|
||||
0
|
||||
|
|
|
|||
|
|
@ -1,4 +1,3 @@
|
|||
set_option new_elaborator true
|
||||
set_option eqn_compiler.dsimp true
|
||||
open nat
|
||||
|
||||
|
|
|
|||
|
|
@ -1,4 +1,3 @@
|
|||
set_option new_elaborator true
|
||||
set_option eqn_compiler.lemmas false -- TODO(Leo): remove
|
||||
definition f : string → nat → nat
|
||||
| "hello world" 1 := 0
|
||||
|
|
|
|||
|
|
@ -1,5 +1,4 @@
|
|||
open tactic
|
||||
set_option new_elaborator true
|
||||
set_option pp.notation false
|
||||
universe variables u
|
||||
check
|
||||
|
|
|
|||
|
|
@ -1,4 +1,3 @@
|
|||
set_option new_elaborator true
|
||||
|
||||
print "parametric meta_definition"
|
||||
meta_definition f {A : Type} : nat → A → A → A
|
||||
|
|
|
|||
|
|
@ -1,4 +1,3 @@
|
|||
set_option new_elaborator true
|
||||
open nat
|
||||
|
||||
theorem succ_ne_self : ∀ (n : ℕ), succ n ≠ n
|
||||
|
|
|
|||
|
|
@ -1 +1 @@
|
|||
eqn_compiler_loop.lean:4:8: error: invalid non-exhaustive set of equations (use 'set_option trace.eqn_compiler.elim_match true' for additional details)
|
||||
eqn_compiler_loop.lean:3:8: error: invalid non-exhaustive set of equations (use 'set_option trace.eqn_compiler.elim_match true' for additional details)
|
||||
|
|
|
|||
|
|
@ -1,4 +1,3 @@
|
|||
set_option new_elaborator true
|
||||
|
||||
definition f : nat → nat
|
||||
| 0 := _
|
||||
|
|
|
|||
|
|
@ -1,8 +1,8 @@
|
|||
eqn_hole.lean:4:7: error: don't know how to synthesize placeholder
|
||||
eqn_hole.lean:3:7: error: don't know how to synthesize placeholder
|
||||
state:
|
||||
f : ℕ → ℕ
|
||||
⊢ ℕ
|
||||
eqn_hole.lean:9:13: error: don't know how to synthesize placeholder
|
||||
eqn_hole.lean:8:13: error: don't know how to synthesize placeholder
|
||||
state:
|
||||
g : ℕ → ℕ,
|
||||
n : ℕ
|
||||
|
|
|
|||
|
|
@ -1,4 +1,3 @@
|
|||
set_option new_elaborator true
|
||||
set_option eqn_compiler.dsimp true
|
||||
attribute [eqn_sanitizer]
|
||||
definition succ_eq (a : nat) : nat.succ a = a + 1 :=
|
||||
|
|
|
|||
|
|
@ -1,4 +1,3 @@
|
|||
set_option new_elaborator true
|
||||
|
||||
inductive foo
|
||||
| mk : (nat → nat) → foo
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
hole_in_fn.lean:7:13: error: don't know how to synthesize placeholder
|
||||
hole_in_fn.lean:6:13: error: don't know how to synthesize placeholder
|
||||
state:
|
||||
n : ℕ
|
||||
⊢ ℕ
|
||||
|
|
|
|||
|
|
@ -1,4 +1,3 @@
|
|||
set_option new_elaborator true
|
||||
|
||||
constant bag_setoid : ∀ A, setoid (list A)
|
||||
attribute [instance] bag_setoid
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
hole_issue2.lean:23:74: error: don't know how to synthesize placeholder
|
||||
hole_issue2.lean:22:74: error: don't know how to synthesize placeholder
|
||||
state:
|
||||
A : Type,
|
||||
b₁ b₂ : bag A,
|
||||
|
|
@ -9,7 +9,7 @@ h : ⟦l₁⟧ ⊆ ⟦l₂⟧,
|
|||
w : A,
|
||||
hw : ¬list.count w l₁ ≤ list.count w l₂
|
||||
⊢ false
|
||||
hole_issue2.lean:30:65: error: don't know how to synthesize placeholder
|
||||
hole_issue2.lean:29:65: error: don't know how to synthesize placeholder
|
||||
state:
|
||||
A : Type,
|
||||
b₁ b₂ : bag A,
|
||||
|
|
@ -18,7 +18,7 @@ _match : Π (b : bool), subcount l₁ l₂ = b → decidable (⟦l₁⟧ ⊆ ⟦
|
|||
H : subcount l₁ l₂ = ff,
|
||||
h : ⟦l₁⟧ ⊆ ⟦l₂⟧
|
||||
⊢ ∀ (a : A), ¬list.count a l₁ ≤ list.count a l₂ → false
|
||||
hole_issue2.lean:37:28: error: don't know how to synthesize placeholder
|
||||
hole_issue2.lean:36:28: error: don't know how to synthesize placeholder
|
||||
state:
|
||||
A : Type,
|
||||
b₁ b₂ : bag A,
|
||||
|
|
|
|||
|
|
@ -1,4 +1,3 @@
|
|||
set_option new_elaborator true
|
||||
|
||||
inductive imf {A B : Type*} (f : A → B) : B → Type*
|
||||
| mk : ∀ (a : A), imf (f a)
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
inaccessible2.lean:7:7: error: invalid occurrence of 'inaccessible' annotation, it must only occur in patterns
|
||||
inaccessible2.lean:10:10: error: invalid pattern, must be an application, constant, variable, type ascription or inaccessible term
|
||||
inaccessible2.lean:13:13: error: invalid pattern, must be an application, constant, variable, type ascription or inaccessible term
|
||||
inaccessible2.lean:16:9: error: invalid pattern, in a constructor application, the parameters of the inductive datatype must be marked as inaccessible
|
||||
inaccessible2.lean:6:7: error: invalid occurrence of 'inaccessible' annotation, it must only occur in patterns
|
||||
inaccessible2.lean:9:10: error: invalid pattern, must be an application, constant, variable, type ascription or inaccessible term
|
||||
inaccessible2.lean:12:13: error: invalid pattern, must be an application, constant, variable, type ascription or inaccessible term
|
||||
inaccessible2.lean:15:9: error: invalid pattern, in a constructor application, the parameters of the inductive datatype must be marked as inaccessible
|
||||
|
|
|
|||
|
|
@ -1,4 +1,3 @@
|
|||
set_option new_elaborator true --
|
||||
set_option pp.notation false
|
||||
|
||||
inductive [class] C (A : Type*)
|
||||
|
|
|
|||
|
|
@ -1,4 +1,3 @@
|
|||
set_option new_elaborator true
|
||||
|
||||
definition f (A : Type*) (a : A) :=
|
||||
have has_add A, from has_add.mk (λ (a b : A), a),
|
||||
|
|
|
|||
|
|
@ -1,14 +1,14 @@
|
|||
instance_cache1.lean:5:2: error: failed to synthesize type class instance for
|
||||
instance_cache1.lean:4:2: error: failed to synthesize type class instance for
|
||||
A : Type ?,
|
||||
a : A,
|
||||
this : has_add A
|
||||
⊢ has_add A
|
||||
instance_cache1.lean:8:7: error: failed to synthesize type class instance for
|
||||
instance_cache1.lean:7:7: error: failed to synthesize type class instance for
|
||||
A : Type ?,
|
||||
a : A,
|
||||
s : has_add A
|
||||
⊢ has_add A
|
||||
instance_cache1.lean:11:19: error: failed to synthesize type class instance for
|
||||
instance_cache1.lean:10:19: error: failed to synthesize type class instance for
|
||||
A : Type ?,
|
||||
a : A,
|
||||
s : has_add A
|
||||
|
|
|
|||
|
|
@ -1,5 +1,4 @@
|
|||
prelude -- Correct version
|
||||
set_option new_elaborator true
|
||||
check let bool := Type.{0},
|
||||
and (p q : bool) := ∀ c : bool, (p → q → c) → c,
|
||||
infixl `∧`:25 := and,
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@ let bool : Type := Prop,
|
|||
and_elim_right : Π (p q : bool), and p q → q := λ (p q : bool) (H : and p q), H q (λ (H1 : p) (H2 : q), H2)
|
||||
in and_intro :
|
||||
∀ (p q : Prop), p → q → ∀ (c : Prop), (p → q → c) → c
|
||||
let1.lean:20:19: error: invalid let-expression, expression
|
||||
let1.lean:19:19: error: invalid let-expression, expression
|
||||
λ (p q : bool) (H1 : p) (H2 : q) (c : bool) (H : p → q → c), H H1 H2
|
||||
has type
|
||||
Π (p q : bool), p → q → Π (c : bool), (p → q → c) → c
|
||||
|
|
|
|||
|
|
@ -1,5 +1,4 @@
|
|||
--
|
||||
set_option new_elaborator true
|
||||
|
||||
constant f : num → num → num → num
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,4 @@
|
|||
--
|
||||
set_option new_elaborator true
|
||||
|
||||
constant f : num → num → num → num
|
||||
|
||||
|
|
|
|||
|
|
@ -1,4 +1,3 @@
|
|||
set_option new_elaborator true
|
||||
|
||||
definition f : string → nat → bool
|
||||
| "hello world" 1 := tt
|
||||
|
|
|
|||
|
|
@ -1 +1 @@
|
|||
non_exhaustive_error.lean:3:11: error: invalid non-exhaustive set of equations (use 'set_option trace.eqn_compiler.elim_match true' for additional details)
|
||||
non_exhaustive_error.lean:2:11: error: invalid non-exhaustive set of equations (use 'set_option trace.eqn_compiler.elim_match true' for additional details)
|
||||
|
|
|
|||
|
|
@ -1,4 +1,3 @@
|
|||
open subtype set_option new_elaborator true
|
||||
theorem foo1 : 0 = (0:num) :=
|
||||
rfl
|
||||
|
||||
|
|
|
|||
|
|
@ -1,4 +1,3 @@
|
|||
set_option new_elaborator true
|
||||
constant g : nat → nat
|
||||
|
||||
noncomputable definition f := g
|
||||
|
|
|
|||
|
|
@ -1,16 +1,16 @@
|
|||
red.lean:10:19: error: type mismatch, expression
|
||||
red.lean:9:19: error: type mismatch, expression
|
||||
rfl
|
||||
has type
|
||||
?m_2 = ?m_2
|
||||
but is expected to have type
|
||||
f = g
|
||||
red.lean:13:0: error: "eliminator" elaborator type mismatch, term
|
||||
red.lean:12:0: error: "eliminator" elaborator type mismatch, term
|
||||
rfl
|
||||
has type
|
||||
?m_2 = ?m_2
|
||||
but is expected to have type
|
||||
f a = a
|
||||
red.lean:18:0: error: "eliminator" elaborator type mismatch, term
|
||||
red.lean:17:0: error: "eliminator" elaborator type mismatch, term
|
||||
rfl
|
||||
has type
|
||||
?m_2 = ?m_2
|
||||
|
|
|
|||
|
|
@ -1,4 +1,3 @@
|
|||
set_option new_elaborator true
|
||||
open nat
|
||||
|
||||
inductive type : Type
|
||||
|
|
|
|||
|
|
@ -1,4 +1,3 @@
|
|||
set_option new_elaborator true
|
||||
|
||||
theorem ex2 {A : Type} (H : A = A) (a : A) : cast H a = a :=
|
||||
rfl
|
||||
|
|
|
|||
|
|
@ -1,4 +1,3 @@
|
|||
set_option new_elaborator true
|
||||
open tactic expr
|
||||
|
||||
constant nat.add_assoc (a b c : nat) : (a + b) + c = a + (b + c)
|
||||
|
|
|
|||
|
|
@ -1,4 +1,3 @@
|
|||
set_option new_elaborator true
|
||||
|
||||
example (a b : nat) (p : nat → nat → Prop) (h₁ : p a b) (h₂ : a = b) : p b b :=
|
||||
@@eq.subst (λ x, p x b) h₂ h₁
|
||||
|
|
|
|||
|
|
@ -1,5 +1,4 @@
|
|||
prelude
|
||||
set_option new_elaborator true
|
||||
|
||||
constant {l1 l2} A : Type l1 → Type l2
|
||||
check A
|
||||
|
|
|
|||
|
|
@ -1,4 +1,3 @@
|
|||
set_option new_elaborator true
|
||||
|
||||
theorem ex {A : Type} : ∀ {a a' : A}, a == a' → a = a'
|
||||
| a .a (heq.refl .a) := eq.refl a
|
||||
|
|
|
|||
|
|
@ -1,4 +1,3 @@
|
|||
set_option new_elaborator true
|
||||
|
||||
inductive vec (A : Type*) : nat → Type*
|
||||
| nil : vec 0
|
||||
|
|
|
|||
|
|
@ -1,7 +1,6 @@
|
|||
open nat
|
||||
open eq
|
||||
set_option pp.coercions true
|
||||
set_option new_elaborator true
|
||||
namespace foo
|
||||
theorem trans {a b c : nat} (H1 : a = b) (H2 : b = c) : a = c :=
|
||||
trans H1 H2
|
||||
|
|
|
|||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Reference in a new issue