diff --git a/stage0/src/kernel/cache_stack.h b/stage0/src/kernel/cache_stack.h deleted file mode 100644 index 1c16f29103..0000000000 --- a/stage0/src/kernel/cache_stack.h +++ /dev/null @@ -1,41 +0,0 @@ -/* -Copyright (c) 2013 Microsoft Corporation. All rights reserved. -Released under Apache 2.0 license as described in the file LICENSE. - -Author: Leonardo de Moura -*/ -#pragma once -#include -#include -#include "runtime/debug.h" - -/** \brief Macro for creating a stack of objects of type Cache in thread local storage. - The argument \c Arg is provided to every new instance of Cache. - The macro provides the helper class Cache_ref that "reuses" cache objects from the stack. -*/ -#define MK_CACHE_STACK(Cache, Arg) \ -struct Cache ## _stack { \ - unsigned m_top; \ - std::vector> m_cache_stack; \ - Cache ## _stack():m_top(0) {} \ -}; \ -MK_THREAD_LOCAL_GET_DEF(Cache ## _stack, get_ ## Cache ## _stack); \ -class Cache ## _ref { \ - Cache * m_cache; \ -public: \ - Cache ## _ref() { \ - Cache ## _stack & s = get_ ## Cache ## _stack(); \ - lean_assert(s.m_top <= s.m_cache_stack.size()); \ - if (s.m_top == s.m_cache_stack.size()) \ - s.m_cache_stack.push_back(std::unique_ptr(new Cache(Arg))); \ - m_cache = s.m_cache_stack[s.m_top].get(); \ - s.m_top++; \ - } \ - ~Cache ## _ref() { \ - Cache ## _stack & s = get_ ## Cache ## _stack(); \ - lean_assert(s.m_top > 0); \ - s.m_top--; \ - m_cache->clear(); \ - } \ - Cache * operator->() const { return m_cache; } \ -}; diff --git a/stage0/src/kernel/replace_fn.cpp b/stage0/src/kernel/replace_fn.cpp index f0b995d6d1..23883f1d8b 100644 --- a/stage0/src/kernel/replace_fn.cpp +++ b/stage0/src/kernel/replace_fn.cpp @@ -6,75 +6,35 @@ Author: Leonardo de Moura */ #include #include +#include #include "kernel/replace_fn.h" -#include "kernel/cache_stack.h" - -#ifndef LEAN_DEFAULT_REPLACE_CACHE_CAPACITY -#define LEAN_DEFAULT_REPLACE_CACHE_CAPACITY 1024*8 -#endif namespace lean { -struct replace_cache { - struct entry { - object * m_cell; - unsigned m_offset; - expr m_result; - entry():m_cell(nullptr) {} - }; - unsigned m_capacity; - std::vector m_cache; - std::vector m_used; - replace_cache(unsigned c):m_capacity(c), m_cache(c) {} - - expr * find(expr const & e, unsigned offset) { - unsigned i = hash(hash(e), offset) % m_capacity; - if (m_cache[i].m_cell == e.raw() && m_cache[i].m_offset == offset) - return &m_cache[i].m_result; - else - return nullptr; - } - - void insert(expr const & e, unsigned offset, expr const & v) { - unsigned i = hash(hash(e), offset) % m_capacity; - if (m_cache[i].m_cell == nullptr) - m_used.push_back(i); - m_cache[i].m_cell = e.raw(); - m_cache[i].m_offset = offset; - m_cache[i].m_result = v; - } - - void clear() { - for (unsigned i : m_used) { - m_cache[i].m_cell = nullptr; - m_cache[i].m_result = expr(); - } - m_used.clear(); - } -}; - -/* CACHE_RESET: NO */ -MK_CACHE_STACK(replace_cache, LEAN_DEFAULT_REPLACE_CACHE_CAPACITY) class replace_rec_fn { - replace_cache_ref m_cache; + struct key_hasher { + std::size_t operator()(std::pair const & p) const { + return hash((size_t)p.first, p.second); + } + }; + std::unordered_map, expr, key_hasher> m_cache; std::function(expr const &, unsigned)> m_f; bool m_use_cache; expr save_result(expr const & e, unsigned offset, expr const & r, bool shared) { if (shared) - m_cache->insert(e, offset, r); + m_cache.insert(mk_pair(mk_pair(e.raw(), offset), r)); return r; } expr apply(expr const & e, unsigned offset) { bool shared = false; if (m_use_cache && is_shared(e)) { - if (auto r = m_cache->find(e, offset)) - return *r; + auto it = m_cache.find(mk_pair(e.raw(), offset)); + if (it != m_cache.end()) + return it->second; shared = true; } - check_system("replace"); - if (optional r = m_f(e, offset)) { return save_result(e, offset, *r, shared); } else { @@ -121,4 +81,73 @@ public: expr replace(expr const & e, std::function(expr const &, unsigned)> const & f, bool use_cache) { return replace_rec_fn(f, use_cache)(e); } + +class replace_fn { + std::unordered_map m_cache; + lean_object * m_f; + + expr save_result(expr const & e, expr const & r, bool shared) { + if (shared) + m_cache.insert(mk_pair(e.raw(), r)); + return r; + } + + expr apply(expr const & e) { + bool shared = false; + if (is_shared(e)) { + auto it = m_cache.find(e.raw()); + if (it != m_cache.end()) + return it->second; + shared = true; + } + + lean_inc(e.raw()); + lean_inc_ref(m_f); + lean_object * r = lean_apply_1(m_f, e.raw()); + if (!lean_is_scalar(r)) { + expr e_new(lean_ctor_get(r, 0)); + lean_dec_ref(r); + return save_result(e, e_new, shared); + } + + switch (e.kind()) { + case expr_kind::Const: case expr_kind::Sort: + case expr_kind::BVar: case expr_kind::Lit: + case expr_kind::MVar: case expr_kind::FVar: + return save_result(e, e, shared); + case expr_kind::MData: { + expr new_e = apply(mdata_expr(e)); + return save_result(e, update_mdata(e, new_e), shared); + } + case expr_kind::Proj: { + expr new_e = apply(proj_expr(e)); + return save_result(e, update_proj(e, new_e), shared); + } + case expr_kind::App: { + expr new_f = apply(app_fn(e)); + expr new_a = apply(app_arg(e)); + return save_result(e, update_app(e, new_f, new_a), shared); + } + case expr_kind::Pi: case expr_kind::Lambda: { + expr new_d = apply(binding_domain(e)); + expr new_b = apply(binding_body(e)); + return save_result(e, update_binding(e, new_d, new_b), shared); + } + case expr_kind::Let: { + expr new_t = apply(let_type(e)); + expr new_v = apply(let_value(e)); + expr new_b = apply(let_body(e)); + return save_result(e, update_let(e, new_t, new_v, new_b), shared); + }} + lean_unreachable(); + } +public: + replace_fn(lean_object * f):m_f(f) {} + expr operator()(expr const & e) { return apply(e); } +}; + +extern "C" LEAN_EXPORT obj_res lean_replace_expr(b_obj_arg f, b_obj_arg e) { + expr r = replace_fn(f)(TO_REF(expr, e)); + return r.steal(); +} } diff --git a/stage0/stdlib/Lean/AddDecl.c b/stage0/stdlib/Lean/AddDecl.c index c7f8cf5bc9..032d2c5a9d 100644 --- a/stage0/stdlib/Lean/AddDecl.c +++ b/stage0/stdlib/Lean/AddDecl.c @@ -2761,14 +2761,12 @@ if (x_9 == 0) { uint8_t x_10; uint8_t x_11; x_10 = 0; -lean_inc(x_1); x_11 = l_Lean_Declaration_foldExprM___at_Lean_Declaration_hasSorry___spec__1(x_1, x_10); if (x_11 == 0) { lean_object* x_12; lean_object* x_13; x_12 = lean_box(0); x_13 = l_Lean_addDecl___lambda__2(x_1, x_12, x_2, x_3, x_7); -lean_dec(x_1); return x_13; } else @@ -2784,7 +2782,6 @@ lean_inc(x_17); lean_dec(x_15); x_18 = l_Lean_addDecl___lambda__2(x_1, x_16, x_2, x_3, x_17); lean_dec(x_16); -lean_dec(x_1); return x_18; } } @@ -2793,7 +2790,6 @@ else lean_object* x_19; lean_object* x_20; x_19 = lean_box(0); x_20 = l_Lean_addDecl___lambda__2(x_1, x_19, x_2, x_3, x_7); -lean_dec(x_1); return x_20; } } @@ -3053,6 +3049,7 @@ _start: lean_object* x_5; x_5 = l_Lean_addDecl___lambda__3(x_1, x_2, x_3, x_4); lean_dec(x_3); +lean_dec(x_1); return x_5; } } diff --git a/stage0/stdlib/Lean/Compiler/InlineAttrs.c b/stage0/stdlib/Lean/Compiler/InlineAttrs.c index 3315d6dbae..51e3e10361 100644 --- a/stage0/stdlib/Lean/Compiler/InlineAttrs.c +++ b/stage0/stdlib/Lean/Compiler/InlineAttrs.c @@ -103,7 +103,6 @@ lean_object* l_Lean_MessageData_ofExpr(lean_object*); LEAN_EXPORT lean_object* l_Lean_Compiler_initFn____x40_Lean_Compiler_InlineAttrs___hyg_267____lambda__1___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); static lean_object* l_Lean_Compiler_initFn____x40_Lean_Compiler_InlineAttrs___hyg_267____lambda__1___closed__1; LEAN_EXPORT lean_object* l___private_Lean_Compiler_InlineAttrs_0__Lean_Compiler_hasInlineAttrAux___boxed(lean_object*, lean_object*, lean_object*); -lean_object* l_Lean_Expr_FindImpl_findUnsafe_x3f(lean_object*, lean_object*); LEAN_EXPORT uint8_t l___private_Lean_Compiler_InlineAttrs_0__Lean_Compiler_hasInlineAttrAux(lean_object*, uint8_t, lean_object*); static lean_object* l_Lean_Compiler_initFn____x40_Lean_Compiler_InlineAttrs___hyg_267____closed__15; static lean_object* l_Lean_Compiler_setInlineAttribute___closed__1; @@ -137,6 +136,7 @@ LEAN_EXPORT lean_object* l_Lean_Compiler_InlineAttributeKind_noConfusion(lean_ob static lean_object* l_Lean_Compiler_initFn____x40_Lean_Compiler_InlineAttrs___hyg_267____closed__30; static lean_object* l_Lean_getConstInfo___at___private_Lean_Compiler_InlineAttrs_0__Lean_Compiler_isValidMacroInline___spec__1___closed__4; uint8_t l_Lean_isAuxRecursorWithSuffix(lean_object*, lean_object*, lean_object*); +lean_object* lean_find_expr(lean_object*, lean_object*); LEAN_EXPORT lean_object* l_Lean_Compiler_getInlineAttribute_x3f(lean_object*, lean_object*); uint8_t lean_is_eager_lambda_lifting_name(lean_object*); static lean_object* l_Lean_Compiler_initFn____x40_Lean_Compiler_InlineAttrs___hyg_267____closed__1; @@ -665,9 +665,8 @@ x_13 = lean_alloc_closure((void*)(l___private_Lean_Compiler_InlineAttrs_0__Lean_ lean_closure_set(x_13, 0, x_11); lean_closure_set(x_13, 1, x_1); x_14 = lean_ctor_get(x_2, 1); -lean_inc(x_14); -lean_dec(x_2); -x_15 = l_Lean_Expr_FindImpl_findUnsafe_x3f(x_13, x_14); +x_15 = lean_find_expr(x_13, x_14); +lean_dec(x_13); if (lean_obj_tag(x_15) == 0) { lean_object* x_16; lean_object* x_17; @@ -704,9 +703,8 @@ x_24 = lean_alloc_closure((void*)(l___private_Lean_Compiler_InlineAttrs_0__Lean_ lean_closure_set(x_24, 0, x_22); lean_closure_set(x_24, 1, x_1); x_25 = lean_ctor_get(x_2, 1); -lean_inc(x_25); -lean_dec(x_2); -x_26 = l_Lean_Expr_FindImpl_findUnsafe_x3f(x_24, x_25); +x_26 = lean_find_expr(x_24, x_25); +lean_dec(x_24); if (lean_obj_tag(x_26) == 0) { lean_object* x_27; lean_object* x_28; @@ -779,6 +777,7 @@ lean_object* x_17; lean_object* x_18; lean_free_object(x_5); x_17 = lean_box(0); x_18 = l___private_Lean_Compiler_InlineAttrs_0__Lean_Compiler_isValidMacroInline___lambda__3(x_1, x_10, x_17, x_2, x_3, x_8); +lean_dec(x_10); return x_18; } } @@ -817,6 +816,7 @@ else lean_object* x_28; lean_object* x_29; x_28 = lean_box(0); x_29 = l___private_Lean_Compiler_InlineAttrs_0__Lean_Compiler_isValidMacroInline___lambda__3(x_1, x_20, x_28, x_2, x_3, x_19); +lean_dec(x_20); return x_29; } } @@ -928,6 +928,7 @@ _start: lean_object* x_7; x_7 = l___private_Lean_Compiler_InlineAttrs_0__Lean_Compiler_isValidMacroInline___lambda__3(x_1, x_2, x_3, x_4, x_5, x_6); lean_dec(x_3); +lean_dec(x_2); return x_7; } } diff --git a/stage0/stdlib/Lean/CoreM.c b/stage0/stdlib/Lean/CoreM.c index 4458550095..4e0e46c6dd 100644 --- a/stage0/stdlib/Lean/CoreM.c +++ b/stage0/stdlib/Lean/CoreM.c @@ -435,7 +435,6 @@ static lean_object* l_Lean_withTraceNode___at_Lean_compileDecl___spec__2___lambd static lean_object* l_Lean_initFn____x40_Lean_CoreM___hyg_43____closed__5; static lean_object* l_Lean_initFn____x40_Lean_CoreM___hyg_43____closed__3; static lean_object* l_Lean_withTraceNode___at_Lean_compileDecl___spec__2___lambda__3___closed__2; -lean_object* l_Lean_Expr_FindImpl_findUnsafe_x3f(lean_object*, lean_object*); static lean_object* l_List_foldlM___at___private_Lean_CoreM_0__Lean_checkUnsupported___spec__2___rarg___lambda__2___closed__4; static lean_object* l_Lean_useDiagnosticMsg___closed__2; LEAN_EXPORT lean_object* l_Lean_Core_instMonadLogCoreM___lambda__4___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); @@ -618,6 +617,7 @@ LEAN_EXPORT lean_object* l_Lean_Core_withCurrHeartbeats___rarg(lean_object*, lea LEAN_EXPORT lean_object* l_Lean_Core_withRestoreOrSaveFull(lean_object*); LEAN_EXPORT lean_object* l_Lean_ImportM_runCoreM(lean_object*); uint8_t lean_level_eq(lean_object*, lean_object*); +lean_object* lean_find_expr(lean_object*, lean_object*); uint8_t lean_nat_dec_le(lean_object*, lean_object*); uint8_t lean_usize_dec_lt(size_t, size_t); LEAN_EXPORT lean_object* l_Lean_Core_instInhabitedCache; @@ -13223,9 +13223,7 @@ _start: { lean_object* x_6; lean_object* x_7; x_6 = lean_ctor_get(x_1, 1); -lean_inc(x_6); -lean_dec(x_1); -x_7 = l_Lean_Expr_FindImpl_findUnsafe_x3f(x_2, x_6); +x_7 = lean_find_expr(x_2, x_6); if (lean_obj_tag(x_7) == 0) { lean_object* x_8; lean_object* x_9; lean_object* x_10; lean_object* x_11; @@ -13327,8 +13325,8 @@ lean_dec(x_13); lean_inc(x_3); x_15 = lean_alloc_closure((void*)(l_List_foldlM___at___private_Lean_CoreM_0__Lean_checkUnsupported___spec__2___rarg___lambda__1___boxed), 2, 1); lean_closure_set(x_15, 0, x_3); -lean_inc(x_15); -x_16 = l_Lean_Expr_FindImpl_findUnsafe_x3f(x_15, x_14); +x_16 = lean_find_expr(x_15, x_14); +lean_dec(x_14); lean_inc(x_2); lean_inc(x_1); x_17 = lean_alloc_closure((void*)(l_List_foldlM___at___private_Lean_CoreM_0__Lean_checkUnsupported___spec__2___rarg___lambda__2___boxed), 5, 4); @@ -13427,8 +13425,8 @@ lean_dec(x_43); lean_inc(x_3); x_45 = lean_alloc_closure((void*)(l_List_foldlM___at___private_Lean_CoreM_0__Lean_checkUnsupported___spec__2___rarg___lambda__1___boxed), 2, 1); lean_closure_set(x_45, 0, x_3); -lean_inc(x_45); -x_46 = l_Lean_Expr_FindImpl_findUnsafe_x3f(x_45, x_44); +x_46 = lean_find_expr(x_45, x_44); +lean_dec(x_44); lean_inc(x_2); lean_inc(x_1); x_47 = lean_alloc_closure((void*)(l_List_foldlM___at___private_Lean_CoreM_0__Lean_checkUnsupported___spec__2___rarg___lambda__2___boxed), 5, 4); @@ -13558,8 +13556,8 @@ lean_inc(x_12); x_13 = lean_ctor_get(x_10, 1); lean_inc(x_13); lean_dec(x_10); -lean_inc(x_3); -x_14 = l_Lean_Expr_FindImpl_findUnsafe_x3f(x_3, x_13); +x_14 = lean_find_expr(x_3, x_13); +lean_dec(x_13); lean_inc(x_2); lean_inc(x_1); x_15 = lean_alloc_closure((void*)(l_List_foldlM___at___private_Lean_CoreM_0__Lean_checkUnsupported___spec__3___rarg___lambda__1), 5, 4); @@ -13640,8 +13638,8 @@ lean_inc(x_36); x_37 = lean_ctor_get(x_34, 1); lean_inc(x_37); lean_dec(x_34); -lean_inc(x_3); -x_38 = l_Lean_Expr_FindImpl_findUnsafe_x3f(x_3, x_37); +x_38 = lean_find_expr(x_3, x_37); +lean_dec(x_37); lean_inc(x_2); lean_inc(x_1); x_39 = lean_alloc_closure((void*)(l_List_foldlM___at___private_Lean_CoreM_0__Lean_checkUnsupported___spec__3___rarg___lambda__1), 5, 4); @@ -13771,8 +13769,8 @@ lean_inc(x_13); lean_inc(x_3); x_14 = lean_alloc_closure((void*)(l_List_foldlM___at___private_Lean_CoreM_0__Lean_checkUnsupported___spec__2___rarg___lambda__1___boxed), 2, 1); lean_closure_set(x_14, 0, x_3); -lean_inc(x_14); -x_15 = l_Lean_Expr_FindImpl_findUnsafe_x3f(x_14, x_13); +x_15 = lean_find_expr(x_14, x_13); +lean_dec(x_13); lean_inc(x_2); lean_inc(x_1); x_16 = lean_alloc_closure((void*)(l_List_foldlM___at___private_Lean_CoreM_0__Lean_checkUnsupported___spec__4___rarg___lambda__1), 5, 4); @@ -13868,8 +13866,8 @@ lean_inc(x_42); lean_inc(x_3); x_43 = lean_alloc_closure((void*)(l_List_foldlM___at___private_Lean_CoreM_0__Lean_checkUnsupported___spec__2___rarg___lambda__1___boxed), 2, 1); lean_closure_set(x_43, 0, x_3); -lean_inc(x_43); -x_44 = l_Lean_Expr_FindImpl_findUnsafe_x3f(x_43, x_42); +x_44 = lean_find_expr(x_43, x_42); +lean_dec(x_42); lean_inc(x_2); lean_inc(x_1); x_45 = lean_alloc_closure((void*)(l_List_foldlM___at___private_Lean_CoreM_0__Lean_checkUnsupported___spec__4___rarg___lambda__1), 5, 4); @@ -13963,7 +13961,7 @@ LEAN_EXPORT lean_object* l_Lean_Declaration_foldExprM___at___private_Lean_CoreM_ _start: { lean_object* x_6; -x_6 = l_Lean_Expr_FindImpl_findUnsafe_x3f(x_1, x_2); +x_6 = lean_find_expr(x_1, x_2); if (lean_obj_tag(x_6) == 0) { lean_object* x_7; lean_object* x_8; lean_object* x_9; lean_object* x_10; @@ -14039,7 +14037,9 @@ lean_inc(x_8); lean_dec(x_7); x_9 = lean_alloc_closure((void*)(l_List_foldlM___at___private_Lean_CoreM_0__Lean_checkUnsupported___spec__2___rarg___lambda__1___boxed), 2, 1); lean_closure_set(x_9, 0, x_3); -x_10 = l_Lean_Expr_FindImpl_findUnsafe_x3f(x_9, x_8); +x_10 = lean_find_expr(x_9, x_8); +lean_dec(x_8); +lean_dec(x_9); if (lean_obj_tag(x_10) == 0) { lean_object* x_11; lean_object* x_12; lean_object* x_13; lean_object* x_14; @@ -14146,8 +14146,8 @@ x_38 = lean_ctor_get(x_1, 1); lean_inc(x_38); x_39 = lean_alloc_closure((void*)(l_List_foldlM___at___private_Lean_CoreM_0__Lean_checkUnsupported___spec__2___rarg___lambda__1___boxed), 2, 1); lean_closure_set(x_39, 0, x_3); -lean_inc(x_39); -x_40 = l_Lean_Expr_FindImpl_findUnsafe_x3f(x_39, x_37); +x_40 = lean_find_expr(x_39, x_37); +lean_dec(x_37); lean_inc(x_2); lean_inc(x_1); x_41 = lean_alloc_closure((void*)(l_Lean_Declaration_foldExprM___at___private_Lean_CoreM_0__Lean_checkUnsupported___spec__1___rarg___lambda__1___boxed), 5, 4); @@ -14273,6 +14273,8 @@ _start: lean_object* x_6; x_6 = l_List_foldlM___at___private_Lean_CoreM_0__Lean_checkUnsupported___spec__2___rarg___lambda__2(x_1, x_2, x_3, x_4, x_5); lean_dec(x_5); +lean_dec(x_2); +lean_dec(x_1); return x_6; } } @@ -14282,6 +14284,8 @@ _start: lean_object* x_6; x_6 = l_Lean_Declaration_foldExprM___at___private_Lean_CoreM_0__Lean_checkUnsupported___spec__1___rarg___lambda__1(x_1, x_2, x_3, x_4, x_5); lean_dec(x_5); +lean_dec(x_2); +lean_dec(x_1); return x_6; } } @@ -16254,7 +16258,9 @@ lean_dec(x_32); lean_inc(x_1); x_34 = lean_alloc_closure((void*)(l_List_foldlM___at___private_Lean_CoreM_0__Lean_checkUnsupported___spec__2___rarg___lambda__1___boxed), 2, 1); lean_closure_set(x_34, 0, x_1); -x_35 = l_Lean_Expr_FindImpl_findUnsafe_x3f(x_34, x_33); +x_35 = lean_find_expr(x_34, x_33); +lean_dec(x_33); +lean_dec(x_34); if (lean_obj_tag(x_35) == 0) { x_11 = x_6; @@ -16321,7 +16327,9 @@ lean_dec(x_8); lean_inc(x_1); x_13 = lean_alloc_closure((void*)(l_List_foldlM___at___private_Lean_CoreM_0__Lean_checkUnsupported___spec__2___rarg___lambda__1___boxed), 2, 1); lean_closure_set(x_13, 0, x_1); -x_14 = l_Lean_Expr_FindImpl_findUnsafe_x3f(x_13, x_12); +x_14 = lean_find_expr(x_13, x_12); +lean_dec(x_12); +lean_dec(x_13); if (lean_obj_tag(x_14) == 0) { lean_object* x_15; @@ -16424,7 +16432,9 @@ lean_dec(x_9); lean_inc(x_1); x_12 = lean_alloc_closure((void*)(l_List_foldlM___at___private_Lean_CoreM_0__Lean_checkUnsupported___spec__2___rarg___lambda__1___boxed), 2, 1); lean_closure_set(x_12, 0, x_1); -x_13 = l_Lean_Expr_FindImpl_findUnsafe_x3f(x_12, x_11); +x_13 = lean_find_expr(x_12, x_11); +lean_dec(x_11); +lean_dec(x_12); if (lean_obj_tag(x_13) == 0) { lean_object* x_14; @@ -16503,7 +16513,9 @@ lean_dec(x_29); lean_inc(x_1); x_32 = lean_alloc_closure((void*)(l_List_foldlM___at___private_Lean_CoreM_0__Lean_checkUnsupported___spec__2___rarg___lambda__1___boxed), 2, 1); lean_closure_set(x_32, 0, x_1); -x_33 = l_Lean_Expr_FindImpl_findUnsafe_x3f(x_32, x_31); +x_33 = lean_find_expr(x_32, x_31); +lean_dec(x_31); +lean_dec(x_32); if (lean_obj_tag(x_33) == 0) { lean_object* x_34; @@ -16598,7 +16610,9 @@ lean_inc(x_20); lean_inc(x_1); x_21 = lean_alloc_closure((void*)(l_List_foldlM___at___private_Lean_CoreM_0__Lean_checkUnsupported___spec__2___rarg___lambda__1___boxed), 2, 1); lean_closure_set(x_21, 0, x_1); -x_22 = l_Lean_Expr_FindImpl_findUnsafe_x3f(x_21, x_20); +x_22 = lean_find_expr(x_21, x_20); +lean_dec(x_20); +lean_dec(x_21); if (lean_obj_tag(x_22) == 0) { lean_object* x_23; lean_object* x_24; lean_object* x_25; @@ -16725,7 +16739,9 @@ lean_inc(x_51); lean_inc(x_1); x_52 = lean_alloc_closure((void*)(l_List_foldlM___at___private_Lean_CoreM_0__Lean_checkUnsupported___spec__2___rarg___lambda__1___boxed), 2, 1); lean_closure_set(x_52, 0, x_1); -x_53 = l_Lean_Expr_FindImpl_findUnsafe_x3f(x_52, x_51); +x_53 = lean_find_expr(x_52, x_51); +lean_dec(x_51); +lean_dec(x_52); if (lean_obj_tag(x_53) == 0) { lean_object* x_54; lean_object* x_55; lean_object* x_56; @@ -16862,7 +16878,9 @@ lean_inc(x_9); lean_dec(x_8); x_10 = lean_alloc_closure((void*)(l_List_foldlM___at___private_Lean_CoreM_0__Lean_checkUnsupported___spec__2___rarg___lambda__1___boxed), 2, 1); lean_closure_set(x_10, 0, x_1); -x_11 = l_Lean_Expr_FindImpl_findUnsafe_x3f(x_10, x_9); +x_11 = lean_find_expr(x_10, x_9); +lean_dec(x_9); +lean_dec(x_10); if (lean_obj_tag(x_11) == 0) { lean_object* x_12; lean_object* x_13; @@ -16926,7 +16944,9 @@ lean_dec(x_25); lean_inc(x_1); x_44 = lean_alloc_closure((void*)(l_List_foldlM___at___private_Lean_CoreM_0__Lean_checkUnsupported___spec__2___rarg___lambda__1___boxed), 2, 1); lean_closure_set(x_44, 0, x_1); -x_45 = l_Lean_Expr_FindImpl_findUnsafe_x3f(x_44, x_27); +x_45 = lean_find_expr(x_44, x_27); +lean_dec(x_27); +lean_dec(x_44); if (lean_obj_tag(x_45) == 0) { x_28 = x_6; @@ -16987,7 +17007,9 @@ block_43: lean_object* x_29; lean_object* x_30; x_29 = lean_alloc_closure((void*)(l_List_foldlM___at___private_Lean_CoreM_0__Lean_checkUnsupported___spec__2___rarg___lambda__1___boxed), 2, 1); lean_closure_set(x_29, 0, x_1); -x_30 = l_Lean_Expr_FindImpl_findUnsafe_x3f(x_29, x_26); +x_30 = lean_find_expr(x_29, x_26); +lean_dec(x_26); +lean_dec(x_29); if (lean_obj_tag(x_30) == 0) { lean_object* x_31; lean_object* x_32; @@ -17052,7 +17074,9 @@ lean_dec(x_59); lean_inc(x_1); x_78 = lean_alloc_closure((void*)(l_List_foldlM___at___private_Lean_CoreM_0__Lean_checkUnsupported___spec__2___rarg___lambda__1___boxed), 2, 1); lean_closure_set(x_78, 0, x_1); -x_79 = l_Lean_Expr_FindImpl_findUnsafe_x3f(x_78, x_61); +x_79 = lean_find_expr(x_78, x_61); +lean_dec(x_61); +lean_dec(x_78); if (lean_obj_tag(x_79) == 0) { x_62 = x_6; @@ -17113,7 +17137,9 @@ block_77: lean_object* x_63; lean_object* x_64; x_63 = lean_alloc_closure((void*)(l_List_foldlM___at___private_Lean_CoreM_0__Lean_checkUnsupported___spec__2___rarg___lambda__1___boxed), 2, 1); lean_closure_set(x_63, 0, x_1); -x_64 = l_Lean_Expr_FindImpl_findUnsafe_x3f(x_63, x_60); +x_64 = lean_find_expr(x_63, x_60); +lean_dec(x_60); +lean_dec(x_63); if (lean_obj_tag(x_64) == 0) { lean_object* x_65; lean_object* x_66; @@ -17178,7 +17204,9 @@ lean_dec(x_93); lean_inc(x_1); x_112 = lean_alloc_closure((void*)(l_List_foldlM___at___private_Lean_CoreM_0__Lean_checkUnsupported___spec__2___rarg___lambda__1___boxed), 2, 1); lean_closure_set(x_112, 0, x_1); -x_113 = l_Lean_Expr_FindImpl_findUnsafe_x3f(x_112, x_95); +x_113 = lean_find_expr(x_112, x_95); +lean_dec(x_95); +lean_dec(x_112); if (lean_obj_tag(x_113) == 0) { x_96 = x_6; @@ -17239,7 +17267,9 @@ block_111: lean_object* x_97; lean_object* x_98; x_97 = lean_alloc_closure((void*)(l_List_foldlM___at___private_Lean_CoreM_0__Lean_checkUnsupported___spec__2___rarg___lambda__1___boxed), 2, 1); lean_closure_set(x_97, 0, x_1); -x_98 = l_Lean_Expr_FindImpl_findUnsafe_x3f(x_97, x_94); +x_98 = lean_find_expr(x_97, x_94); +lean_dec(x_94); +lean_dec(x_97); if (lean_obj_tag(x_98) == 0) { lean_object* x_99; lean_object* x_100; diff --git a/stage0/stdlib/Lean/Elab/App.c b/stage0/stdlib/Lean/Elab/App.c index 846c3723f8..1ce21a24c9 100644 --- a/stage0/stdlib/Lean/Elab/App.c +++ b/stage0/stdlib/Lean/Elab/App.c @@ -841,7 +841,6 @@ LEAN_EXPORT lean_object* l___private_Lean_Elab_App_0__Lean_Elab_Term_ElabAppArgs LEAN_EXPORT lean_object* l___private_Lean_Elab_App_0__Lean_Elab_Term_elabAppFnId_toLVals(lean_object*, lean_object*, uint8_t); LEAN_EXPORT lean_object* l___private_Lean_Elab_App_0__Lean_Elab_Term_throwInvalidFieldNotation___rarg(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); static lean_object* l_Array_foldlMUnsafe_fold___at_Lean_Elab_Term_ElabAppArgs_trySynthesizeAppInstMVars___spec__2___closed__1; -lean_object* l_Lean_Expr_FindImpl_findUnsafe_x3f(lean_object*, lean_object*); LEAN_EXPORT lean_object* l_List_map___at_Lean_Elab_Term_elabAppArgs___spec__1___at_Lean_Elab_Term_elabAppArgs___spec__2(lean_object*, lean_object*, lean_object*); static lean_object* l___regBuiltin_Lean_Elab_Term_elabChoice__1___closed__2; LEAN_EXPORT lean_object* l_Lean_Meta_forallTelescopeReducing___at___private_Lean_Elab_App_0__Lean_Elab_Term_ElabAppArgs_anyNamedArgDependsOnCurrent___spec__19(lean_object*); @@ -1159,6 +1158,7 @@ LEAN_EXPORT lean_object* l___private_Lean_Elab_App_0__Lean_Elab_Term_ElabAppArgs LEAN_EXPORT lean_object* l_Lean_Elab_Term_mkFreshBinderName___at_Lean_Elab_Term_ElabElim_mkMotive___spec__1___rarg___lambda__1(lean_object*, lean_object*, lean_object*, lean_object*); lean_object* lean_infer_type(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); static lean_object* l___private_Lean_Elab_App_0__Lean_Elab_Term_resolveDotName_go___closed__4; +lean_object* lean_find_expr(lean_object*, lean_object*); LEAN_EXPORT uint8_t l_Lean_PersistentArray_anyM___at___private_Lean_Elab_App_0__Lean_Elab_Term_ElabAppArgs_anyNamedArgDependsOnCurrent___spec__13(lean_object*, lean_object*); uint8_t lean_nat_dec_le(lean_object*, lean_object*); LEAN_EXPORT lean_object* l_Lean_Elab_Term_elabAppArgs_elabAsElim_x3f___lambda__2___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); @@ -27985,7 +27985,7 @@ _start: { lean_object* x_2; lean_object* x_3; x_2 = l_Lean_Elab_Term_elabAppArgs_isFirstOrder___closed__1; -x_3 = l_Lean_Expr_FindImpl_findUnsafe_x3f(x_2, x_1); +x_3 = lean_find_expr(x_2, x_1); if (lean_obj_tag(x_3) == 0) { uint8_t x_4; @@ -28016,6 +28016,7 @@ _start: { uint8_t x_2; lean_object* x_3; x_2 = l_Lean_Elab_Term_elabAppArgs_isFirstOrder(x_1); +lean_dec(x_1); x_3 = lean_box(x_2); return x_3; } @@ -28078,7 +28079,6 @@ lean_inc(x_32); x_33 = lean_ctor_get(x_31, 1); lean_inc(x_33); lean_dec(x_31); -lean_inc(x_32); x_34 = l_Lean_Elab_Term_elabAppArgs_isFirstOrder(x_32); if (x_34 == 0) { @@ -28096,7 +28096,9 @@ lean_object* x_36; lean_object* x_37; lean_inc(x_3); x_36 = lean_alloc_closure((void*)(l_Std_Range_forIn_loop___at_Lean_Elab_Term_elabAppArgs_getElabAsElimExtraArgsPos___spec__1___lambda__1___boxed), 2, 1); lean_closure_set(x_36, 0, x_3); -x_37 = l_Lean_Expr_FindImpl_findUnsafe_x3f(x_36, x_32); +x_37 = lean_find_expr(x_36, x_32); +lean_dec(x_32); +lean_dec(x_36); if (lean_obj_tag(x_37) == 0) { lean_object* x_38; @@ -28197,7 +28199,6 @@ lean_inc(x_51); x_52 = lean_ctor_get(x_50, 1); lean_inc(x_52); lean_dec(x_50); -lean_inc(x_51); x_53 = l_Lean_Elab_Term_elabAppArgs_isFirstOrder(x_51); if (x_53 == 0) { @@ -28215,7 +28216,9 @@ lean_object* x_55; lean_object* x_56; lean_inc(x_3); x_55 = lean_alloc_closure((void*)(l_Std_Range_forIn_loop___at_Lean_Elab_Term_elabAppArgs_getElabAsElimExtraArgsPos___spec__1___lambda__1___boxed), 2, 1); lean_closure_set(x_55, 0, x_3); -x_56 = l_Lean_Expr_FindImpl_findUnsafe_x3f(x_55, x_51); +x_56 = lean_find_expr(x_55, x_51); +lean_dec(x_51); +lean_dec(x_55); if (lean_obj_tag(x_56) == 0) { lean_object* x_57; diff --git a/stage0/stdlib/Lean/Elab/ComputedFields.c b/stage0/stdlib/Lean/Elab/ComputedFields.c index 5d026eeb58..e74bfd001b 100644 --- a/stage0/stdlib/Lean/Elab/ComputedFields.c +++ b/stage0/stdlib/Lean/Elab/ComputedFields.c @@ -1177,7 +1177,6 @@ if (x_52 == 0) lean_object* x_53; lean_object* x_54; uint8_t x_55; x_53 = lean_ctor_get(x_51, 0); x_54 = lean_ctor_get(x_51, 1); -lean_inc(x_53); lean_inc(x_1); x_55 = l_Lean_Expr_occurs(x_1, x_53); if (x_55 == 0) @@ -1285,7 +1284,6 @@ x_70 = lean_ctor_get(x_51, 1); lean_inc(x_70); lean_inc(x_69); lean_dec(x_51); -lean_inc(x_69); lean_inc(x_1); x_71 = l_Lean_Expr_occurs(x_1, x_69); if (x_71 == 0) @@ -1435,7 +1433,6 @@ if (x_91 == 0) lean_object* x_92; lean_object* x_93; uint8_t x_94; x_92 = lean_ctor_get(x_90, 0); x_93 = lean_ctor_get(x_90, 1); -lean_inc(x_92); lean_inc(x_1); x_94 = l_Lean_Expr_occurs(x_1, x_92); if (x_94 == 0) @@ -1543,7 +1540,6 @@ x_109 = lean_ctor_get(x_90, 1); lean_inc(x_109); lean_inc(x_108); lean_dec(x_90); -lean_inc(x_108); lean_inc(x_1); x_110 = l_Lean_Expr_occurs(x_1, x_108); if (x_110 == 0) @@ -1693,7 +1689,6 @@ if (x_130 == 0) lean_object* x_131; lean_object* x_132; uint8_t x_133; x_131 = lean_ctor_get(x_129, 0); x_132 = lean_ctor_get(x_129, 1); -lean_inc(x_131); lean_inc(x_1); x_133 = l_Lean_Expr_occurs(x_1, x_131); if (x_133 == 0) @@ -1801,7 +1796,6 @@ x_148 = lean_ctor_get(x_129, 1); lean_inc(x_148); lean_inc(x_147); lean_dec(x_129); -lean_inc(x_147); lean_inc(x_1); x_149 = l_Lean_Expr_occurs(x_1, x_147); if (x_149 == 0) @@ -1960,7 +1954,6 @@ if (x_171 == 0) lean_object* x_172; lean_object* x_173; uint8_t x_174; x_172 = lean_ctor_get(x_170, 0); x_173 = lean_ctor_get(x_170, 1); -lean_inc(x_172); lean_inc(x_1); x_174 = l_Lean_Expr_occurs(x_1, x_172); if (x_174 == 0) @@ -2068,7 +2061,6 @@ x_189 = lean_ctor_get(x_170, 1); lean_inc(x_189); lean_inc(x_188); lean_dec(x_170); -lean_inc(x_188); lean_inc(x_1); x_190 = l_Lean_Expr_occurs(x_1, x_188); if (x_190 == 0) @@ -2320,7 +2312,6 @@ if (x_11 == 0) lean_object* x_12; lean_object* x_13; uint8_t x_14; x_12 = lean_ctor_get(x_10, 0); x_13 = lean_ctor_get(x_10, 1); -lean_inc(x_12); x_14 = l_Lean_Expr_occurs(x_1, x_12); if (x_14 == 0) { @@ -2354,7 +2345,6 @@ x_18 = lean_ctor_get(x_10, 1); lean_inc(x_18); lean_inc(x_17); lean_dec(x_10); -lean_inc(x_17); x_19 = l_Lean_Expr_occurs(x_1, x_17); if (x_19 == 0) { diff --git a/stage0/stdlib/Lean/Elab/MutualDef.c b/stage0/stdlib/Lean/Elab/MutualDef.c index 8a3e8c5597..65cec306dd 100644 --- a/stage0/stdlib/Lean/Elab/MutualDef.c +++ b/stage0/stdlib/Lean/Elab/MutualDef.c @@ -706,7 +706,6 @@ LEAN_EXPORT lean_object* l_Array_forInUnsafe_loop___at___private_Lean_Elab_Mutua LEAN_EXPORT lean_object* l_Lean_RBNode_find___at___private_Lean_Elab_MutualDef_0__Lean_Elab_Term_MutualClosure_mkLetRecClosureFor___spec__4___boxed(lean_object*, lean_object*); static lean_object* l_Array_mapMUnsafe_map___at___private_Lean_Elab_MutualDef_0__Lean_Elab_Term_expandWhereStructInst___spec__5___lambda__2___closed__5; lean_object* l_Lean_LocalDecl_fvarId(lean_object*); -lean_object* l_Lean_Expr_FindExtImpl_findUnsafe_x3f(lean_object*, lean_object*); LEAN_EXPORT lean_object* l___private_Lean_Elab_MutualDef_0__Lean_Elab_Term_MutualClosure_FixPoint_resetModified___rarg(lean_object*); LEAN_EXPORT lean_object* l_Array_mapMUnsafe_map___at___private_Lean_Elab_MutualDef_0__Lean_Elab_Term_levelMVarToParamHeaders___spec__1(size_t, size_t, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); LEAN_EXPORT lean_object* l_Lean_addTrace___at___private_Lean_Elab_MutualDef_0__Lean_Elab_Term_MutualClosure_mkClosureForAux___spec__5___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); @@ -719,6 +718,7 @@ LEAN_EXPORT lean_object* l_Array_forInUnsafe_loop___at___private_Lean_Elab_Mutua static lean_object* l_Array_mapMUnsafe_map___at___private_Lean_Elab_MutualDef_0__Lean_Elab_Term_expandWhereStructInst___spec__3___closed__1; LEAN_EXPORT lean_object* l_Lean_Elab_instInhabitedDefViewElabHeader; lean_object* l_Lean_CollectFVars_main(lean_object*, lean_object*); +lean_object* lean_find_ext_expr(lean_object*, lean_object*); static lean_object* l_Lean_Elab_Command_initFn____x40_Lean_Elab_MutualDef___hyg_15660____closed__13; LEAN_EXPORT lean_object* l___private_Lean_Elab_MutualDef_0__Lean_Elab_Term_MutualClosure_preprocess(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); lean_object* l_Lean_Elab_Term_withAutoBoundImplicitForbiddenPred___rarg(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); @@ -806,7 +806,6 @@ lean_object* l_Lean_Elab_TerminationHints_rememberExtraParams(lean_object*, lean LEAN_EXPORT lean_object* l_Array_mapMUnsafe_map___at___private_Lean_Elab_MutualDef_0__Lean_Elab_Term_expandWhereStructInst___spec__5___lambda__4___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); static lean_object* l_Lean_Elab_Term_checkForHiddenUnivLevels_visitLevel___closed__12; lean_object* l_Lean_Meta_withLCtx___at___private_Lean_Meta_Basic_0__Lean_Meta_mkLeveErrorMessageCore___spec__2___rarg(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); -lean_object* l_Lean_Expr_FindImpl_findUnsafe_x3f(lean_object*, lean_object*); LEAN_EXPORT lean_object* l_Lean_Meta_withLocalDecl___at_Lean_Elab_Term_checkForHiddenUnivLevels_visit___spec__4___rarg___lambda__1(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); LEAN_EXPORT lean_object* l_Nat_foldM_loop___at_Lean_Elab_Term_MutualClosure_pushMain___spec__1___lambda__1(lean_object*, lean_object*, uint8_t, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); extern lean_object* l_Lean_Parser_Term_type; @@ -1123,6 +1122,7 @@ LEAN_EXPORT lean_object* l_Lean_Elab_elabTerminationHints___at___private_Lean_El LEAN_EXPORT lean_object* l_Array_anyMUnsafe_any___at___private_Lean_Elab_MutualDef_0__Lean_Elab_Term_elabHeaders___spec__2___boxed(lean_object*, lean_object*, lean_object*, lean_object*); LEAN_EXPORT lean_object* l___private_Lean_Elab_MutualDef_0__Lean_Elab_Term_check___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); lean_object* lean_infer_type(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); +lean_object* lean_find_expr(lean_object*, lean_object*); uint8_t lean_nat_dec_le(lean_object*, lean_object*); static lean_object* l_Lean_Core_withRestoreOrSaveFull___at___private_Lean_Elab_MutualDef_0__Lean_Elab_Term_elabHeaders___spec__6___lambda__5___closed__1; static lean_object* l_Lean_Elab_Term_checkForHiddenUnivLevels___closed__1; @@ -1220,6 +1220,7 @@ static lean_object* l_Lean_Elab_elabModifiers___at_Lean_Elab_Command_elabMutualD LEAN_EXPORT lean_object* l_Array_mapMUnsafe_map___at_Lean_Elab_Command_elabMutualDef___spec__15___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); LEAN_EXPORT lean_object* l_Array_forInUnsafe_loop___at_Lean_Elab_Term_elabMutualDef_processDeriving___spec__2(lean_object*, size_t, size_t, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); static lean_object* l_Lean_Elab_Command_initFn____x40_Lean_Elab_MutualDef___hyg_15660____closed__11; +LEAN_EXPORT lean_object* l___private_Lean_Elab_MutualDef_0__Lean_Elab_Term_typeHasRecFun___boxed(lean_object*, lean_object*, lean_object*); LEAN_EXPORT lean_object* l___private_Lean_Elab_MutualDef_0__Lean_Elab_Term_MutualClosure_FixPoint_isModified(lean_object*); LEAN_EXPORT lean_object* l_Nat_foldTR_loop___at_Lean_Elab_Term_MutualClosure_insertReplacementForMainFns___spec__1___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); LEAN_EXPORT lean_object* l_Std_Range_forIn_x27_loop___at_Lean_Elab_Command_elabMutualDef___spec__12___lambda__2(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, uint8_t, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); @@ -22972,7 +22973,8 @@ lean_object* x_4; lean_object* x_5; x_4 = lean_alloc_closure((void*)(l___private_Lean_Elab_MutualDef_0__Lean_Elab_Term_typeHasRecFun___lambda__2___boxed), 3, 2); lean_closure_set(x_4, 0, x_2); lean_closure_set(x_4, 1, x_3); -x_5 = l_Lean_Expr_FindImpl_findUnsafe_x3f(x_4, x_1); +x_5 = lean_find_expr(x_4, x_1); +lean_dec(x_4); if (lean_obj_tag(x_5) == 0) { lean_object* x_6; @@ -23053,6 +23055,15 @@ x_5 = lean_box(x_4); return x_5; } } +LEAN_EXPORT lean_object* l___private_Lean_Elab_MutualDef_0__Lean_Elab_Term_typeHasRecFun___boxed(lean_object* x_1, lean_object* x_2, lean_object* x_3) { +_start: +{ +lean_object* x_4; +x_4 = l___private_Lean_Elab_MutualDef_0__Lean_Elab_Term_typeHasRecFun(x_1, x_2, x_3); +lean_dec(x_1); +return x_4; +} +} LEAN_EXPORT lean_object* l___private_Lean_Elab_MutualDef_0__Lean_Elab_Term_getFunName___lambda__1(lean_object* x_1, lean_object* x_2) { _start: { @@ -23295,6 +23306,7 @@ lean_inc(x_16); lean_inc(x_2); lean_inc(x_1); x_17 = l___private_Lean_Elab_MutualDef_0__Lean_Elab_Term_typeHasRecFun(x_16, x_1, x_2); +lean_dec(x_16); if (lean_obj_tag(x_17) == 0) { lean_free_object(x_3); @@ -23397,6 +23409,7 @@ lean_inc(x_39); lean_inc(x_2); lean_inc(x_1); x_40 = l___private_Lean_Elab_MutualDef_0__Lean_Elab_Term_typeHasRecFun(x_39, x_1, x_2); +lean_dec(x_39); if (lean_obj_tag(x_40) == 0) { lean_dec(x_37); @@ -31259,7 +31272,8 @@ _start: lean_object* x_3; lean_object* x_4; x_3 = lean_alloc_closure((void*)(l_Lean_Elab_Term_MutualClosure_isApplicable___lambda__1___boxed), 2, 1); lean_closure_set(x_3, 0, x_1); -x_4 = l_Lean_Expr_FindExtImpl_findUnsafe_x3f(x_3, x_2); +x_4 = lean_find_ext_expr(x_3, x_2); +lean_dec(x_3); if (lean_obj_tag(x_4) == 0) { uint8_t x_5; @@ -31301,6 +31315,7 @@ _start: { uint8_t x_3; lean_object* x_4; x_3 = l_Lean_Elab_Term_MutualClosure_isApplicable(x_1, x_2); +lean_dec(x_2); x_4 = lean_box(x_3); return x_4; } @@ -32271,7 +32286,6 @@ return x_6; else { uint8_t x_7; -lean_inc(x_2); lean_inc(x_1); x_7 = l_Lean_Elab_Term_MutualClosure_isApplicable(x_1, x_2); if (x_7 == 0) diff --git a/stage0/stdlib/Lean/Elab/PreDefinition/Basic.c b/stage0/stdlib/Lean/Elab/PreDefinition/Basic.c index 11ea99e0cc..87ebaad4eb 100644 --- a/stage0/stdlib/Lean/Elab/PreDefinition/Basic.c +++ b/stage0/stdlib/Lean/Elab/PreDefinition/Basic.c @@ -240,7 +240,6 @@ LEAN_EXPORT lean_object* l_Lean_Elab_withSaveInfoContext___at___private_Lean_Ela lean_object* l_Lean_Elab_Term_addTermInfo_x27(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, uint8_t, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); lean_object* l_Lean_Core_transform___at_Lean_Core_betaReduce___spec__1(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); static lean_object* l___private_Lean_Elab_PreDefinition_Basic_0__Lean_Elab_addNonRecAux___lambda__4___closed__7; -lean_object* l_Lean_Expr_FindImpl_findUnsafe_x3f(lean_object*, lean_object*); LEAN_EXPORT lean_object* l_MonadExcept_ofExcept___at_Lean_Elab_shareCommonPreDefs___spec__4(lean_object*, lean_object*, lean_object*, lean_object*); static lean_object* l___private_Lean_Elab_PreDefinition_Basic_0__Lean_Elab_addNonRecAux___lambda__4___closed__2; static lean_object* l_Lean_Elab_fixLevelParams___closed__6; @@ -331,6 +330,7 @@ static lean_object* l_Std_Range_forIn_loop___at_Lean_Elab_checkCodomainsLevel___ LEAN_EXPORT lean_object* l_Std_Range_forIn_loop___at_Lean_Elab_checkCodomainsLevel___spec__2___lambda__2___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); static lean_object* l_Lean_Elab_shareCommonPreDefs___lambda__1___closed__1; lean_object* lean_infer_type(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); +lean_object* lean_find_expr(lean_object*, lean_object*); uint8_t lean_nat_dec_le(lean_object*, lean_object*); static lean_object* l___private_Lean_Elab_PreDefinition_Basic_0__Lean_Elab_getLevelParamsPreDecls___closed__1; LEAN_EXPORT lean_object* l_Lean_Elab_fixLevelParams___lambda__1(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); @@ -10410,7 +10410,8 @@ _start: lean_object* x_3; lean_object* x_4; x_3 = lean_alloc_closure((void*)(l___private_Lean_Elab_PreDefinition_Basic_0__Lean_Elab_containsRecFn___lambda__1___boxed), 2, 1); lean_closure_set(x_3, 0, x_1); -x_4 = l_Lean_Expr_FindImpl_findUnsafe_x3f(x_3, x_2); +x_4 = lean_find_expr(x_3, x_2); +lean_dec(x_3); if (lean_obj_tag(x_4) == 0) { uint8_t x_5; @@ -10442,6 +10443,7 @@ _start: { uint8_t x_3; lean_object* x_4; x_3 = l___private_Lean_Elab_PreDefinition_Basic_0__Lean_Elab_containsRecFn(x_1, x_2); +lean_dec(x_2); x_4 = lean_box(x_3); return x_4; } @@ -10528,7 +10530,6 @@ LEAN_EXPORT lean_object* l_Lean_Elab_ensureNoRecFn(lean_object* x_1, lean_object _start: { uint8_t x_8; -lean_inc(x_2); lean_inc(x_1); x_8 = l___private_Lean_Elab_PreDefinition_Basic_0__Lean_Elab_containsRecFn(x_1, x_2); if (x_8 == 0) diff --git a/stage0/stdlib/Lean/Elab/PreDefinition/Eqns.c b/stage0/stdlib/Lean/Elab/PreDefinition/Eqns.c index b5494b9a3b..3fefe6053a 100644 --- a/stage0/stdlib/Lean/Elab/PreDefinition/Eqns.c +++ b/stage0/stdlib/Lean/Elab/PreDefinition/Eqns.c @@ -39,6 +39,7 @@ LEAN_EXPORT lean_object* l_Lean_Elab_Eqns_whnfReducibleLHS_x3f___lambda__1(lean_ static lean_object* l_Lean_Elab_Eqns_deltaLHS___lambda__2___closed__6; LEAN_EXPORT lean_object* l_Lean_Elab_Eqns_initFn____x40_Lean_Elab_PreDefinition_Eqns___hyg_6521_(lean_object*); lean_object* l_Lean_commitWhen___at___private_Lean_Meta_Tactic_Contradiction_0__Lean_Meta_elimEmptyInductive___spec__1(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); +LEAN_EXPORT lean_object* l_Lean_Elab_Eqns_splitMatch_x3f_go___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); LEAN_EXPORT lean_object* l_Lean_mkFreshId___at_Lean_Elab_Eqns_removeUnusedEqnHypotheses_go___spec__14(lean_object*); LEAN_EXPORT lean_object* l_Array_foldrMUnsafe_fold___at___private_Lean_Elab_PreDefinition_Eqns_0__Lean_Elab_Eqns_saveEqn___spec__22___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); LEAN_EXPORT lean_object* l_Array_foldrMUnsafe_fold___at___private_Lean_Elab_PreDefinition_Eqns_0__Lean_Elab_Eqns_saveEqn___spec__11___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); @@ -335,7 +336,7 @@ LEAN_EXPORT lean_object* l_Array_forInUnsafe_loop___at_Lean_Elab_Eqns_removeUnus lean_object* l_Lean_Meta_saveState___rarg(lean_object*, lean_object*, lean_object*, lean_object*); extern lean_object* l_Lean_diagnostics; lean_object* l_Lean_LocalDecl_fvarId(lean_object*); -lean_object* l_Lean_Expr_FindExtImpl_findUnsafe_x3f(lean_object*, lean_object*); +LEAN_EXPORT lean_object* l___private_Lean_Elab_PreDefinition_Eqns_0__Lean_Elab_Eqns_findMatchToSplit_x3f___boxed(lean_object*, lean_object*, lean_object*, lean_object*); lean_object* l_Lean_Expr_appFn_x21(lean_object*); LEAN_EXPORT lean_object* l_Lean_Elab_Eqns_simpIf_x3f(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); LEAN_EXPORT lean_object* l_Lean_ForEachExpr_visit___at___private_Lean_Elab_PreDefinition_Eqns_0__Lean_Elab_Eqns_shouldUseSimpMatch___spec__2(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); @@ -347,6 +348,7 @@ lean_object* l_Lean_CollectFVars_main(lean_object*, lean_object*); static lean_object* l_Lean_Elab_Eqns_initFn____x40_Lean_Elab_PreDefinition_Eqns___hyg_6521____closed__19; static lean_object* l_Array_forInUnsafe_loop___at_Lean_Elab_Eqns_simpEqnType___spec__1___lambda__1___closed__1; LEAN_EXPORT lean_object* l_Lean_Elab_Eqns_mkEqnTypes(uint8_t, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); +lean_object* lean_find_ext_expr(lean_object*, lean_object*); LEAN_EXPORT lean_object* l___private_Lean_Data_PersistentArray_0__Lean_PersistentArray_foldrMAux___at___private_Lean_Elab_PreDefinition_Eqns_0__Lean_Elab_Eqns_saveEqn___spec__21___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); LEAN_EXPORT lean_object* l_Array_forInUnsafe_loop___at_Lean_Elab_Eqns_simpEqnType___spec__1___lambda__2(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); LEAN_EXPORT lean_object* l___private_Lean_Elab_PreDefinition_Eqns_0__Lean_Elab_Eqns_findMatchToSplit_x3f___lambda__1___boxed(lean_object*); @@ -388,7 +390,6 @@ LEAN_EXPORT lean_object* l_Array_forInUnsafe_loop___at_Lean_Elab_Eqns_removeUnus static lean_object* l___private_Lean_Elab_PreDefinition_Eqns_0__Lean_Elab_Eqns_saveEqn___closed__1; LEAN_EXPORT lean_object* l_Array_forInUnsafe_loop___at_Lean_Elab_Eqns_removeUnusedEqnHypotheses_go___spec__9___at_Lean_Elab_Eqns_removeUnusedEqnHypotheses_go___spec__10(lean_object*, lean_object*, size_t, size_t, lean_object*, lean_object*, lean_object*, lean_object*); lean_object* l_Lean_Meta_withLCtx___at___private_Lean_Meta_Basic_0__Lean_Meta_mkLeveErrorMessageCore___spec__2___rarg(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); -lean_object* l_Lean_Expr_FindImpl_findUnsafe_x3f(lean_object*, lean_object*); LEAN_EXPORT lean_object* l_Lean_ForEachExprWhere_checked___at_Lean_Elab_Eqns_simpEqnType_collect___spec__5(lean_object*); LEAN_EXPORT lean_object* l___private_Lean_Data_PersistentArray_0__Lean_PersistentArray_foldrMAux___at___private_Lean_Elab_PreDefinition_Eqns_0__Lean_Elab_Eqns_saveEqn___spec__15___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); lean_object* l_Lean_Meta_isConstructorApp(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); @@ -524,6 +525,7 @@ LEAN_EXPORT lean_object* l_Array_foldrMUnsafe_fold___at___private_Lean_Elab_PreD static lean_object* l_Lean_Elab_Eqns_splitMatch_x3f_go___closed__2; static lean_object* l_Lean_Elab_Eqns_initFn____x40_Lean_Elab_PreDefinition_Eqns___hyg_6521____closed__17; lean_object* lean_infer_type(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); +lean_object* lean_find_expr(lean_object*, lean_object*); LEAN_EXPORT lean_object* l_Lean_Meta_checkpointDefEq___at_Lean_Elab_Eqns_mkUnfoldProof___spec__2(lean_object*, lean_object*, uint8_t, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); LEAN_EXPORT lean_object* l_Lean_Elab_Eqns_mkUnfoldProof_go___lambda__2(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); uint8_t lean_nat_dec_le(lean_object*, lean_object*); @@ -2090,7 +2092,9 @@ if (x_15 == 0) lean_object* x_17; lean_object* x_18; lean_object* x_19; x_17 = l_Lean_instInhabitedExpr; x_18 = l_outOfBounds___rarg(x_17); -x_19 = l_Lean_Expr_FindImpl_findUnsafe_x3f(x_16, x_18); +x_19 = lean_find_expr(x_16, x_18); +lean_dec(x_18); +lean_dec(x_16); if (lean_obj_tag(x_19) == 0) { lean_object* x_20; @@ -2121,7 +2125,9 @@ else { lean_object* x_23; lean_object* x_24; x_23 = lean_array_fget(x_2, x_5); -x_24 = l_Lean_Expr_FindImpl_findUnsafe_x3f(x_16, x_23); +x_24 = lean_find_expr(x_16, x_23); +lean_dec(x_23); +lean_dec(x_16); if (lean_obj_tag(x_24) == 0) { lean_object* x_25; @@ -2417,7 +2423,8 @@ x_5 = lean_alloc_closure((void*)(l___private_Lean_Elab_PreDefinition_Eqns_0__Lea lean_closure_set(x_5, 0, x_4); lean_closure_set(x_5, 1, x_1); lean_closure_set(x_5, 2, x_3); -x_6 = l_Lean_Expr_FindExtImpl_findUnsafe_x3f(x_5, x_2); +x_6 = lean_find_ext_expr(x_5, x_2); +lean_dec(x_5); return x_6; } } @@ -2504,6 +2511,15 @@ lean_dec(x_1); return x_5; } } +LEAN_EXPORT lean_object* l___private_Lean_Elab_PreDefinition_Eqns_0__Lean_Elab_Eqns_findMatchToSplit_x3f___boxed(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4) { +_start: +{ +lean_object* x_5; +x_5 = l___private_Lean_Elab_PreDefinition_Eqns_0__Lean_Elab_Eqns_findMatchToSplit_x3f(x_1, x_2, x_3, x_4); +lean_dec(x_2); +return x_5; +} +} LEAN_EXPORT lean_object* l_Lean_Elab_Eqns_splitMatch_x3f_go___lambda__1(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4, lean_object* x_5, lean_object* x_6) { _start: { @@ -2608,13 +2624,11 @@ lean_inc(x_14); lean_dec(x_12); lean_inc(x_4); lean_inc(x_2); -lean_inc(x_3); x_15 = l___private_Lean_Elab_PreDefinition_Eqns_0__Lean_Elab_Eqns_findMatchToSplit_x3f(x_14, x_3, x_2, x_4); if (lean_obj_tag(x_15) == 0) { lean_object* x_16; lean_object* x_17; uint8_t x_18; lean_dec(x_4); -lean_dec(x_3); lean_dec(x_2); x_16 = l_Lean_Elab_Eqns_splitMatch_x3f_go___closed__4; x_17 = l_Lean_isTracingEnabledFor___at_Lean_Meta_processPostponed_loop___spec__1(x_16, x_5, x_6, x_7, x_8, x_13); @@ -2729,7 +2743,6 @@ lean_dec(x_7); lean_dec(x_6); lean_dec(x_5); lean_dec(x_4); -lean_dec(x_3); lean_dec(x_2); lean_dec(x_1); x_49 = !lean_is_exclusive(x_48); @@ -2789,7 +2802,6 @@ lean_dec(x_7); lean_dec(x_6); lean_dec(x_5); lean_dec(x_4); -lean_dec(x_3); lean_dec(x_2); lean_dec(x_1); return x_48; @@ -2803,7 +2815,6 @@ lean_dec(x_7); lean_dec(x_6); lean_dec(x_5); lean_dec(x_4); -lean_dec(x_3); lean_dec(x_2); lean_dec(x_1); return x_48; @@ -2840,7 +2851,6 @@ lean_dec(x_7); lean_dec(x_6); lean_dec(x_5); lean_dec(x_4); -lean_dec(x_3); lean_dec(x_2); lean_dec(x_1); x_67 = lean_alloc_ctor(1, 2, 0); @@ -2858,7 +2868,6 @@ lean_dec(x_7); lean_dec(x_6); lean_dec(x_5); lean_dec(x_4); -lean_dec(x_3); lean_dec(x_2); lean_dec(x_1); x_68 = lean_alloc_ctor(1, 2, 0); @@ -2891,7 +2900,6 @@ lean_dec(x_7); lean_dec(x_6); lean_dec(x_5); lean_dec(x_4); -lean_dec(x_3); lean_dec(x_2); lean_dec(x_1); x_71 = lean_ctor_get(x_70, 0); @@ -2956,7 +2964,6 @@ lean_dec(x_7); lean_dec(x_6); lean_dec(x_5); lean_dec(x_4); -lean_dec(x_3); lean_dec(x_2); lean_dec(x_1); if (lean_is_scalar(x_78)) { @@ -2978,7 +2985,6 @@ lean_dec(x_7); lean_dec(x_6); lean_dec(x_5); lean_dec(x_4); -lean_dec(x_3); lean_dec(x_2); lean_dec(x_1); if (lean_is_scalar(x_78)) { @@ -3007,13 +3013,11 @@ lean_inc(x_87); lean_dec(x_85); lean_inc(x_4); lean_inc(x_2); -lean_inc(x_3); x_88 = l___private_Lean_Elab_PreDefinition_Eqns_0__Lean_Elab_Eqns_findMatchToSplit_x3f(x_87, x_3, x_2, x_4); if (lean_obj_tag(x_88) == 0) { lean_object* x_89; lean_object* x_90; lean_object* x_91; lean_object* x_92; lean_object* x_93; lean_object* x_94; uint8_t x_95; lean_dec(x_4); -lean_dec(x_3); lean_dec(x_2); x_89 = l_Lean_Elab_Eqns_splitMatch_x3f_go___closed__4; x_90 = l_Lean_isTracingEnabledFor___at_Lean_Meta_processPostponed_loop___spec__1(x_89, x_5, x_6, x_7, x_8, x_86); @@ -3097,7 +3101,6 @@ lean_dec(x_7); lean_dec(x_6); lean_dec(x_5); lean_dec(x_4); -lean_dec(x_3); lean_dec(x_2); lean_dec(x_1); x_110 = lean_ctor_get(x_109, 0); @@ -3167,7 +3170,6 @@ lean_dec(x_7); lean_dec(x_6); lean_dec(x_5); lean_dec(x_4); -lean_dec(x_3); lean_dec(x_2); lean_dec(x_1); if (lean_is_scalar(x_117)) { @@ -3189,7 +3191,6 @@ lean_dec(x_7); lean_dec(x_6); lean_dec(x_5); lean_dec(x_4); -lean_dec(x_3); lean_dec(x_2); lean_dec(x_1); if (lean_is_scalar(x_117)) { @@ -3219,6 +3220,15 @@ lean_dec(x_1); return x_7; } } +LEAN_EXPORT lean_object* l_Lean_Elab_Eqns_splitMatch_x3f_go___boxed(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4, lean_object* x_5, lean_object* x_6, lean_object* x_7, lean_object* x_8, lean_object* x_9) { +_start: +{ +lean_object* x_10; +x_10 = l_Lean_Elab_Eqns_splitMatch_x3f_go(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9); +lean_dec(x_3); +return x_10; +} +} static lean_object* _init_l_Lean_Elab_Eqns_splitMatch_x3f___lambda__1___closed__1() { _start: { @@ -3248,6 +3258,7 @@ lean_inc(x_10); lean_dec(x_8); x_11 = l_Lean_Elab_Eqns_splitMatch_x3f___lambda__1___closed__1; x_12 = l_Lean_Elab_Eqns_splitMatch_x3f_go(x_1, x_2, x_9, x_11, x_3, x_4, x_5, x_6, x_10); +lean_dec(x_9); return x_12; } else @@ -8744,12 +8755,11 @@ lean_object* x_8; lean_object* x_9; lean_inc(x_1); x_8 = lean_alloc_closure((void*)(l___private_Lean_Elab_PreDefinition_Eqns_0__Lean_Elab_Eqns_saveEqn_isIrrelevant___lambda__1___boxed), 2, 1); lean_closure_set(x_8, 0, x_1); -lean_inc(x_2); -x_9 = l_Lean_Expr_FindImpl_findUnsafe_x3f(x_8, x_2); +x_9 = lean_find_expr(x_8, x_2); +lean_dec(x_8); if (lean_obj_tag(x_9) == 0) { uint8_t x_10; lean_object* x_11; lean_object* x_12; -lean_dec(x_2); lean_dec(x_1); x_10 = 1; x_11 = lean_box(x_10); @@ -8768,7 +8778,6 @@ x_15 = l_Lean_Expr_isAppOfArity(x_2, x_13, x_14); if (x_15 == 0) { uint8_t x_16; lean_object* x_17; lean_object* x_18; -lean_dec(x_2); lean_dec(x_1); x_16 = 0; x_17 = lean_box(x_16); @@ -8784,7 +8793,6 @@ x_19 = l_Lean_Expr_appFn_x21(x_2); x_20 = l_Lean_Expr_appArg_x21(x_19); lean_dec(x_19); x_21 = l_Lean_Expr_appArg_x21(x_2); -lean_dec(x_2); x_36 = l_Lean_Expr_isFVar(x_20); if (x_36 == 0) { @@ -8894,6 +8902,7 @@ lean_dec(x_6); lean_dec(x_5); lean_dec(x_4); lean_dec(x_3); +lean_dec(x_2); return x_8; } } @@ -11724,6 +11733,7 @@ lean_inc(x_54); lean_dec(x_52); lean_inc(x_39); x_55 = l___private_Lean_Elab_PreDefinition_Eqns_0__Lean_Elab_Eqns_saveEqn_isIrrelevant(x_39, x_53, x_8, x_9, x_10, x_11, x_54); +lean_dec(x_53); x_56 = lean_ctor_get(x_55, 0); lean_inc(x_56); x_57 = lean_unbox(x_56); @@ -11931,6 +11941,7 @@ lean_inc(x_91); lean_dec(x_89); lean_inc(x_39); x_92 = l___private_Lean_Elab_PreDefinition_Eqns_0__Lean_Elab_Eqns_saveEqn_isIrrelevant(x_39, x_90, x_8, x_9, x_10, x_11, x_91); +lean_dec(x_90); x_93 = lean_ctor_get(x_92, 0); lean_inc(x_93); x_94 = lean_unbox(x_93); @@ -12163,6 +12174,7 @@ lean_inc(x_134); lean_dec(x_132); lean_inc(x_118); x_135 = l___private_Lean_Elab_PreDefinition_Eqns_0__Lean_Elab_Eqns_saveEqn_isIrrelevant(x_118, x_133, x_8, x_9, x_10, x_11, x_134); +lean_dec(x_133); x_136 = lean_ctor_get(x_135, 0); lean_inc(x_136); x_137 = lean_unbox(x_136); @@ -12426,6 +12438,7 @@ lean_inc(x_182); lean_dec(x_180); lean_inc(x_164); x_183 = l___private_Lean_Elab_PreDefinition_Eqns_0__Lean_Elab_Eqns_saveEqn_isIrrelevant(x_164, x_181, x_8, x_9, x_10, x_11, x_182); +lean_dec(x_181); x_184 = lean_ctor_get(x_183, 0); lean_inc(x_184); x_185 = lean_unbox(x_184); @@ -13006,6 +13019,7 @@ lean_inc(x_54); lean_dec(x_52); lean_inc(x_39); x_55 = l___private_Lean_Elab_PreDefinition_Eqns_0__Lean_Elab_Eqns_saveEqn_isIrrelevant(x_39, x_53, x_8, x_9, x_10, x_11, x_54); +lean_dec(x_53); x_56 = lean_ctor_get(x_55, 0); lean_inc(x_56); x_57 = lean_unbox(x_56); @@ -13213,6 +13227,7 @@ lean_inc(x_91); lean_dec(x_89); lean_inc(x_39); x_92 = l___private_Lean_Elab_PreDefinition_Eqns_0__Lean_Elab_Eqns_saveEqn_isIrrelevant(x_39, x_90, x_8, x_9, x_10, x_11, x_91); +lean_dec(x_90); x_93 = lean_ctor_get(x_92, 0); lean_inc(x_93); x_94 = lean_unbox(x_93); @@ -13445,6 +13460,7 @@ lean_inc(x_134); lean_dec(x_132); lean_inc(x_118); x_135 = l___private_Lean_Elab_PreDefinition_Eqns_0__Lean_Elab_Eqns_saveEqn_isIrrelevant(x_118, x_133, x_8, x_9, x_10, x_11, x_134); +lean_dec(x_133); x_136 = lean_ctor_get(x_135, 0); lean_inc(x_136); x_137 = lean_unbox(x_136); @@ -13708,6 +13724,7 @@ lean_inc(x_182); lean_dec(x_180); lean_inc(x_164); x_183 = l___private_Lean_Elab_PreDefinition_Eqns_0__Lean_Elab_Eqns_saveEqn_isIrrelevant(x_164, x_181, x_8, x_9, x_10, x_11, x_182); +lean_dec(x_181); x_184 = lean_ctor_get(x_183, 0); lean_inc(x_184); x_185 = lean_unbox(x_184); diff --git a/stage0/stdlib/Lean/Elab/PreDefinition/Main.c b/stage0/stdlib/Lean/Elab/PreDefinition/Main.c index 5a3b6c8c8e..1b6273462d 100644 --- a/stage0/stdlib/Lean/Elab/PreDefinition/Main.c +++ b/stage0/stdlib/Lean/Elab/PreDefinition/Main.c @@ -311,7 +311,6 @@ LEAN_EXPORT lean_object* l_Array_forInUnsafe_loop___at_Lean_Elab_addPreDefinitio lean_object* l_Lean_Elab_Term_addTermInfo_x27(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, uint8_t, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); static lean_object* l_Array_mapMUnsafe_map___at___private_Lean_Elab_PreDefinition_Main_0__Lean_Elab_partitionPreDefs___spec__25___closed__1; LEAN_EXPORT lean_object* l___private_Lean_Elab_PreDefinition_Main_0__Lean_Elab_partitionPreDefs___lambda__1(lean_object*, lean_object*, size_t, size_t, lean_object*, lean_object*); -lean_object* l_Lean_Expr_FindImpl_findUnsafe_x3f(lean_object*, lean_object*); static lean_object* l_Array_forInUnsafe_loop___at___private_Lean_Elab_PreDefinition_Main_0__Lean_Elab_addAndCompilePartial___spec__2___lambda__3___closed__1; static lean_object* l_Lean_throwMaxRecDepthAt___at___private_Lean_Elab_PreDefinition_Main_0__Lean_Elab_betaReduceLetRecApps___spec__9___rarg___closed__2; static lean_object* l_Array_forInUnsafe_loop___at_Lean_Elab_checkTerminationByHints___spec__3___lambda__3___closed__3; @@ -445,6 +444,7 @@ static lean_object* l___private_Lean_Util_SCC_0__Lean_SCC_resetOnStack___at___pr lean_object* lean_array_get_size(lean_object*); lean_object* l_Lean_Meta_collectMVars(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); lean_object* l_ReaderT_bind___at_Lean_Meta_zetaReduce___spec__14___rarg(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); +lean_object* lean_find_expr(lean_object*, lean_object*); static lean_object* l_Lean_Elab_initFn____x40_Lean_Elab_PreDefinition_Main___hyg_3053____closed__6; uint8_t lean_nat_dec_le(lean_object*, lean_object*); LEAN_EXPORT lean_object* l___private_Lean_Elab_PreDefinition_Main_0__Lean_Elab_addAsAxioms(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); @@ -1431,7 +1431,9 @@ lean_closure_set(x_2, 0, x_1); x_3 = lean_ctor_get(x_1, 5); lean_inc(x_3); lean_dec(x_1); -x_4 = l_Lean_Expr_FindImpl_findUnsafe_x3f(x_2, x_3); +x_4 = lean_find_expr(x_2, x_3); +lean_dec(x_3); +lean_dec(x_2); if (lean_obj_tag(x_4) == 0) { uint8_t x_5; diff --git a/stage0/stdlib/Lean/Elab/PreDefinition/Structural/BRecOn.c b/stage0/stdlib/Lean/Elab/PreDefinition/Structural/BRecOn.c index 48b8ad1fdc..348ac2014f 100644 --- a/stage0/stdlib/Lean/Elab/PreDefinition/Structural/BRecOn.c +++ b/stage0/stdlib/Lean/Elab/PreDefinition/Structural/BRecOn.c @@ -21270,7 +21270,6 @@ lean_inc(x_7); x_8 = lean_ctor_get(x_6, 2); lean_inc(x_8); lean_dec(x_6); -lean_inc(x_1); x_9 = l_Lean_Elab_Structural_recArgHasLooseBVarsAt(x_7, x_8, x_1); if (x_9 == 0) { @@ -21283,7 +21282,6 @@ goto _start; else { uint8_t x_13; -lean_dec(x_1); x_13 = 1; return x_13; } @@ -21291,7 +21289,6 @@ return x_13; else { uint8_t x_14; -lean_dec(x_1); x_14 = 0; return x_14; } @@ -28464,7 +28461,6 @@ else size_t x_40; size_t x_41; uint8_t x_42; x_40 = 0; x_41 = lean_usize_of_nat(x_36); -lean_inc(x_1); x_42 = l_Array_anyMUnsafe_any___at___private_Lean_Elab_PreDefinition_Structural_BRecOn_0__Lean_Elab_Structural_replaceRecApps_loop___spec__28(x_1, x_3, x_40, x_41); if (x_42 == 0) { @@ -29971,6 +29967,7 @@ x_6 = lean_unbox_usize(x_4); lean_dec(x_4); x_7 = l_Array_anyMUnsafe_any___at___private_Lean_Elab_PreDefinition_Structural_BRecOn_0__Lean_Elab_Structural_replaceRecApps_loop___spec__28(x_1, x_2, x_5, x_6); lean_dec(x_2); +lean_dec(x_1); x_8 = lean_box(x_7); return x_8; } diff --git a/stage0/stdlib/Lean/Elab/PreDefinition/Structural/Basic.c b/stage0/stdlib/Lean/Elab/PreDefinition/Structural/Basic.c index cdbd259521..684ae1a78d 100644 --- a/stage0/stdlib/Lean/Elab/PreDefinition/Structural/Basic.c +++ b/stage0/stdlib/Lean/Elab/PreDefinition/Structural/Basic.c @@ -91,7 +91,6 @@ LEAN_EXPORT lean_object* l_Lean_throwError___at_Lean_Elab_Structural_instInhabit LEAN_EXPORT lean_object* l_Array_foldlMUnsafe_fold___at_Lean_Elab_Structural_Positions_groupAndSort___spec__1___rarg___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); LEAN_EXPORT lean_object* l_panic___at_Lean_Elab_Structural_Positions_mapMwith___spec__1(lean_object*, lean_object*); LEAN_EXPORT lean_object* l_Array_foldlMUnsafe_fold___at_Lean_Elab_Structural_Positions_groupAndSort___spec__1(lean_object*, lean_object*); -lean_object* l_Lean_Expr_FindImpl_findUnsafe_x3f(lean_object*, lean_object*); LEAN_EXPORT lean_object* l_panic___at_Lean_Elab_Structural_Positions_groupAndSort___spec__4(lean_object*); LEAN_EXPORT uint8_t l_Array_isEqvAux___at_Lean_Elab_Structural_Positions_groupAndSort___spec__5___rarg(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); LEAN_EXPORT lean_object* l_panic___at_Lean_Elab_Structural_Positions_mapMwith___spec__2(lean_object*, lean_object*); @@ -124,6 +123,7 @@ LEAN_EXPORT lean_object* l_Array_mapMUnsafe_map___at_Lean_Elab_Structural_Positi lean_object* lean_string_append(lean_object*, lean_object*); lean_object* lean_array_get_size(lean_object*); static lean_object* l_initFn____x40_Lean_Elab_PreDefinition_Structural_Basic___hyg_382____closed__20; +lean_object* lean_find_expr(lean_object*, lean_object*); uint8_t lean_nat_dec_le(lean_object*, lean_object*); uint8_t lean_usize_dec_lt(size_t, size_t); static lean_object* l_initFn____x40_Lean_Elab_PreDefinition_Structural_Basic___hyg_382____closed__11; @@ -439,7 +439,8 @@ lean_object* x_4; lean_object* x_5; x_4 = lean_alloc_closure((void*)(l_Lean_Elab_Structural_recArgHasLooseBVarsAt___lambda__1___boxed), 3, 2); lean_closure_set(x_4, 0, x_1); lean_closure_set(x_4, 1, x_2); -x_5 = l_Lean_Expr_FindImpl_findUnsafe_x3f(x_4, x_3); +x_5 = lean_find_expr(x_4, x_3); +lean_dec(x_4); if (lean_obj_tag(x_5) == 0) { uint8_t x_6; @@ -472,6 +473,7 @@ _start: { uint8_t x_4; lean_object* x_5; x_4 = l_Lean_Elab_Structural_recArgHasLooseBVarsAt(x_1, x_2, x_3); +lean_dec(x_3); x_5 = lean_box(x_4); return x_5; } diff --git a/stage0/stdlib/Lean/Elab/PreDefinition/Structural/IndPred.c b/stage0/stdlib/Lean/Elab/PreDefinition/Structural/IndPred.c index c316119fef..9580287dad 100644 --- a/stage0/stdlib/Lean/Elab/PreDefinition/Structural/IndPred.c +++ b/stage0/stdlib/Lean/Elab/PreDefinition/Structural/IndPred.c @@ -4896,7 +4896,6 @@ x_24 = lean_ctor_get(x_1, 0); lean_inc(x_24); x_25 = lean_ctor_get(x_1, 2); lean_inc(x_25); -lean_inc(x_4); lean_inc(x_24); x_26 = l_Lean_Elab_Structural_recArgHasLooseBVarsAt(x_24, x_25, x_4); if (x_26 == 0) diff --git a/stage0/stdlib/Lean/Elab/PreDefinition/Structural/Preprocess.c b/stage0/stdlib/Lean/Elab/PreDefinition/Structural/Preprocess.c index f6c1930548..28a1520c4e 100644 --- a/stage0/stdlib/Lean/Elab/PreDefinition/Structural/Preprocess.c +++ b/stage0/stdlib/Lean/Elab/PreDefinition/Structural/Preprocess.c @@ -40,7 +40,6 @@ lean_object* l___private_Init_Util_0__mkPanicMessageWithDecl(lean_object*, lean_ LEAN_EXPORT lean_object* l_Lean_Elab_Structural_preprocess___lambda__2(lean_object*, lean_object*, lean_object*, lean_object*); static lean_object* l_Lean_Elab_Structural_preprocess___lambda__3___closed__6; lean_object* l_Lean_Core_transform___at_Lean_Core_betaReduce___spec__1(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); -lean_object* l_Lean_Expr_FindImpl_findUnsafe_x3f(lean_object*, lean_object*); uint8_t l_Array_contains___at_Lean_registerInternalExceptionId___spec__1(lean_object*, lean_object*); lean_object* lean_panic_fn(lean_object*, lean_object*); lean_object* lean_nat_sub(lean_object*, lean_object*); @@ -52,6 +51,7 @@ static lean_object* l_Lean_Elab_Structural_preprocess___closed__1; LEAN_EXPORT lean_object* l_Lean_Elab_Structural_preprocess___lambda__2___boxed(lean_object*, lean_object*, lean_object*, lean_object*); lean_object* l_Lean_Expr_headBeta(lean_object*); uint8_t l_Lean_Expr_isMData(lean_object*); +lean_object* lean_find_expr(lean_object*, lean_object*); LEAN_EXPORT lean_object* l_Lean_Elab_Structural_preprocess___lambda__3(lean_object*, lean_object*, lean_object*, lean_object*); uint8_t l_Lean_Expr_isConst(lean_object*); lean_object* l_Lean_Expr_beta(lean_object*, lean_object*); @@ -96,7 +96,9 @@ lean_object* x_6; lean_object* x_7; lean_object* x_8; x_6 = lean_alloc_closure((void*)(l___private_Lean_Elab_PreDefinition_Structural_Preprocess_0__Lean_Elab_Structural_shouldBetaReduce___lambda__1___boxed), 2, 1); lean_closure_set(x_6, 0, x_2); x_7 = l_Lean_Expr_getAppFn(x_1); -x_8 = l_Lean_Expr_FindImpl_findUnsafe_x3f(x_6, x_7); +x_8 = lean_find_expr(x_6, x_7); +lean_dec(x_7); +lean_dec(x_6); if (lean_obj_tag(x_8) == 0) { uint8_t x_9; diff --git a/stage0/stdlib/Lean/Elab/PreDefinition/Structural/SmartUnfolding.c b/stage0/stdlib/Lean/Elab/PreDefinition/Structural/SmartUnfolding.c index 54bceeeb4f..49f6f4ba1d 100644 --- a/stage0/stdlib/Lean/Elab/PreDefinition/Structural/SmartUnfolding.c +++ b/stage0/stdlib/Lean/Elab/PreDefinition/Structural/SmartUnfolding.c @@ -86,7 +86,6 @@ static lean_object* l_Array_forInUnsafe_loop___at_Lean_Elab_Structural_addSmartU static lean_object* l_Array_forInUnsafe_loop___at_Lean_Elab_Structural_addSmartUnfoldingDefAux_visit___spec__9___lambda__3___closed__6; lean_object* l_Array_extract___rarg(lean_object*, lean_object*, lean_object*); static lean_object* l_Array_forInUnsafe_loop___at_Lean_Elab_Structural_addSmartUnfoldingDefAux_visit___spec__9___lambda__3___closed__1; -lean_object* l_Lean_Expr_FindImpl_findUnsafe_x3f(lean_object*, lean_object*); LEAN_EXPORT lean_object* l_Lean_Meta_matchMatcherApp_x3f___at_Lean_Elab_Structural_addSmartUnfoldingDefAux_visit___spec__1___lambda__4___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); LEAN_EXPORT lean_object* l_Lean_Meta_matchMatcherApp_x3f___at_Lean_Elab_Structural_addSmartUnfoldingDefAux_visit___spec__1___lambda__1(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); LEAN_EXPORT lean_object* l_Lean_Meta_matchMatcherApp_x3f___at_Lean_Elab_Structural_addSmartUnfoldingDefAux_visit___spec__1___lambda__4(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); @@ -122,6 +121,7 @@ lean_object* l___private_Lean_Expr_0__Lean_Expr_getAppArgsAux(lean_object*, lean uint8_t l_Lean_isAuxRecursorWithSuffix(lean_object*, lean_object*, lean_object*); lean_object* lean_array_get_size(lean_object*); LEAN_EXPORT lean_object* l_Array_forInUnsafe_loop___at_Lean_Elab_Structural_addSmartUnfoldingDefAux_visit___spec__9___lambda__3___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); +lean_object* lean_find_expr(lean_object*, lean_object*); uint8_t lean_nat_dec_le(lean_object*, lean_object*); uint8_t lean_usize_dec_lt(size_t, size_t); lean_object* l_Lean_Meta_mkLambdaFVars(lean_object*, lean_object*, uint8_t, uint8_t, uint8_t, uint8_t, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); @@ -2123,8 +2123,7 @@ x_13 = lean_ctor_get(x_11, 1); lean_inc(x_13); lean_dec(x_11); x_14 = l_Array_forInUnsafe_loop___at_Lean_Elab_Structural_addSmartUnfoldingDefAux_visit___spec__9___lambda__2___closed__1; -lean_inc(x_12); -x_15 = l_Lean_Expr_FindImpl_findUnsafe_x3f(x_14, x_12); +x_15 = lean_find_expr(x_14, x_12); if (lean_obj_tag(x_15) == 0) { lean_object* x_16; uint8_t x_17; uint8_t x_18; uint8_t x_19; lean_object* x_20; @@ -2944,7 +2943,6 @@ lean_inc(x_21); lean_dec(x_11); x_22 = lean_ctor_get(x_1, 3); lean_inc(x_22); -lean_inc(x_3); lean_inc(x_2); x_23 = l_Lean_Elab_Structural_recArgHasLooseBVarsAt(x_22, x_2, x_3); if (x_23 == 0) diff --git a/stage0/stdlib/Lean/Elab/PreDefinition/WF/Preprocess.c b/stage0/stdlib/Lean/Elab/PreDefinition/WF/Preprocess.c index cd9c5e8171..a85249059d 100644 --- a/stage0/stdlib/Lean/Elab/PreDefinition/WF/Preprocess.c +++ b/stage0/stdlib/Lean/Elab/PreDefinition/WF/Preprocess.c @@ -40,7 +40,6 @@ lean_object* l___private_Init_Util_0__mkPanicMessageWithDecl(lean_object*, lean_ static lean_object* l_Lean_Elab_WF_preprocess___closed__1; static lean_object* l_panic___at_Lean_Elab_WF_preprocess___spec__1___closed__1; lean_object* l_Lean_Core_transform___at_Lean_Core_betaReduce___spec__1(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); -lean_object* l_Lean_Expr_FindImpl_findUnsafe_x3f(lean_object*, lean_object*); uint8_t lean_nat_dec_lt(lean_object*, lean_object*); uint8_t l_Lean_Expr_isConstOf(lean_object*, lean_object*); lean_object* lean_panic_fn(lean_object*, lean_object*); @@ -57,6 +56,7 @@ static lean_object* l_Lean_Elab_WF_preprocess___lambda__2___closed__5; LEAN_EXPORT uint8_t l___private_Lean_Elab_PreDefinition_WF_Preprocess_0__Lean_Elab_WF_shouldBetaReduce___lambda__1(lean_object*, lean_object*); lean_object* lean_array_get_size(lean_object*); uint8_t l_Lean_Expr_isMData(lean_object*); +lean_object* lean_find_expr(lean_object*, lean_object*); lean_object* l_Lean_Expr_beta(lean_object*, lean_object*); uint8_t l_Lean_KVMap_contains(lean_object*, lean_object*); LEAN_EXPORT uint8_t l_Array_anyMUnsafe_any___at___private_Lean_Elab_PreDefinition_WF_Preprocess_0__Lean_Elab_WF_shouldBetaReduce___spec__1(lean_object* x_1, lean_object* x_2, size_t x_3, size_t x_4) { @@ -137,7 +137,9 @@ lean_object* x_6; lean_object* x_7; lean_object* x_8; x_6 = lean_alloc_closure((void*)(l___private_Lean_Elab_PreDefinition_WF_Preprocess_0__Lean_Elab_WF_shouldBetaReduce___lambda__1___boxed), 2, 1); lean_closure_set(x_6, 0, x_2); x_7 = l_Lean_Expr_getAppFn(x_1); -x_8 = l_Lean_Expr_FindImpl_findUnsafe_x3f(x_6, x_7); +x_8 = lean_find_expr(x_6, x_7); +lean_dec(x_7); +lean_dec(x_6); if (lean_obj_tag(x_8) == 0) { uint8_t x_9; diff --git a/stage0/stdlib/Lean/Elab/StructInst.c b/stage0/stdlib/Lean/Elab/StructInst.c index a621c1c22a..134af703bf 100644 --- a/stage0/stdlib/Lean/Elab/StructInst.c +++ b/stage0/stdlib/Lean/Elab/StructInst.c @@ -614,7 +614,6 @@ static lean_object* l_Lean_Elab_Term_StructInst_initFn____x40_Lean_Elab_StructIn static lean_object* l_List_foldlM___at___private_Lean_Elab_StructInst_0__Lean_Elab_Term_StructInst_elabStruct___spec__3___lambda__1___closed__1; LEAN_EXPORT lean_object* l___private_Lean_Elab_StructInst_0__Lean_Elab_Term_StructInst_isSimpleField_x3f___boxed(lean_object*); LEAN_EXPORT lean_object* l_Lean_Elab_Term_StructInst_DefaultFields_step(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); -lean_object* l_Lean_Expr_FindImpl_findUnsafe_x3f(lean_object*, lean_object*); static lean_object* l___private_Lean_Elab_StructInst_0__Lean_Elab_Term_StructInst_elabModifyOp___lambda__3___closed__7; LEAN_EXPORT lean_object* l_panic___at___private_Lean_Elab_StructInst_0__Lean_Elab_Term_StructInst_getStructSource___spec__1(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); LEAN_EXPORT lean_object* l_Lean_Elab_liftMacroM___at___private_Lean_Elab_StructInst_0__Lean_Elab_Term_StructInst_elabStructInstAux___spec__1___lambda__3(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); @@ -846,6 +845,7 @@ static lean_object* l_List_format___at_Lean_Elab_Term_StructInst_formatStruct___ LEAN_EXPORT lean_object* l_Lean_Elab_Term_StructInst_formatStruct(lean_object*); LEAN_EXPORT lean_object* l___private_Lean_Elab_StructInst_0__Lean_Elab_Term_StructInst_getStructSource(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); lean_object* lean_infer_type(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); +lean_object* lean_find_expr(lean_object*, lean_object*); static lean_object* l___private_Lean_Elab_StructInst_0__Lean_Elab_Term_StructInst_elabModifyOp___lambda__3___closed__2; static lean_object* l_Array_foldlMUnsafe_fold___at___private_Lean_Elab_StructInst_0__Lean_Elab_Term_StructInst_isModifyOp_x3f___spec__3___closed__6; LEAN_EXPORT lean_object* l_Array_forInUnsafe_loop___at_Lean_Elab_Term_StructInst_DefaultFields_mkDefaultValueAux_x3f___spec__1(lean_object*, lean_object*, lean_object*, size_t, size_t, lean_object*); @@ -29073,8 +29073,7 @@ x_69 = lean_ctor_get(x_67, 1); lean_inc(x_69); lean_dec(x_67); x_70 = l_Lean_Elab_Term_StructInst_DefaultFields_tryToSynthesizeDefault_loop___closed__1; -lean_inc(x_68); -x_71 = l_Lean_Expr_FindImpl_findUnsafe_x3f(x_70, x_68); +x_71 = lean_find_expr(x_70, x_68); if (lean_obj_tag(x_71) == 0) { lean_object* x_72; lean_object* x_73; lean_object* x_74; lean_object* x_75; lean_object* x_76; lean_object* x_77; @@ -29295,8 +29294,7 @@ x_122 = lean_ctor_get(x_120, 1); lean_inc(x_122); lean_dec(x_120); x_123 = l_Lean_Elab_Term_StructInst_DefaultFields_tryToSynthesizeDefault_loop___closed__1; -lean_inc(x_121); -x_124 = l_Lean_Expr_FindImpl_findUnsafe_x3f(x_123, x_121); +x_124 = lean_find_expr(x_123, x_121); if (lean_obj_tag(x_124) == 0) { lean_object* x_125; lean_object* x_126; lean_object* x_127; lean_object* x_128; lean_object* x_129; lean_object* x_130; lean_object* x_131; diff --git a/stage0/stdlib/Lean/Elab/Tactic/LibrarySearch.c b/stage0/stdlib/Lean/Elab/Tactic/LibrarySearch.c index 3bc701981b..e8a52cbe65 100644 --- a/stage0/stdlib/Lean/Elab/Tactic/LibrarySearch.c +++ b/stage0/stdlib/Lean/Elab/Tactic/LibrarySearch.c @@ -1206,6 +1206,7 @@ _start: { uint8_t x_3; lean_object* x_4; x_3 = l_Lean_Elab_LibrarySearch_exact_x3f___lambda__2(x_1, x_2); +lean_dec(x_1); x_4 = lean_box(x_3); return x_4; } diff --git a/stage0/stdlib/Lean/Elab/Term.c b/stage0/stdlib/Lean/Elab/Term.c index 2db0a3d4ff..be13f2a2a9 100644 --- a/stage0/stdlib/Lean/Elab/Term.c +++ b/stage0/stdlib/Lean/Elab/Term.c @@ -54993,6 +54993,7 @@ x_29 = lean_ctor_get(x_27, 1); lean_inc(x_29); lean_dec(x_27); x_30 = l_Lean_Expr_hasSyntheticSorry(x_28); +lean_dec(x_28); if (x_30 == 0) { lean_object* x_31; lean_object* x_32; diff --git a/stage0/stdlib/Lean/Environment.c b/stage0/stdlib/Lean/Environment.c index d1f4be17e3..57083d5ee2 100644 --- a/stage0/stdlib/Lean/Environment.c +++ b/stage0/stdlib/Lean/Environment.c @@ -494,7 +494,6 @@ LEAN_EXPORT uint8_t l_Lean_Environment_getModuleIdx_x3f___lambda__1(lean_object* LEAN_EXPORT lean_object* l_Lean_mkModuleData___lambda__2(lean_object*, lean_object*, lean_object*); LEAN_EXPORT lean_object* l_Lean_Kernel_instInhabitedDiagnostics; LEAN_EXPORT lean_object* l___private_Lean_Environment_0__Lean_EnvExtensionInterfaceUnsafe_invalidExtMsg; -lean_object* l_Lean_Expr_FindImpl_findUnsafe_x3f(lean_object*, lean_object*); LEAN_EXPORT lean_object* l_Lean_EnvExtensionInterfaceUnsafe_imp; LEAN_EXPORT lean_object* l_Lean_Environment_hasUnsafe___lambda__1___boxed(lean_object*, lean_object*); LEAN_EXPORT lean_object* l_Array_foldlMUnsafe_fold___at_Lean_Environment_displayStats___spec__6___lambda__1(lean_object*, lean_object*, lean_object*); @@ -732,6 +731,7 @@ LEAN_EXPORT lean_object* l_Lean_mkHashMap___at_Lean_mkExtNameMap___spec__1___box static lean_object* l_Lean_Environment_displayStats___closed__2; LEAN_EXPORT lean_object* l_Lean_saveModuleData___boxed(lean_object*, lean_object*, lean_object*, lean_object*); LEAN_EXPORT lean_object* l_Lean_instMonadEnvOfMonadLift___rarg(lean_object*, lean_object*); +lean_object* lean_find_expr(lean_object*, lean_object*); uint8_t lean_nat_dec_le(lean_object*, lean_object*); lean_object* l_Lean_SMap_insert___at_Lean_NameSSet_insert___spec__1(lean_object*, lean_object*, lean_object*); LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_insertAtCollisionNodeAux___at_Lean_Kernel_Diagnostics_recordUnfold___spec__7(lean_object*, lean_object*, lean_object*, lean_object*); @@ -17368,7 +17368,8 @@ _start: lean_object* x_3; lean_object* x_4; x_3 = lean_alloc_closure((void*)(l_Lean_Environment_hasUnsafe___lambda__1___boxed), 2, 1); lean_closure_set(x_3, 0, x_1); -x_4 = l_Lean_Expr_FindImpl_findUnsafe_x3f(x_3, x_2); +x_4 = lean_find_expr(x_3, x_2); +lean_dec(x_3); if (lean_obj_tag(x_4) == 0) { uint8_t x_5; @@ -17398,6 +17399,7 @@ _start: { uint8_t x_3; lean_object* x_4; x_3 = l_Lean_Environment_hasUnsafe(x_1, x_2); +lean_dec(x_2); x_4 = lean_box(x_3); return x_4; } @@ -17492,7 +17494,6 @@ LEAN_EXPORT lean_object* l_Lean_mkDefinitionValInferrringUnsafe___rarg___lambda_ _start: { uint8_t x_8; lean_object* x_9; lean_object* x_10; lean_object* x_11; lean_object* x_12; lean_object* x_13; -lean_inc(x_1); lean_inc(x_7); x_8 = l_Lean_Environment_hasUnsafe(x_7, x_1); x_9 = lean_ctor_get(x_2, 0); @@ -17513,7 +17514,6 @@ lean_ctor_set(x_13, 1, x_12); if (x_8 == 0) { uint8_t x_14; -lean_inc(x_5); x_14 = l_Lean_Environment_hasUnsafe(x_7, x_5); if (x_14 == 0) { diff --git a/stage0/stdlib/Lean/Message.c b/stage0/stdlib/Lean/Message.c index eebeeb2f12..707c0e897e 100644 --- a/stage0/stdlib/Lean/Message.c +++ b/stage0/stdlib/Lean/Message.c @@ -1855,6 +1855,7 @@ x_4 = lean_ctor_get(x_3, 0); lean_inc(x_4); lean_dec(x_3); x_5 = l_Lean_Expr_hasSyntheticSorry(x_4); +lean_dec(x_4); return x_5; } } diff --git a/stage0/stdlib/Lean/Meta/Closure.c b/stage0/stdlib/Lean/Meta/Closure.c index cf11550b1b..3f1f086a41 100644 --- a/stage0/stdlib/Lean/Meta/Closure.c +++ b/stage0/stdlib/Lean/Meta/Closure.c @@ -11563,7 +11563,6 @@ x_13 = lean_ctor_get(x_11, 0); x_14 = lean_ctor_get(x_13, 0); lean_inc(x_14); lean_dec(x_13); -lean_inc(x_3); lean_inc(x_14); x_15 = l_Lean_Environment_hasUnsafe(x_14, x_3); lean_inc(x_1); @@ -11578,7 +11577,6 @@ lean_ctor_set(x_18, 1, x_17); if (x_15 == 0) { uint8_t x_19; -lean_inc(x_4); x_19 = l_Lean_Environment_hasUnsafe(x_14, x_4); if (x_19 == 0) { @@ -11633,7 +11631,6 @@ lean_dec(x_11); x_28 = lean_ctor_get(x_26, 0); lean_inc(x_28); lean_dec(x_26); -lean_inc(x_3); lean_inc(x_28); x_29 = l_Lean_Environment_hasUnsafe(x_28, x_3); lean_inc(x_1); @@ -11648,7 +11645,6 @@ lean_ctor_set(x_32, 1, x_31); if (x_29 == 0) { uint8_t x_33; -lean_inc(x_4); x_33 = l_Lean_Environment_hasUnsafe(x_28, x_4); if (x_33 == 0) { @@ -12031,7 +12027,6 @@ lean_inc(x_17); lean_dec(x_15); x_18 = lean_ctor_get(x_11, 1); lean_inc(x_18); -lean_inc(x_18); lean_inc(x_17); x_19 = l_Lean_Environment_hasUnsafe(x_17, x_18); if (x_19 == 0) @@ -12039,7 +12034,6 @@ if (x_19 == 0) lean_object* x_20; uint8_t x_21; x_20 = lean_ctor_get(x_11, 2); lean_inc(x_20); -lean_inc(x_20); x_21 = l_Lean_Environment_hasUnsafe(x_17, x_20); if (x_21 == 0) { @@ -12337,7 +12331,6 @@ lean_inc(x_104); lean_dec(x_102); x_105 = lean_ctor_get(x_11, 1); lean_inc(x_105); -lean_inc(x_105); lean_inc(x_104); x_106 = l_Lean_Environment_hasUnsafe(x_104, x_105); if (x_106 == 0) @@ -12345,7 +12338,6 @@ if (x_106 == 0) lean_object* x_107; uint8_t x_108; x_107 = lean_ctor_get(x_11, 2); lean_inc(x_107); -lean_inc(x_107); x_108 = l_Lean_Environment_hasUnsafe(x_104, x_107); if (x_108 == 0) { diff --git a/stage0/stdlib/Lean/Meta/Constructions/BRecOn.c b/stage0/stdlib/Lean/Meta/Constructions/BRecOn.c index 630f77b4df..e9277b38a1 100644 --- a/stage0/stdlib/Lean/Meta/Constructions/BRecOn.c +++ b/stage0/stdlib/Lean/Meta/Constructions/BRecOn.c @@ -2932,7 +2932,6 @@ x_13 = lean_ctor_get(x_11, 0); x_14 = lean_ctor_get(x_13, 0); lean_inc(x_14); lean_dec(x_13); -lean_inc(x_3); lean_inc(x_14); x_15 = l_Lean_Environment_hasUnsafe(x_14, x_3); lean_inc(x_1); @@ -2947,7 +2946,6 @@ lean_ctor_set(x_18, 1, x_17); if (x_15 == 0) { uint8_t x_19; -lean_inc(x_4); x_19 = l_Lean_Environment_hasUnsafe(x_14, x_4); if (x_19 == 0) { @@ -3002,7 +3000,6 @@ lean_dec(x_11); x_28 = lean_ctor_get(x_26, 0); lean_inc(x_28); lean_dec(x_26); -lean_inc(x_3); lean_inc(x_28); x_29 = l_Lean_Environment_hasUnsafe(x_28, x_3); lean_inc(x_1); @@ -3017,7 +3014,6 @@ lean_ctor_set(x_32, 1, x_31); if (x_29 == 0) { uint8_t x_33; -lean_inc(x_4); x_33 = l_Lean_Environment_hasUnsafe(x_28, x_4); if (x_33 == 0) { diff --git a/stage0/stdlib/Lean/Meta/Constructions/RecOn.c b/stage0/stdlib/Lean/Meta/Constructions/RecOn.c index b4bb4a27fa..bb4d77d8d5 100644 --- a/stage0/stdlib/Lean/Meta/Constructions/RecOn.c +++ b/stage0/stdlib/Lean/Meta/Constructions/RecOn.c @@ -116,7 +116,6 @@ x_13 = lean_ctor_get(x_11, 0); x_14 = lean_ctor_get(x_13, 0); lean_inc(x_14); lean_dec(x_13); -lean_inc(x_3); lean_inc(x_14); x_15 = l_Lean_Environment_hasUnsafe(x_14, x_3); lean_inc(x_1); @@ -131,7 +130,6 @@ lean_ctor_set(x_18, 1, x_17); if (x_15 == 0) { uint8_t x_19; -lean_inc(x_4); x_19 = l_Lean_Environment_hasUnsafe(x_14, x_4); if (x_19 == 0) { @@ -186,7 +184,6 @@ lean_dec(x_11); x_28 = lean_ctor_get(x_26, 0); lean_inc(x_28); lean_dec(x_26); -lean_inc(x_3); lean_inc(x_28); x_29 = l_Lean_Environment_hasUnsafe(x_28, x_3); lean_inc(x_1); @@ -201,7 +198,6 @@ lean_ctor_set(x_32, 1, x_31); if (x_29 == 0) { uint8_t x_33; -lean_inc(x_4); x_33 = l_Lean_Environment_hasUnsafe(x_28, x_4); if (x_33 == 0) { diff --git a/stage0/stdlib/Lean/Meta/ExprDefEq.c b/stage0/stdlib/Lean/Meta/ExprDefEq.c index 8aea3bef0d..23a4d4eadd 100644 --- a/stage0/stdlib/Lean/Meta/ExprDefEq.c +++ b/stage0/stdlib/Lean/Meta/ExprDefEq.c @@ -200,10 +200,10 @@ uint8_t l_Array_contains___at___private_Lean_Class_0__Lean_checkOutParam___spec_ static lean_object* l___private_Lean_Meta_ExprDefEq_0__Lean_Meta_isDefEqQuickOther___lambda__2___closed__3; LEAN_EXPORT lean_object* l___private_Lean_Meta_ExprDefEq_0__Lean_Meta_isDefEqLeftRight(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); lean_object* l_Lean_instMonadQuotationOfMonadFunctorOfMonadLift___rarg(lean_object*, lean_object*, lean_object*); -uint8_t l_Lean_HashSetImp_contains___at_Lean_Expr_FindImpl_checkVisited___spec__8(lean_object*, lean_object*); lean_object* l_Lean_Expr_mdata___override(lean_object*, lean_object*); LEAN_EXPORT uint8_t l_Array_anyMUnsafe_any___at_Lean_Meta_CheckAssignment_checkMVar___spec__19(lean_object*, lean_object*, size_t, size_t); LEAN_EXPORT lean_object* l_Lean_Meta_isDefEqStringLit(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); +LEAN_EXPORT lean_object* l_List_replace___at___private_Lean_Meta_ExprDefEq_0__Lean_Meta_typeOccursCheckImp_alreadyVisited___spec__8___boxed(lean_object*, lean_object*, lean_object*); LEAN_EXPORT lean_object* l_Array_anyMUnsafe_any___at_Lean_Meta_checkAssignment___spec__7___boxed(lean_object*, lean_object*, lean_object*, lean_object*); LEAN_EXPORT lean_object* l___private_Lean_Meta_ExprDefEq_0__Lean_Meta_withProofIrrelTransparency(lean_object*); lean_object* l_Lean_exceptBoolEmoji___rarg(lean_object*); @@ -220,6 +220,7 @@ LEAN_EXPORT lean_object* l___private_Lean_Meta_ExprDefEq_0__Lean_Meta_isDefEqPro LEAN_EXPORT lean_object* l___private_Lean_Meta_ExprDefEq_0__Lean_Meta_expandDelayedAssigned_x3f___lambda__2___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); LEAN_EXPORT lean_object* l_Lean_LocalContext_foldlM___at_Lean_Meta_CheckAssignment_checkMVar___spec__52___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); LEAN_EXPORT lean_object* l_Lean_Meta_checkpointDefEq___at___private_Lean_Meta_ExprDefEq_0__Lean_Meta_isDefEqApp___spec__2(lean_object*, lean_object*, lean_object*, lean_object*, uint8_t, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); +LEAN_EXPORT lean_object* l_List_replace___at___private_Lean_Meta_ExprDefEq_0__Lean_Meta_typeOccursCheckImp_alreadyVisited___spec__8(lean_object*, lean_object*, lean_object*); LEAN_EXPORT lean_object* l___private_Lean_Meta_ExprDefEq_0__Lean_Meta_isAssignable(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); LEAN_EXPORT lean_object* l___private_Lean_Meta_ExprDefEq_0__Lean_Meta_isDefEqQuickOther___lambda__2___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); lean_object* l_Lean_Expr_proj___override(lean_object*, lean_object*, lean_object*); @@ -437,6 +438,7 @@ lean_object* l_ReaderT_instMonadFunctor(lean_object*, lean_object*, lean_object* static lean_object* l_Array_forInUnsafe_loop___at_Lean_Meta_checkAssignment___spec__6___closed__1; LEAN_EXPORT lean_object* l___private_Lean_Meta_ExprDefEq_0__Lean_Meta_isDefEqQuickMVarMVar(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); lean_object* l_Lean_instantiateMVars___at___private_Lean_MetavarContext_0__Lean_DependsOn_dep_visitMain___spec__7(lean_object*, lean_object*); +uint64_t lean_usize_to_uint64(size_t); LEAN_EXPORT lean_object* l___private_Lean_Meta_ExprDefEq_0__Lean_Meta_isDefEqProjDelta_tryReduceProjs___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); LEAN_EXPORT lean_object* l_Lean_getExprMVarAssignment_x3f___at___private_Lean_Meta_ExprDefEq_0__Lean_Meta_typeOccursCheckImp_occursCheck___spec__4___boxed(lean_object*, lean_object*, lean_object*); LEAN_EXPORT uint8_t l_Array_anyMUnsafe_any___at_Lean_Meta_CheckAssignment_checkMVar___spec__27(lean_object*, lean_object*, size_t, size_t); @@ -509,6 +511,7 @@ LEAN_EXPORT lean_object* l___private_Lean_Meta_ExprDefEq_0__Lean_Meta_unfoldNonP LEAN_EXPORT lean_object* l_Lean_Meta_DefEqCache_update___boxed(lean_object*, lean_object*, lean_object*, lean_object*); lean_object* l_Lean_Expr_forallE___override(lean_object*, lean_object*, lean_object*, uint8_t); lean_object* l_outOfBounds___rarg(lean_object*); +LEAN_EXPORT lean_object* l_Lean_HashSetImp_contains___at___private_Lean_Meta_ExprDefEq_0__Lean_Meta_typeOccursCheckImp_alreadyVisited___spec__1___boxed(lean_object*, lean_object*); LEAN_EXPORT lean_object* l_Lean_Meta_CheckAssignment_initFn____x40_Lean_Meta_ExprDefEq___hyg_5827_(lean_object*); LEAN_EXPORT lean_object* l___private_Lean_MetavarContext_0__Lean_DependsOn_dep_visit___at_Lean_Meta_CheckAssignment_checkMVar___spec__12___boxed(lean_object*, lean_object*, lean_object*); static lean_object* l_Lean_Meta_initFn____x40_Lean_Meta_ExprDefEq___hyg_6____closed__10; @@ -662,6 +665,7 @@ LEAN_EXPORT lean_object* l_Lean_AssocList_find_x3f___at___private_Lean_Meta_Expr LEAN_EXPORT lean_object* l_Lean_occursCheck_visit___at_Lean_Meta_CheckAssignment_checkMVar___spec__69(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); extern lean_object* l_Lean_Meta_instMonadMetaM; LEAN_EXPORT lean_object* l___private_Lean_Meta_ExprDefEq_0__Lean_Meta_unstuckMVar___lambda__1(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); +LEAN_EXPORT lean_object* l_Lean_HashSetImp_expand___at___private_Lean_Meta_ExprDefEq_0__Lean_Meta_typeOccursCheckImp_alreadyVisited___spec__4(lean_object*, lean_object*); LEAN_EXPORT lean_object* l_Lean_withTraceNodeBefore___at___private_Lean_Meta_ExprDefEq_0__Lean_Meta_checkTypesAndAssign___spec__1___lambda__3___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); LEAN_EXPORT lean_object* l_Std_Range_forIn_loop___at___private_Lean_Meta_ExprDefEq_0__Lean_Meta_isDefEqEtaStruct_go___spec__1___lambda__1(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); LEAN_EXPORT lean_object* l___private_Lean_Meta_ExprDefEq_0__Lean_Meta_isDefEqUnitLike(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); @@ -746,6 +750,7 @@ static lean_object* l___private_Lean_Meta_ExprDefEq_0__Lean_Meta_assignConst___l LEAN_EXPORT uint8_t l_Array_anyMUnsafe_any___at_Lean_Meta_CheckAssignment_checkMVar___spec__18(lean_object*, lean_object*, size_t, size_t); static lean_object* l_Lean_Meta_initFn____x40_Lean_Meta_ExprDefEq___hyg_48____closed__1; LEAN_EXPORT uint8_t l_List_elem___at___private_Lean_Meta_ExprDefEq_0__Lean_Meta_mkLambdaFVarsWithLetDeps_collectLetDeclsFrom_visit___spec__10(lean_object*, lean_object*); +LEAN_EXPORT lean_object* l_List_foldl___at___private_Lean_Meta_ExprDefEq_0__Lean_Meta_typeOccursCheckImp_alreadyVisited___spec__6___at___private_Lean_Meta_ExprDefEq_0__Lean_Meta_typeOccursCheckImp_alreadyVisited___spec__7(lean_object*, lean_object*); LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_insertAux___at_Lean_Meta_DefEqCache_update___spec__2(lean_object*, size_t, size_t, lean_object*, uint8_t); LEAN_EXPORT lean_object* l___private_Lean_Meta_ExprDefEq_0__Lean_Meta_isDefEqProj_isDefEqSingleton___lambda__3___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); LEAN_EXPORT lean_object* l___private_Lean_Meta_ExprDefEq_0__Lean_Meta_isDefEqArgsFirstPass(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); @@ -821,7 +826,6 @@ LEAN_EXPORT uint8_t l___private_Lean_Meta_ExprDefEq_0__Lean_Meta_etaEq(lean_obje LEAN_EXPORT lean_object* l___private_Lean_Meta_ExprDefEq_0__Lean_Meta_unfoldNonProjFnDefEq(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); static lean_object* l_Lean_Meta_isExprDefEqAuxImpl___lambda__3___closed__12; lean_object* l_Lean_PersistentHashMap_mkEmptyEntries(lean_object*, lean_object*); -lean_object* l_Lean_HashSetImp_insert___at_Lean_Expr_FindImpl_checkVisited___spec__1(lean_object*, lean_object*); LEAN_EXPORT lean_object* l_Std_Range_forIn_loop___at___private_Lean_Meta_ExprDefEq_0__Lean_Meta_isDefEqArgsFirstPass___spec__1___lambda__3(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); LEAN_EXPORT lean_object* l_Lean_PersistentArray_anyMAux___at_Lean_Meta_CheckAssignment_checkMVar___spec__48___boxed(lean_object*, lean_object*); LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_find_x3f___at___private_Lean_Meta_ExprDefEq_0__Lean_Meta_getCachedResult___spec__1___boxed(lean_object*, lean_object*); @@ -871,6 +875,7 @@ LEAN_EXPORT lean_object* l___private_Lean_Meta_ExprDefEq_0__Lean_Meta_isDefEqPro lean_object* lean_nat_sub(lean_object*, lean_object*); lean_object* l_Lean_Option_register___at_Lean_initFn____x40_Lean_Util_Profile___hyg_6____spec__1(lean_object*, lean_object*, lean_object*, lean_object*); LEAN_EXPORT lean_object* l_Lean_Meta_CheckAssignment_checkMVar___lambda__1___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); +LEAN_EXPORT lean_object* l_List_foldl___at___private_Lean_Meta_ExprDefEq_0__Lean_Meta_typeOccursCheckImp_alreadyVisited___spec__6(lean_object*, lean_object*, lean_object*); lean_object* l_Lean_Expr_getAppFn(lean_object*); LEAN_EXPORT lean_object* lean_is_expr_def_eq(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); LEAN_EXPORT lean_object* l___private_Lean_Meta_ExprDefEq_0__Lean_Meta_isAssignable___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); @@ -1054,7 +1059,9 @@ uint8_t l_Lean_Exception_isRuntime(lean_object*); lean_object* l_Lean_Expr_lam___override(lean_object*, lean_object*, lean_object*, uint8_t); static lean_object* l___private_Lean_Meta_ExprDefEq_0__Lean_Meta_unstuckMVar___closed__16; lean_object* l_instMonadLiftTOfMonadLift___rarg(lean_object*, lean_object*, lean_object*, lean_object*); +LEAN_EXPORT lean_object* l_Lean_HashSetImp_moveEntries___at___private_Lean_Meta_ExprDefEq_0__Lean_Meta_typeOccursCheckImp_alreadyVisited___spec__5(lean_object*, lean_object*, lean_object*); LEAN_EXPORT lean_object* l_Array_foldlMUnsafe_fold___at_Lean_Meta_CheckAssignment_checkMVar___spec__67___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); +LEAN_EXPORT uint8_t l_List_elem___at___private_Lean_Meta_ExprDefEq_0__Lean_Meta_typeOccursCheckImp_alreadyVisited___spec__2(lean_object*, lean_object*); uint8_t l_Lean_Expr_isFVar(lean_object*); LEAN_EXPORT lean_object* l___private_Lean_Meta_ExprDefEq_0__Lean_Meta_isDefEqProjInst___lambda__1___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); LEAN_EXPORT lean_object* l_Array_anyMUnsafe_any___at___private_Lean_Meta_ExprDefEq_0__Lean_Meta_processConstApprox_go___spec__1___boxed(lean_object*, lean_object*, lean_object*, lean_object*); @@ -1063,6 +1070,7 @@ LEAN_EXPORT uint8_t l___private_Lean_Meta_ExprDefEq_0__Lean_Meta_sameHeadSymbol( LEAN_EXPORT lean_object* l___private_Lean_Meta_ExprDefEq_0__Lean_Meta_typeOccursCheck_unsafe__1(lean_object*, lean_object*, lean_object*); LEAN_EXPORT lean_object* l_Lean_Meta_CheckAssignment_checkMVar___lambda__5(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); lean_object* l_Lean_Expr_mvarId_x21(lean_object*); +LEAN_EXPORT lean_object* l_List_elem___at___private_Lean_Meta_ExprDefEq_0__Lean_Meta_typeOccursCheckImp_alreadyVisited___spec__2___boxed(lean_object*, lean_object*); LEAN_EXPORT lean_object* l_Lean_Meta_isEtaUnassignedMVar(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); uint8_t lean_is_class(lean_object*, lean_object*); LEAN_EXPORT lean_object* l_Lean_Meta_checkpointDefEq___at___private_Lean_Meta_ExprDefEq_0__Lean_Meta_isDefEqApp___spec__2___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); @@ -1077,6 +1085,7 @@ lean_object* lean_array_uset(lean_object*, size_t, lean_object*); LEAN_EXPORT lean_object* l___private_Lean_Meta_ExprDefEq_0__Lean_Meta_expandDelayedAssigned_x3f___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); LEAN_EXPORT lean_object* l___private_Lean_Meta_ExprDefEq_0__Lean_Meta_isDefEqLeft___lambda__1(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); lean_object* l_Lean_MessageData_ofName(lean_object*); +LEAN_EXPORT lean_object* l_Lean_HashSetImp_insert___at___private_Lean_Meta_ExprDefEq_0__Lean_Meta_typeOccursCheckImp_alreadyVisited___spec__3(lean_object*, lean_object*); LEAN_EXPORT lean_object* l___private_Lean_Meta_ExprDefEq_0__Lean_Meta_isDefEqArgs___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); LEAN_EXPORT lean_object* l_Lean_isProjectionFn___at___private_Lean_Meta_ExprDefEq_0__Lean_Meta_isNonTrivialRegular___spec__1(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); lean_object* lean_array_get(lean_object*, lean_object*, lean_object*); @@ -1086,6 +1095,7 @@ LEAN_EXPORT lean_object* l___private_Lean_Meta_ExprDefEq_0__Lean_Meta_isDefEqPro LEAN_EXPORT lean_object* l_Lean_mkHashSet___at___private_Lean_Meta_ExprDefEq_0__Lean_Meta_mkLambdaFVarsWithLetDeps_collectLetDeps___spec__1(lean_object*); lean_object* l_Lean_Meta_getPostponed___rarg(lean_object*, lean_object*, lean_object*, lean_object*); lean_object* l___private_Lean_Meta_Basic_0__Lean_Meta_instantiateForallAux(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); +LEAN_EXPORT uint8_t l_Lean_HashSetImp_contains___at___private_Lean_Meta_ExprDefEq_0__Lean_Meta_typeOccursCheckImp_alreadyVisited___spec__1(lean_object*, lean_object*); static lean_object* l_Lean_occursCheck_visitMVar___at_Lean_Meta_CheckAssignment_checkMVar___spec__70___closed__1; static lean_object* l_Lean_Meta_isExprDefEqAuxImpl___lambda__3___closed__3; LEAN_EXPORT lean_object* l___private_Lean_Meta_ExprDefEq_0__Lean_Meta_processAssignmentFOApprox(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); @@ -43528,15 +43538,414 @@ return x_1; } } } +LEAN_EXPORT uint8_t l_List_elem___at___private_Lean_Meta_ExprDefEq_0__Lean_Meta_typeOccursCheckImp_alreadyVisited___spec__2(lean_object* x_1, lean_object* x_2) { +_start: +{ +if (lean_obj_tag(x_2) == 0) +{ +uint8_t x_3; +x_3 = 0; +return x_3; +} +else +{ +lean_object* x_4; lean_object* x_5; size_t x_6; size_t x_7; uint8_t x_8; +x_4 = lean_ctor_get(x_2, 0); +x_5 = lean_ctor_get(x_2, 1); +x_6 = lean_ptr_addr(x_1); +x_7 = lean_ptr_addr(x_4); +x_8 = lean_usize_dec_eq(x_6, x_7); +if (x_8 == 0) +{ +x_2 = x_5; +goto _start; +} +else +{ +uint8_t x_10; +x_10 = 1; +return x_10; +} +} +} +} +LEAN_EXPORT uint8_t l_Lean_HashSetImp_contains___at___private_Lean_Meta_ExprDefEq_0__Lean_Meta_typeOccursCheckImp_alreadyVisited___spec__1(lean_object* x_1, lean_object* x_2) { +_start: +{ +lean_object* x_3; lean_object* x_4; size_t x_5; uint64_t x_6; uint64_t x_7; uint64_t x_8; size_t x_9; lean_object* x_10; uint8_t x_11; +x_3 = lean_ctor_get(x_1, 1); +x_4 = lean_array_get_size(x_3); +x_5 = lean_ptr_addr(x_2); +x_6 = lean_usize_to_uint64(x_5); +x_7 = 11; +x_8 = lean_uint64_mix_hash(x_6, x_7); +x_9 = lean_hashset_mk_idx(x_4, x_8); +x_10 = lean_array_uget(x_3, x_9); +x_11 = l_List_elem___at___private_Lean_Meta_ExprDefEq_0__Lean_Meta_typeOccursCheckImp_alreadyVisited___spec__2(x_2, x_10); +lean_dec(x_10); +return x_11; +} +} +LEAN_EXPORT lean_object* l_List_foldl___at___private_Lean_Meta_ExprDefEq_0__Lean_Meta_typeOccursCheckImp_alreadyVisited___spec__6(lean_object* x_1, lean_object* x_2, lean_object* x_3) { +_start: +{ +if (lean_obj_tag(x_3) == 0) +{ +lean_dec(x_1); +return x_2; +} +else +{ +uint8_t x_4; +x_4 = !lean_is_exclusive(x_3); +if (x_4 == 0) +{ +lean_object* x_5; lean_object* x_6; lean_object* x_7; lean_object* x_8; uint64_t x_9; size_t x_10; lean_object* x_11; lean_object* x_12; +x_5 = lean_ctor_get(x_3, 0); +x_6 = lean_ctor_get(x_3, 1); +x_7 = lean_array_get_size(x_2); +lean_inc(x_1); +lean_inc(x_5); +x_8 = lean_apply_1(x_1, x_5); +x_9 = lean_unbox_uint64(x_8); +lean_dec(x_8); +x_10 = lean_hashset_mk_idx(x_7, x_9); +x_11 = lean_array_uget(x_2, x_10); +lean_ctor_set(x_3, 1, x_11); +x_12 = lean_array_uset(x_2, x_10, x_3); +x_2 = x_12; +x_3 = x_6; +goto _start; +} +else +{ +lean_object* x_14; lean_object* x_15; lean_object* x_16; lean_object* x_17; uint64_t x_18; size_t x_19; lean_object* x_20; lean_object* x_21; lean_object* x_22; +x_14 = lean_ctor_get(x_3, 0); +x_15 = lean_ctor_get(x_3, 1); +lean_inc(x_15); +lean_inc(x_14); +lean_dec(x_3); +x_16 = lean_array_get_size(x_2); +lean_inc(x_1); +lean_inc(x_14); +x_17 = lean_apply_1(x_1, x_14); +x_18 = lean_unbox_uint64(x_17); +lean_dec(x_17); +x_19 = lean_hashset_mk_idx(x_16, x_18); +x_20 = lean_array_uget(x_2, x_19); +x_21 = lean_alloc_ctor(1, 2, 0); +lean_ctor_set(x_21, 0, x_14); +lean_ctor_set(x_21, 1, x_20); +x_22 = lean_array_uset(x_2, x_19, x_21); +x_2 = x_22; +x_3 = x_15; +goto _start; +} +} +} +} +LEAN_EXPORT lean_object* l_List_foldl___at___private_Lean_Meta_ExprDefEq_0__Lean_Meta_typeOccursCheckImp_alreadyVisited___spec__6___at___private_Lean_Meta_ExprDefEq_0__Lean_Meta_typeOccursCheckImp_alreadyVisited___spec__7(lean_object* x_1, lean_object* x_2) { +_start: +{ +if (lean_obj_tag(x_2) == 0) +{ +return x_1; +} +else +{ +uint8_t x_3; +x_3 = !lean_is_exclusive(x_2); +if (x_3 == 0) +{ +lean_object* x_4; lean_object* x_5; lean_object* x_6; size_t x_7; uint64_t x_8; uint64_t x_9; uint64_t x_10; size_t x_11; lean_object* x_12; lean_object* x_13; +x_4 = lean_ctor_get(x_2, 0); +x_5 = lean_ctor_get(x_2, 1); +x_6 = lean_array_get_size(x_1); +x_7 = lean_ptr_addr(x_4); +x_8 = lean_usize_to_uint64(x_7); +x_9 = 11; +x_10 = lean_uint64_mix_hash(x_8, x_9); +x_11 = lean_hashset_mk_idx(x_6, x_10); +x_12 = lean_array_uget(x_1, x_11); +lean_ctor_set(x_2, 1, x_12); +x_13 = lean_array_uset(x_1, x_11, x_2); +x_1 = x_13; +x_2 = x_5; +goto _start; +} +else +{ +lean_object* x_15; lean_object* x_16; lean_object* x_17; size_t x_18; uint64_t x_19; uint64_t x_20; uint64_t x_21; size_t x_22; lean_object* x_23; lean_object* x_24; lean_object* x_25; +x_15 = lean_ctor_get(x_2, 0); +x_16 = lean_ctor_get(x_2, 1); +lean_inc(x_16); +lean_inc(x_15); +lean_dec(x_2); +x_17 = lean_array_get_size(x_1); +x_18 = lean_ptr_addr(x_15); +x_19 = lean_usize_to_uint64(x_18); +x_20 = 11; +x_21 = lean_uint64_mix_hash(x_19, x_20); +x_22 = lean_hashset_mk_idx(x_17, x_21); +x_23 = lean_array_uget(x_1, x_22); +x_24 = lean_alloc_ctor(1, 2, 0); +lean_ctor_set(x_24, 0, x_15); +lean_ctor_set(x_24, 1, x_23); +x_25 = lean_array_uset(x_1, x_22, x_24); +x_1 = x_25; +x_2 = x_16; +goto _start; +} +} +} +} +LEAN_EXPORT lean_object* l_Lean_HashSetImp_moveEntries___at___private_Lean_Meta_ExprDefEq_0__Lean_Meta_typeOccursCheckImp_alreadyVisited___spec__5(lean_object* x_1, lean_object* x_2, lean_object* x_3) { +_start: +{ +lean_object* x_4; uint8_t x_5; +x_4 = lean_array_get_size(x_2); +x_5 = lean_nat_dec_lt(x_1, x_4); +lean_dec(x_4); +if (x_5 == 0) +{ +lean_dec(x_2); +lean_dec(x_1); +return x_3; +} +else +{ +lean_object* x_6; lean_object* x_7; lean_object* x_8; lean_object* x_9; lean_object* x_10; lean_object* x_11; +x_6 = lean_array_fget(x_2, x_1); +x_7 = lean_box(0); +x_8 = lean_array_fset(x_2, x_1, x_7); +x_9 = l_List_foldl___at___private_Lean_Meta_ExprDefEq_0__Lean_Meta_typeOccursCheckImp_alreadyVisited___spec__6___at___private_Lean_Meta_ExprDefEq_0__Lean_Meta_typeOccursCheckImp_alreadyVisited___spec__7(x_3, x_6); +x_10 = lean_unsigned_to_nat(1u); +x_11 = lean_nat_add(x_1, x_10); +lean_dec(x_1); +x_1 = x_11; +x_2 = x_8; +x_3 = x_9; +goto _start; +} +} +} +LEAN_EXPORT lean_object* l_Lean_HashSetImp_expand___at___private_Lean_Meta_ExprDefEq_0__Lean_Meta_typeOccursCheckImp_alreadyVisited___spec__4(lean_object* x_1, lean_object* x_2) { +_start: +{ +lean_object* x_3; lean_object* x_4; lean_object* x_5; lean_object* x_6; lean_object* x_7; lean_object* x_8; lean_object* x_9; lean_object* x_10; +x_3 = lean_array_get_size(x_2); +x_4 = lean_unsigned_to_nat(2u); +x_5 = lean_nat_mul(x_3, x_4); +lean_dec(x_3); +x_6 = lean_box(0); +x_7 = lean_mk_array(x_5, x_6); +x_8 = lean_unsigned_to_nat(0u); +x_9 = l_Lean_HashSetImp_moveEntries___at___private_Lean_Meta_ExprDefEq_0__Lean_Meta_typeOccursCheckImp_alreadyVisited___spec__5(x_8, x_2, x_7); +x_10 = lean_alloc_ctor(0, 2, 0); +lean_ctor_set(x_10, 0, x_1); +lean_ctor_set(x_10, 1, x_9); +return x_10; +} +} +LEAN_EXPORT lean_object* l_List_replace___at___private_Lean_Meta_ExprDefEq_0__Lean_Meta_typeOccursCheckImp_alreadyVisited___spec__8(lean_object* x_1, lean_object* x_2, lean_object* x_3) { +_start: +{ +if (lean_obj_tag(x_1) == 0) +{ +lean_object* x_4; +lean_dec(x_3); +x_4 = lean_box(0); +return x_4; +} +else +{ +uint8_t x_5; +x_5 = !lean_is_exclusive(x_1); +if (x_5 == 0) +{ +lean_object* x_6; lean_object* x_7; size_t x_8; size_t x_9; uint8_t x_10; +x_6 = lean_ctor_get(x_1, 0); +x_7 = lean_ctor_get(x_1, 1); +x_8 = lean_ptr_addr(x_2); +x_9 = lean_ptr_addr(x_6); +x_10 = lean_usize_dec_eq(x_8, x_9); +if (x_10 == 0) +{ +lean_object* x_11; +x_11 = l_List_replace___at___private_Lean_Meta_ExprDefEq_0__Lean_Meta_typeOccursCheckImp_alreadyVisited___spec__8(x_7, x_2, x_3); +lean_ctor_set(x_1, 1, x_11); +return x_1; +} +else +{ +lean_dec(x_6); +lean_ctor_set(x_1, 0, x_3); +return x_1; +} +} +else +{ +lean_object* x_12; lean_object* x_13; size_t x_14; size_t x_15; uint8_t x_16; +x_12 = lean_ctor_get(x_1, 0); +x_13 = lean_ctor_get(x_1, 1); +lean_inc(x_13); +lean_inc(x_12); +lean_dec(x_1); +x_14 = lean_ptr_addr(x_2); +x_15 = lean_ptr_addr(x_12); +x_16 = lean_usize_dec_eq(x_14, x_15); +if (x_16 == 0) +{ +lean_object* x_17; lean_object* x_18; +x_17 = l_List_replace___at___private_Lean_Meta_ExprDefEq_0__Lean_Meta_typeOccursCheckImp_alreadyVisited___spec__8(x_13, x_2, x_3); +x_18 = lean_alloc_ctor(1, 2, 0); +lean_ctor_set(x_18, 0, x_12); +lean_ctor_set(x_18, 1, x_17); +return x_18; +} +else +{ +lean_object* x_19; +lean_dec(x_12); +x_19 = lean_alloc_ctor(1, 2, 0); +lean_ctor_set(x_19, 0, x_3); +lean_ctor_set(x_19, 1, x_13); +return x_19; +} +} +} +} +} +LEAN_EXPORT lean_object* l_Lean_HashSetImp_insert___at___private_Lean_Meta_ExprDefEq_0__Lean_Meta_typeOccursCheckImp_alreadyVisited___spec__3(lean_object* x_1, lean_object* x_2) { +_start: +{ +uint8_t x_3; +x_3 = !lean_is_exclusive(x_1); +if (x_3 == 0) +{ +lean_object* x_4; lean_object* x_5; lean_object* x_6; size_t x_7; uint64_t x_8; uint64_t x_9; uint64_t x_10; size_t x_11; lean_object* x_12; uint8_t x_13; +x_4 = lean_ctor_get(x_1, 0); +x_5 = lean_ctor_get(x_1, 1); +x_6 = lean_array_get_size(x_5); +x_7 = lean_ptr_addr(x_2); +x_8 = lean_usize_to_uint64(x_7); +x_9 = 11; +x_10 = lean_uint64_mix_hash(x_8, x_9); +lean_inc(x_6); +x_11 = lean_hashset_mk_idx(x_6, x_10); +x_12 = lean_array_uget(x_5, x_11); +x_13 = l_List_elem___at___private_Lean_Meta_ExprDefEq_0__Lean_Meta_typeOccursCheckImp_alreadyVisited___spec__2(x_2, x_12); +if (x_13 == 0) +{ +lean_object* x_14; lean_object* x_15; lean_object* x_16; lean_object* x_17; uint8_t x_18; +x_14 = lean_unsigned_to_nat(1u); +x_15 = lean_nat_add(x_4, x_14); +lean_dec(x_4); +x_16 = lean_alloc_ctor(1, 2, 0); +lean_ctor_set(x_16, 0, x_2); +lean_ctor_set(x_16, 1, x_12); +x_17 = lean_array_uset(x_5, x_11, x_16); +x_18 = lean_nat_dec_le(x_15, x_6); +lean_dec(x_6); +if (x_18 == 0) +{ +lean_object* x_19; +lean_free_object(x_1); +x_19 = l_Lean_HashSetImp_expand___at___private_Lean_Meta_ExprDefEq_0__Lean_Meta_typeOccursCheckImp_alreadyVisited___spec__4(x_15, x_17); +return x_19; +} +else +{ +lean_ctor_set(x_1, 1, x_17); +lean_ctor_set(x_1, 0, x_15); +return x_1; +} +} +else +{ +lean_object* x_20; lean_object* x_21; lean_object* x_22; lean_object* x_23; +lean_dec(x_6); +x_20 = lean_box(0); +x_21 = lean_array_uset(x_5, x_11, x_20); +lean_inc(x_2); +x_22 = l_List_replace___at___private_Lean_Meta_ExprDefEq_0__Lean_Meta_typeOccursCheckImp_alreadyVisited___spec__8(x_12, x_2, x_2); +lean_dec(x_2); +x_23 = lean_array_uset(x_21, x_11, x_22); +lean_ctor_set(x_1, 1, x_23); +return x_1; +} +} +else +{ +lean_object* x_24; lean_object* x_25; lean_object* x_26; size_t x_27; uint64_t x_28; uint64_t x_29; uint64_t x_30; size_t x_31; lean_object* x_32; uint8_t x_33; +x_24 = lean_ctor_get(x_1, 0); +x_25 = lean_ctor_get(x_1, 1); +lean_inc(x_25); +lean_inc(x_24); +lean_dec(x_1); +x_26 = lean_array_get_size(x_25); +x_27 = lean_ptr_addr(x_2); +x_28 = lean_usize_to_uint64(x_27); +x_29 = 11; +x_30 = lean_uint64_mix_hash(x_28, x_29); +lean_inc(x_26); +x_31 = lean_hashset_mk_idx(x_26, x_30); +x_32 = lean_array_uget(x_25, x_31); +x_33 = l_List_elem___at___private_Lean_Meta_ExprDefEq_0__Lean_Meta_typeOccursCheckImp_alreadyVisited___spec__2(x_2, x_32); +if (x_33 == 0) +{ +lean_object* x_34; lean_object* x_35; lean_object* x_36; lean_object* x_37; uint8_t x_38; +x_34 = lean_unsigned_to_nat(1u); +x_35 = lean_nat_add(x_24, x_34); +lean_dec(x_24); +x_36 = lean_alloc_ctor(1, 2, 0); +lean_ctor_set(x_36, 0, x_2); +lean_ctor_set(x_36, 1, x_32); +x_37 = lean_array_uset(x_25, x_31, x_36); +x_38 = lean_nat_dec_le(x_35, x_26); +lean_dec(x_26); +if (x_38 == 0) +{ +lean_object* x_39; +x_39 = l_Lean_HashSetImp_expand___at___private_Lean_Meta_ExprDefEq_0__Lean_Meta_typeOccursCheckImp_alreadyVisited___spec__4(x_35, x_37); +return x_39; +} +else +{ +lean_object* x_40; +x_40 = lean_alloc_ctor(0, 2, 0); +lean_ctor_set(x_40, 0, x_35); +lean_ctor_set(x_40, 1, x_37); +return x_40; +} +} +else +{ +lean_object* x_41; lean_object* x_42; lean_object* x_43; lean_object* x_44; lean_object* x_45; +lean_dec(x_26); +x_41 = lean_box(0); +x_42 = lean_array_uset(x_25, x_31, x_41); +lean_inc(x_2); +x_43 = l_List_replace___at___private_Lean_Meta_ExprDefEq_0__Lean_Meta_typeOccursCheckImp_alreadyVisited___spec__8(x_32, x_2, x_2); +lean_dec(x_2); +x_44 = lean_array_uset(x_42, x_31, x_43); +x_45 = lean_alloc_ctor(0, 2, 0); +lean_ctor_set(x_45, 0, x_24); +lean_ctor_set(x_45, 1, x_44); +return x_45; +} +} +} +} LEAN_EXPORT lean_object* l___private_Lean_Meta_ExprDefEq_0__Lean_Meta_typeOccursCheckImp_alreadyVisited(lean_object* x_1, lean_object* x_2) { _start: { uint8_t x_3; -x_3 = l_Lean_HashSetImp_contains___at_Lean_Expr_FindImpl_checkVisited___spec__8(x_2, x_1); +x_3 = l_Lean_HashSetImp_contains___at___private_Lean_Meta_ExprDefEq_0__Lean_Meta_typeOccursCheckImp_alreadyVisited___spec__1(x_2, x_1); if (x_3 == 0) { lean_object* x_4; uint8_t x_5; lean_object* x_6; lean_object* x_7; -x_4 = l_Lean_HashSetImp_insert___at_Lean_Expr_FindImpl_checkVisited___spec__1(x_2, x_1); +x_4 = l_Lean_HashSetImp_insert___at___private_Lean_Meta_ExprDefEq_0__Lean_Meta_typeOccursCheckImp_alreadyVisited___spec__3(x_2, x_1); x_5 = 0; x_6 = lean_box(x_5); x_7 = lean_alloc_ctor(0, 2, 0); @@ -43557,6 +43966,37 @@ return x_10; } } } +LEAN_EXPORT lean_object* l_List_elem___at___private_Lean_Meta_ExprDefEq_0__Lean_Meta_typeOccursCheckImp_alreadyVisited___spec__2___boxed(lean_object* x_1, lean_object* x_2) { +_start: +{ +uint8_t x_3; lean_object* x_4; +x_3 = l_List_elem___at___private_Lean_Meta_ExprDefEq_0__Lean_Meta_typeOccursCheckImp_alreadyVisited___spec__2(x_1, x_2); +lean_dec(x_2); +lean_dec(x_1); +x_4 = lean_box(x_3); +return x_4; +} +} +LEAN_EXPORT lean_object* l_Lean_HashSetImp_contains___at___private_Lean_Meta_ExprDefEq_0__Lean_Meta_typeOccursCheckImp_alreadyVisited___spec__1___boxed(lean_object* x_1, lean_object* x_2) { +_start: +{ +uint8_t x_3; lean_object* x_4; +x_3 = l_Lean_HashSetImp_contains___at___private_Lean_Meta_ExprDefEq_0__Lean_Meta_typeOccursCheckImp_alreadyVisited___spec__1(x_1, x_2); +lean_dec(x_2); +lean_dec(x_1); +x_4 = lean_box(x_3); +return x_4; +} +} +LEAN_EXPORT lean_object* l_List_replace___at___private_Lean_Meta_ExprDefEq_0__Lean_Meta_typeOccursCheckImp_alreadyVisited___spec__8___boxed(lean_object* x_1, lean_object* x_2, lean_object* x_3) { +_start: +{ +lean_object* x_4; +x_4 = l_List_replace___at___private_Lean_Meta_ExprDefEq_0__Lean_Meta_typeOccursCheckImp_alreadyVisited___spec__8(x_1, x_2, x_3); +lean_dec(x_2); +return x_4; +} +} LEAN_EXPORT lean_object* l_Lean_getExprMVarAssignment_x3f___at___private_Lean_Meta_ExprDefEq_0__Lean_Meta_typeOccursCheckImp_occursCheck___spec__4(lean_object* x_1, lean_object* x_2, lean_object* x_3) { _start: { diff --git a/stage0/stdlib/Lean/Meta/FunInfo.c b/stage0/stdlib/Lean/Meta/FunInfo.c index 9ff4b983a6..ce04d6a4a8 100644 --- a/stage0/stdlib/Lean/Meta/FunInfo.c +++ b/stage0/stdlib/Lean/Meta/FunInfo.c @@ -92,7 +92,6 @@ LEAN_EXPORT lean_object* l_Lean_Meta_FunInfo_getArity___boxed(lean_object*); lean_object* l_instMonadControlTOfPure___rarg(lean_object*); static lean_object* l_Std_Range_forIn_loop___at___private_Lean_Meta_FunInfo_0__Lean_Meta_getFunInfoAux___spec__3___lambda__1___closed__2; LEAN_EXPORT lean_object* l___private_Lean_Meta_FunInfo_0__Lean_Meta_collectDeps___boxed(lean_object*, lean_object*); -lean_object* l_Lean_Expr_FindImpl_findUnsafe_x3f(lean_object*, lean_object*); LEAN_EXPORT lean_object* l___private_Lean_Meta_FunInfo_0__Lean_Meta_whenHasVar___rarg___boxed(lean_object*, lean_object*, lean_object*); LEAN_EXPORT lean_object* l_Std_Range_forIn_loop___at___private_Lean_Meta_FunInfo_0__Lean_Meta_getFunInfoAux___spec__3___at___private_Lean_Meta_FunInfo_0__Lean_Meta_getFunInfoAux___spec__4(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); LEAN_EXPORT lean_object* l_Array_anyMUnsafe_any___at___private_Lean_Meta_FunInfo_0__Lean_Meta_collectDeps_visit___spec__3___boxed(lean_object*, lean_object*, lean_object*, lean_object*); @@ -135,6 +134,7 @@ lean_object* l___private_Lean_Expr_0__Lean_Expr_getAppArgsAux(lean_object*, lean lean_object* lean_array_get_size(lean_object*); LEAN_EXPORT lean_object* l_Std_Range_forIn_loop___at___private_Lean_Meta_FunInfo_0__Lean_Meta_getFunInfoAux___spec__3___at___private_Lean_Meta_FunInfo_0__Lean_Meta_getFunInfoAux___spec__4___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); lean_object* lean_infer_type(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); +lean_object* lean_find_expr(lean_object*, lean_object*); uint8_t lean_nat_dec_le(lean_object*, lean_object*); LEAN_EXPORT uint8_t l_Array_contains___at___private_Lean_Meta_FunInfo_0__Lean_Meta_collectDeps_visit___spec__2(lean_object*, lean_object*); lean_object* lean_nat_add(lean_object*, lean_object*); @@ -2814,8 +2814,8 @@ lean_object* x_161; lean_object* x_162; lean_inc(x_26); x_161 = lean_alloc_closure((void*)(l_Std_Range_forIn_loop___at___private_Lean_Meta_FunInfo_0__Lean_Meta_getFunInfoAux___spec__3___lambda__2___boxed), 2, 1); lean_closure_set(x_161, 0, x_26); -lean_inc(x_33); -x_162 = l_Lean_Expr_FindImpl_findUnsafe_x3f(x_161, x_33); +x_162 = lean_find_expr(x_161, x_33); +lean_dec(x_161); if (lean_obj_tag(x_162) == 0) { if (lean_obj_tag(x_152) == 0) @@ -3729,8 +3729,8 @@ lean_object* x_160; lean_object* x_161; lean_inc(x_25); x_160 = lean_alloc_closure((void*)(l_Std_Range_forIn_loop___at___private_Lean_Meta_FunInfo_0__Lean_Meta_getFunInfoAux___spec__3___lambda__2___boxed), 2, 1); lean_closure_set(x_160, 0, x_25); -lean_inc(x_32); -x_161 = l_Lean_Expr_FindImpl_findUnsafe_x3f(x_160, x_32); +x_161 = lean_find_expr(x_160, x_32); +lean_dec(x_160); if (lean_obj_tag(x_161) == 0) { if (lean_obj_tag(x_151) == 0) diff --git a/stage0/stdlib/Lean/Meta/Injective.c b/stage0/stdlib/Lean/Meta/Injective.c index 35a1955627..343c967832 100644 --- a/stage0/stdlib/Lean/Meta/Injective.c +++ b/stage0/stdlib/Lean/Meta/Injective.c @@ -195,7 +195,6 @@ static lean_object* l___private_Lean_Util_Trace_0__Lean_getResetTraces___at_Lean static double l_Lean_withTraceNode___at_Lean_Meta_mkInjectiveTheorems___spec__5___lambda__2___closed__1; lean_object* l_Lean_Core_transform___at_Lean_Core_betaReduce___spec__1(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); lean_object* l_Lean_Meta_withLCtx___at___private_Lean_Meta_Basic_0__Lean_Meta_mkLeveErrorMessageCore___spec__2___rarg(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); -lean_object* l_Lean_Expr_FindImpl_findUnsafe_x3f(lean_object*, lean_object*); static lean_object* l_Lean_getConstInfo___at_Lean_Meta_mkInjectiveTheorems___spec__2___closed__1; LEAN_EXPORT lean_object* l_Lean_withTraceNode___at_Lean_Meta_mkInjectiveTheorems___spec__5___lambda__2(lean_object*, uint8_t, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, uint8_t, double, double, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); LEAN_EXPORT lean_object* l___private_Lean_Meta_Injective_0__Lean_Meta_mkInjectiveEqTheoremValue(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); @@ -261,6 +260,7 @@ static lean_object* l_Lean_isTracingEnabledFor___at_Lean_Meta_mkInjectiveTheorem LEAN_EXPORT lean_object* l_Lean_getConstInfo___at_Lean_Meta_mkInjectiveTheorems___spec__2___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); lean_object* lean_infer_type(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); static lean_object* l_List_forIn_loop___at_Lean_Meta_mkInjectiveTheorems___spec__10___closed__1; +lean_object* lean_find_expr(lean_object*, lean_object*); static lean_object* l_Lean_Meta_initFn____x40_Lean_Meta_Injective___hyg_2306____closed__1; uint8_t lean_usize_dec_lt(size_t, size_t); lean_object* l_Lean_Meta_intro1Core(lean_object*, uint8_t, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); @@ -546,6 +546,7 @@ lean_object* x_9; uint8_t x_10; x_9 = l_Lean_LocalDecl_type(x_7); lean_dec(x_7); x_10 = l_Lean_Expr_occurs(x_2, x_9); +lean_dec(x_9); return x_10; } else @@ -585,7 +586,8 @@ lean_object* x_4; lean_object* x_5; x_4 = lean_alloc_closure((void*)(l_Lean_Meta_occursOrInType_go___boxed), 3, 2); lean_closure_set(x_4, 0, x_1); lean_closure_set(x_4, 1, x_2); -x_5 = l_Lean_Expr_FindImpl_findUnsafe_x3f(x_4, x_3); +x_5 = lean_find_expr(x_4, x_3); +lean_dec(x_4); if (lean_obj_tag(x_5) == 0) { uint8_t x_6; @@ -606,6 +608,7 @@ _start: { uint8_t x_4; lean_object* x_5; x_4 = l_Lean_Meta_occursOrInType(x_1, x_2, x_3); +lean_dec(x_3); x_5 = lean_box(x_4); return x_5; } @@ -743,7 +746,6 @@ lean_dec(x_19); x_24 = lean_array_fget(x_3, x_6); x_25 = lean_ctor_get(x_10, 1); lean_inc(x_25); -lean_inc(x_4); lean_inc(x_24); x_26 = l_Lean_Meta_occursOrInType(x_25, x_24, x_4); if (x_26 == 0) diff --git a/stage0/stdlib/Lean/Meta/Match/Match.c b/stage0/stdlib/Lean/Meta/Match/Match.c index c891e15305..e135ec491c 100644 --- a/stage0/stdlib/Lean/Meta/Match/Match.c +++ b/stage0/stdlib/Lean/Meta/Match/Match.c @@ -38551,12 +38551,10 @@ if (x_66 == 0) lean_object* x_67; lean_object* x_68; uint8_t x_69; x_67 = lean_ctor_get(x_61, 0); x_68 = lean_ctor_get(x_61, 1); -lean_inc(x_67); x_69 = l_Lean_Expr_hasSorry(x_67); if (x_69 == 0) { uint8_t x_70; -lean_inc(x_59); x_70 = l_Lean_Expr_hasSorry(x_59); if (x_70 == 0) { @@ -38667,12 +38665,10 @@ x_90 = lean_ctor_get(x_61, 1); lean_inc(x_90); lean_inc(x_89); lean_dec(x_61); -lean_inc(x_89); x_91 = l_Lean_Expr_hasSorry(x_89); if (x_91 == 0) { uint8_t x_92; -lean_inc(x_59); x_92 = l_Lean_Expr_hasSorry(x_59); if (x_92 == 0) { @@ -38816,12 +38812,10 @@ if (lean_is_exclusive(x_115)) { lean_dec_ref(x_115); x_122 = lean_box(0); } -lean_inc(x_120); x_123 = l_Lean_Expr_hasSorry(x_120); if (x_123 == 0) { uint8_t x_124; -lean_inc(x_113); x_124 = l_Lean_Expr_hasSorry(x_113); if (x_124 == 0) { @@ -39961,12 +39955,10 @@ if (x_63 == 0) lean_object* x_64; lean_object* x_65; uint8_t x_66; x_64 = lean_ctor_get(x_58, 0); x_65 = lean_ctor_get(x_58, 1); -lean_inc(x_64); x_66 = l_Lean_Expr_hasSorry(x_64); if (x_66 == 0) { uint8_t x_67; -lean_inc(x_56); x_67 = l_Lean_Expr_hasSorry(x_56); if (x_67 == 0) { @@ -40079,12 +40071,10 @@ x_87 = lean_ctor_get(x_58, 1); lean_inc(x_87); lean_inc(x_86); lean_dec(x_58); -lean_inc(x_86); x_88 = l_Lean_Expr_hasSorry(x_86); if (x_88 == 0) { uint8_t x_89; -lean_inc(x_56); x_89 = l_Lean_Expr_hasSorry(x_56); if (x_89 == 0) { @@ -40230,12 +40220,10 @@ if (lean_is_exclusive(x_112)) { lean_dec_ref(x_112); x_119 = lean_box(0); } -lean_inc(x_117); x_120 = l_Lean_Expr_hasSorry(x_117); if (x_120 == 0) { uint8_t x_121; -lean_inc(x_110); x_121 = l_Lean_Expr_hasSorry(x_110); if (x_121 == 0) { diff --git a/stage0/stdlib/Lean/Meta/Match/MatchEqs.c b/stage0/stdlib/Lean/Meta/Match/MatchEqs.c index dc6ff4fbb6..dc36470618 100644 --- a/stage0/stdlib/Lean/Meta/Match/MatchEqs.c +++ b/stage0/stdlib/Lean/Meta/Match/MatchEqs.c @@ -574,7 +574,6 @@ lean_object* l_Subarray_get___rarg(lean_object*, lean_object*); LEAN_EXPORT lean_object* l_Lean_addTrace___at___private_Lean_Meta_Match_MatchEqs_0__Lean_Meta_Match_mkSplitterProof_convertCastEqRec_go___spec__5(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); lean_object* l_Lean_Meta_withLCtx___at___private_Lean_Meta_Basic_0__Lean_Meta_mkLeveErrorMessageCore___spec__2___rarg(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); LEAN_EXPORT lean_object* l___private_Lean_Meta_Match_MatchEqs_0__Lean_Meta_Match_substSomeVar___lambda__2(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); -lean_object* l_Lean_Expr_FindImpl_findUnsafe_x3f(lean_object*, lean_object*); LEAN_EXPORT lean_object* l___private_Lean_Meta_Match_MatchEqs_0__Lean_Meta_Match_mkSplitterProof_convertCastEqRec(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); static lean_object* l_Lean_Meta_casesOnStuckLHS___closed__1; LEAN_EXPORT lean_object* l___private_Lean_Meta_Match_MatchEqs_0__Lean_Meta_Match_injectionAnyCandidate_x3f___lambda__1___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); @@ -797,6 +796,7 @@ LEAN_EXPORT lean_object* l_Lean_PersistentArray_forIn___at___private_Lean_Meta_M static lean_object* l_Lean_Meta_Match_forallAltTelescope_go___rarg___closed__4; static lean_object* l_Lean_Expr_withAppAux___at___private_Lean_Meta_Match_MatchEqs_0__Lean_Meta_Match_mkSplitterProof_convertCastEqRec___spec__8___lambda__11___closed__3; lean_object* lean_infer_type(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); +lean_object* lean_find_expr(lean_object*, lean_object*); uint8_t lean_nat_dec_le(lean_object*, lean_object*); static lean_object* l___private_Lean_Meta_Match_MatchEqs_0__Lean_Meta_Match_injectionAnyCandidate_x3f___closed__1; LEAN_EXPORT lean_object* l___private_Lean_Meta_Match_MatchEqs_0__Lean_Meta_Match_mkSplitterProof_mkMap(lean_object*, lean_object*, lean_object*, lean_object*); @@ -5960,7 +5960,8 @@ _start: lean_object* x_3; lean_object* x_4; x_3 = lean_alloc_closure((void*)(l_Lean_Meta_Match_forallAltTelescope_isNamedPatternProof___lambda__1___boxed), 2, 1); lean_closure_set(x_3, 0, x_2); -x_4 = l_Lean_Expr_FindImpl_findUnsafe_x3f(x_3, x_1); +x_4 = lean_find_expr(x_3, x_1); +lean_dec(x_3); if (lean_obj_tag(x_4) == 0) { uint8_t x_5; @@ -5992,6 +5993,7 @@ _start: { uint8_t x_3; lean_object* x_4; x_3 = l_Lean_Meta_Match_forallAltTelescope_isNamedPatternProof(x_1, x_2); +lean_dec(x_1); x_4 = lean_box(x_3); return x_4; } @@ -6788,7 +6790,6 @@ else { uint8_t x_38; lean_inc(x_12); -lean_inc(x_18); x_38 = l_Lean_Meta_Match_forallAltTelescope_isNamedPatternProof(x_18, x_12); if (x_38 == 0) { diff --git a/stage0/stdlib/Lean/Meta/RecursorInfo.c b/stage0/stdlib/Lean/Meta/RecursorInfo.c index ea2072e3cb..6194815d5e 100644 --- a/stage0/stdlib/Lean/Meta/RecursorInfo.c +++ b/stage0/stdlib/Lean/Meta/RecursorInfo.c @@ -222,7 +222,6 @@ static lean_object* l_Lean_Expr_withAppAux___at___private_Lean_Meta_RecursorInfo LEAN_EXPORT lean_object* l___private_Lean_Meta_RecursorInfo_0__Lean_Meta_checkMotiveResultType___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); static lean_object* l_Lean_Meta_initFn____x40_Lean_Meta_RecursorInfo___hyg_2934____lambda__2___closed__10; static lean_object* l_List_toString___at_Lean_Meta_RecursorInfo_instToString___spec__7___closed__1; -lean_object* l_Lean_Expr_FindImpl_findUnsafe_x3f(lean_object*, lean_object*); static lean_object* l___private_Lean_Meta_RecursorInfo_0__Lean_Meta_getParamsPos___closed__1; LEAN_EXPORT lean_object* l___private_Lean_Meta_RecursorInfo_0__Lean_Meta_getParamsPos___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); LEAN_EXPORT lean_object* l_Lean_Expr_withAppAux___at___private_Lean_Meta_RecursorInfo_0__Lean_Meta_mkRecursorInfoAux___spec__2___boxed(lean_object**); @@ -307,6 +306,7 @@ static lean_object* l_Lean_Meta_initFn____x40_Lean_Meta_RecursorInfo___hyg_2934_ lean_object* lean_infer_type(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); static lean_object* l___private_Lean_Meta_RecursorInfo_0__Lean_Meta_checkMotive___closed__4; uint8_t lean_level_eq(lean_object*, lean_object*); +lean_object* lean_find_expr(lean_object*, lean_object*); uint8_t lean_nat_dec_le(lean_object*, lean_object*); LEAN_EXPORT lean_object* l___private_Lean_Meta_RecursorInfo_0__Lean_Meta_checkMotive(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); uint8_t lean_usize_dec_lt(size_t, size_t); @@ -5168,7 +5168,9 @@ x_15 = lean_ctor_get(x_12, 1); lean_inc(x_1); x_16 = lean_alloc_closure((void*)(l_Array_getIdx_x3f___at___private_Lean_Meta_RecursorInfo_0__Lean_Meta_getMajorPosDepElim___spec__1___lambda__1___boxed), 2, 1); lean_closure_set(x_16, 0, x_1); -x_17 = l_Lean_Expr_FindImpl_findUnsafe_x3f(x_16, x_14); +x_17 = lean_find_expr(x_16, x_14); +lean_dec(x_14); +lean_dec(x_16); if (lean_obj_tag(x_17) == 0) { size_t x_18; size_t x_19; @@ -5205,7 +5207,9 @@ lean_dec(x_12); lean_inc(x_1); x_25 = lean_alloc_closure((void*)(l_Array_getIdx_x3f___at___private_Lean_Meta_RecursorInfo_0__Lean_Meta_getMajorPosDepElim___spec__1___lambda__1___boxed), 2, 1); lean_closure_set(x_25, 0, x_1); -x_26 = l_Lean_Expr_FindImpl_findUnsafe_x3f(x_25, x_23); +x_26 = lean_find_expr(x_25, x_23); +lean_dec(x_23); +lean_dec(x_25); if (lean_obj_tag(x_26) == 0) { size_t x_27; size_t x_28; diff --git a/stage0/stdlib/Lean/Meta/Tactic/Acyclic.c b/stage0/stdlib/Lean/Meta/Tactic/Acyclic.c index 4730eaa884..518825fa74 100644 --- a/stage0/stdlib/Lean/Meta/Tactic/Acyclic.c +++ b/stage0/stdlib/Lean/Meta/Tactic/Acyclic.c @@ -144,7 +144,6 @@ return x_11; else { uint8_t x_12; -lean_inc(x_2); x_12 = l_Lean_Expr_occurs(x_1, x_2); if (x_12 == 0) { diff --git a/stage0/stdlib/Lean/Meta/Tactic/Contradiction.c b/stage0/stdlib/Lean/Meta/Tactic/Contradiction.c index 52a52b34f7..67f777a814 100644 --- a/stage0/stdlib/Lean/Meta/Tactic/Contradiction.c +++ b/stage0/stdlib/Lean/Meta/Tactic/Contradiction.c @@ -195,7 +195,6 @@ static lean_object* l_Lean_Meta_initFn____x40_Lean_Meta_Tactic_Contradiction___h static lean_object* l_Lean_Meta_ElimEmptyInductive_elim___lambda__3___closed__4; LEAN_EXPORT lean_object* l_Lean_PersistentArray_forInAux___at_Lean_MVarId_contradictionCore___spec__2___lambda__1(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); static lean_object* l_Lean_Meta_initFn____x40_Lean_Meta_Tactic_Contradiction___hyg_4434____closed__11; -lean_object* l_Lean_Expr_FindImpl_findUnsafe_x3f(lean_object*, lean_object*); static lean_object* l_Lean_Meta_initFn____x40_Lean_Meta_Tactic_Contradiction___hyg_4434____closed__8; static lean_object* l_Lean_Meta_ElimEmptyInductive_elim___lambda__7___closed__1; static lean_object* l_Lean_MVarId_contradictionCore___closed__4; @@ -263,6 +262,7 @@ lean_object* lean_array_get_size(lean_object*); lean_object* l_Lean_LocalDecl_toExpr(lean_object*); LEAN_EXPORT lean_object* l_Array_forInUnsafe_loop___at_Lean_MVarId_contradictionCore___spec__4___lambda__1(lean_object*, lean_object*, uint8_t, uint8_t, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); lean_object* lean_infer_type(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); +lean_object* lean_find_expr(lean_object*, lean_object*); LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Contradiction_0__Lean_Meta_processGenDiseq___lambda__1(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); uint8_t lean_usize_dec_lt(size_t, size_t); LEAN_EXPORT uint8_t l_Lean_Meta_Contradiction_Config_useDecide___default; @@ -400,7 +400,8 @@ lean_object* x_9; lean_object* x_10; lean_object* x_11; lean_object* x_12; x_9 = lean_ctor_get(x_7, 0); x_10 = lean_ctor_get(x_7, 1); x_11 = l___private_Lean_Meta_Tactic_Contradiction_0__Lean_Meta_nestedFalseElim___closed__1; -x_12 = l_Lean_Expr_FindImpl_findUnsafe_x3f(x_11, x_9); +x_12 = lean_find_expr(x_11, x_9); +lean_dec(x_9); if (lean_obj_tag(x_12) == 0) { uint8_t x_13; lean_object* x_14; @@ -543,7 +544,8 @@ lean_inc(x_41); lean_inc(x_40); lean_dec(x_7); x_42 = l___private_Lean_Meta_Tactic_Contradiction_0__Lean_Meta_nestedFalseElim___closed__1; -x_43 = l_Lean_Expr_FindImpl_findUnsafe_x3f(x_42, x_40); +x_43 = lean_find_expr(x_42, x_40); +lean_dec(x_40); if (lean_obj_tag(x_43) == 0) { uint8_t x_44; lean_object* x_45; lean_object* x_46; diff --git a/stage0/stdlib/Lean/Meta/Tactic/Simp/SimpCongrTheorems.c b/stage0/stdlib/Lean/Meta/Tactic/Simp/SimpCongrTheorems.c index 12514affc7..de4378eb35 100644 --- a/stage0/stdlib/Lean/Meta/Tactic/Simp/SimpCongrTheorems.c +++ b/stage0/stdlib/Lean/Meta/Tactic/Simp/SimpCongrTheorems.c @@ -258,7 +258,6 @@ LEAN_EXPORT lean_object* l_Lean_HashMapImp_find_x3f___at_Lean_Meta_SimpCongrTheo static lean_object* l_Array_forInUnsafe_loop___at_Lean_Meta_mkSimpCongrTheorem___spec__6___closed__4; LEAN_EXPORT lean_object* l_Array_forInUnsafe_loop___at_Lean_Meta_mkSimpCongrTheorem___spec__5___lambda__1(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); static lean_object* l_Lean_Meta_initFn____x40_Lean_Meta_Tactic_Simp_SimpCongrTheorems___hyg_1872____lambda__1___closed__5; -lean_object* l_Lean_Expr_FindImpl_findUnsafe_x3f(lean_object*, lean_object*); LEAN_EXPORT uint8_t l_Lean_AssocList_contains___at_Lean_Meta_addSimpCongrTheoremEntry___spec__7(lean_object*, lean_object*); LEAN_EXPORT lean_object* l_Lean_Meta_initFn____x40_Lean_Meta_Tactic_Simp_SimpCongrTheorems___hyg_1872____lambda__2___boxed(lean_object*, lean_object*, lean_object*, lean_object*); LEAN_EXPORT lean_object* l_Lean_HashMapImp_moveEntries___at_Lean_Meta_addSimpCongrTheoremEntry___spec__9(lean_object*, lean_object*, lean_object*); @@ -346,6 +345,7 @@ lean_object* l_List_map___at_Lean_mkConstWithLevelParams___spec__1(lean_object*) lean_object* lean_array_get_size(lean_object*); lean_object* lean_infer_type(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); LEAN_EXPORT lean_object* l_Array_forInUnsafe_loop___at_Lean_Meta_mkSimpCongrTheorem___spec__7___lambda__5___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); +lean_object* lean_find_expr(lean_object*, lean_object*); static lean_object* l_Array_forInUnsafe_loop___at_Lean_Meta_mkSimpCongrTheorem___spec__7___lambda__5___closed__6; uint8_t lean_nat_dec_le(lean_object*, lean_object*); static lean_object* l___private_Lean_Meta_Tactic_Simp_SimpCongrTheorems_0__Lean_Meta_reprSimpCongrTheorem____x40_Lean_Meta_Tactic_Simp_SimpCongrTheorems___hyg_53____closed__26; @@ -3687,7 +3687,8 @@ _start: lean_object* x_3; lean_object* x_4; x_3 = lean_alloc_closure((void*)(l_Lean_Meta_mkSimpCongrTheorem_onlyMVarsAt___lambda__1___boxed), 2, 1); lean_closure_set(x_3, 0, x_2); -x_4 = l_Lean_Expr_FindImpl_findUnsafe_x3f(x_3, x_1); +x_4 = lean_find_expr(x_3, x_1); +lean_dec(x_3); if (lean_obj_tag(x_4) == 0) { uint8_t x_5; @@ -3719,6 +3720,7 @@ _start: { uint8_t x_3; lean_object* x_4; x_3 = l_Lean_Meta_mkSimpCongrTheorem_onlyMVarsAt(x_1, x_2); +lean_dec(x_1); x_4 = lean_box(x_3); return x_4; } @@ -4042,7 +4044,6 @@ lean_inc(x_17); lean_dec(x_15); x_18 = l_Array_forInUnsafe_loop___at_Lean_Meta_mkSimpCongrTheorem___spec__5___closed__1; lean_inc(x_1); -lean_inc(x_16); x_19 = l_Lean_Meta_mkSimpCongrTheorem_onlyMVarsAt(x_16, x_1); if (x_19 == 0) { @@ -4797,7 +4798,6 @@ x_19 = lean_ctor_get(x_18, 1); lean_inc(x_19); lean_dec(x_18); lean_inc(x_1); -lean_inc(x_13); x_20 = l_Lean_Meta_mkSimpCongrTheorem_onlyMVarsAt(x_13, x_1); if (x_20 == 0) { @@ -4921,7 +4921,6 @@ x_50 = lean_ctor_get(x_49, 1); lean_inc(x_50); lean_dec(x_49); lean_inc(x_1); -lean_inc(x_44); x_51 = l_Lean_Meta_mkSimpCongrTheorem_onlyMVarsAt(x_44, x_1); if (x_51 == 0) { diff --git a/stage0/stdlib/Lean/Meta/Tactic/Split.c b/stage0/stdlib/Lean/Meta/Tactic/Split.c index 9060c93318..f379f798be 100644 --- a/stage0/stdlib/Lean/Meta/Tactic/Split.c +++ b/stage0/stdlib/Lean/Meta/Tactic/Split.c @@ -333,7 +333,6 @@ LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Split_0__Lean_Meta_Split_s static lean_object* l_Lean_Meta_Split_initFn____x40_Lean_Meta_Tactic_Split___hyg_906____closed__1; lean_object* l_Lean_Meta_introNCore(lean_object*, lean_object*, lean_object*, uint8_t, uint8_t, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); LEAN_EXPORT lean_object* l_Array_forInUnsafe_loop___at___private_Lean_Meta_Tactic_Split_0__Lean_Meta_Split_substDiscrEqs___spec__1___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); -lean_object* l_Lean_Expr_FindImpl_findUnsafe_x3f(lean_object*, lean_object*); static lean_object* l_List_foldlM___at_Lean_Meta_Split_applyMatchSplitter___spec__2___closed__2; lean_object* l_Lean_instAddErrorMessageContextOfAddMessageContextOfMonad___rarg(lean_object*, lean_object*, lean_object*, lean_object*); lean_object* l_Lean_Meta_heqToEq(lean_object*, lean_object*, uint8_t, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); @@ -458,6 +457,7 @@ static lean_object* l___private_Lean_Meta_Tactic_Split_0__Lean_Meta_Split_genera static lean_object* l_Lean_Meta_Split_applyMatchSplitter___lambda__3___closed__7; static lean_object* l_Lean_Meta_Split_applyMatchSplitter___lambda__4___closed__1; lean_object* lean_infer_type(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); +lean_object* lean_find_expr(lean_object*, lean_object*); uint8_t lean_nat_dec_le(lean_object*, lean_object*); extern lean_object* l_Lean_Meta_instAddMessageContextMetaM; LEAN_EXPORT lean_object* l_Lean_Meta_splitTarget_x3f_go(lean_object*, uint8_t, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); @@ -13654,12 +13654,11 @@ x_6 = lean_alloc_closure((void*)(l_Lean_Meta_Split_findSplit_x3f_isCandidate___b lean_closure_set(x_6, 0, x_1); lean_closure_set(x_6, 1, x_5); lean_closure_set(x_6, 2, x_3); -lean_inc(x_4); -x_7 = l_Lean_Expr_FindImpl_findUnsafe_x3f(x_6, x_4); +x_7 = lean_find_expr(x_6, x_4); +lean_dec(x_6); if (lean_obj_tag(x_7) == 0) { lean_object* x_8; -lean_dec(x_4); lean_dec(x_3); lean_dec(x_1); x_8 = lean_box(0); @@ -13678,7 +13677,6 @@ if (x_11 == 0) { uint8_t x_12; x_12 = l_Lean_Expr_isDIte(x_4); -lean_dec(x_4); if (x_12 == 0) { lean_dec(x_3); @@ -13691,6 +13689,7 @@ lean_object* x_13; lean_object* x_14; lean_object* x_15; x_13 = l_Lean_Meta_Split_findSplit_x3f_isCandidate___closed__5; x_14 = l_Lean_Expr_getRevArg_x21(x_10, x_13); x_15 = l_Lean_Meta_Split_findSplit_x3f_go(x_1, x_2, x_3, x_14); +lean_dec(x_14); if (lean_obj_tag(x_15) == 0) { return x_7; @@ -13721,10 +13720,10 @@ return x_18; else { lean_object* x_19; lean_object* x_20; lean_object* x_21; -lean_dec(x_4); x_19 = l_Lean_Meta_Split_findSplit_x3f_isCandidate___closed__5; x_20 = l_Lean_Expr_getRevArg_x21(x_10, x_19); x_21 = l_Lean_Meta_Split_findSplit_x3f_go(x_1, x_2, x_3, x_20); +lean_dec(x_20); if (lean_obj_tag(x_21) == 0) { return x_7; @@ -13763,7 +13762,6 @@ if (x_26 == 0) { uint8_t x_27; x_27 = l_Lean_Expr_isDIte(x_4); -lean_dec(x_4); if (x_27 == 0) { lean_object* x_28; @@ -13779,6 +13777,7 @@ lean_object* x_29; lean_object* x_30; lean_object* x_31; x_29 = l_Lean_Meta_Split_findSplit_x3f_isCandidate___closed__5; x_30 = l_Lean_Expr_getRevArg_x21(x_25, x_29); x_31 = l_Lean_Meta_Split_findSplit_x3f_go(x_1, x_2, x_3, x_30); +lean_dec(x_30); if (lean_obj_tag(x_31) == 0) { lean_object* x_32; @@ -13812,10 +13811,10 @@ return x_35; else { lean_object* x_36; lean_object* x_37; lean_object* x_38; -lean_dec(x_4); x_36 = l_Lean_Meta_Split_findSplit_x3f_isCandidate___closed__5; x_37 = l_Lean_Expr_getRevArg_x21(x_25, x_36); x_38 = l_Lean_Meta_Split_findSplit_x3f_go(x_1, x_2, x_3, x_37); +lean_dec(x_37); if (lean_obj_tag(x_38) == 0) { lean_object* x_39; @@ -13856,6 +13855,7 @@ uint8_t x_5; lean_object* x_6; x_5 = lean_unbox(x_2); lean_dec(x_2); x_6 = l_Lean_Meta_Split_findSplit_x3f_go(x_1, x_5, x_3, x_4); +lean_dec(x_4); return x_6; } } @@ -13874,6 +13874,7 @@ uint8_t x_5; lean_object* x_6; x_5 = lean_unbox(x_3); lean_dec(x_3); x_6 = l_Lean_Meta_Split_findSplit_x3f(x_1, x_2, x_5, x_4); +lean_dec(x_2); return x_6; } } @@ -13969,14 +13970,12 @@ x_13 = lean_ctor_get(x_10, 1); x_14 = lean_ctor_get(x_12, 0); lean_inc(x_14); lean_dec(x_12); -lean_inc(x_3); lean_inc(x_4); x_15 = l_Lean_Meta_Split_findSplit_x3f_go(x_14, x_2, x_4, x_3); if (lean_obj_tag(x_15) == 0) { lean_object* x_16; lean_object* x_17; uint8_t x_18; lean_dec(x_4); -lean_dec(x_3); x_16 = l_Array_forInUnsafe_loop___at___private_Lean_Meta_Tactic_Split_0__Lean_Meta_Split_generalizeMatchDiscrs_mkNewTarget___spec__4___closed__3; x_17 = l_Lean_isTracingEnabledFor___at_Lean_Meta_processPostponed_loop___spec__1(x_16, x_5, x_6, x_7, x_8, x_13); x_18 = !lean_is_exclusive(x_17); @@ -14098,7 +14097,6 @@ lean_dec(x_7); lean_dec(x_6); lean_dec(x_5); lean_dec(x_4); -lean_dec(x_3); lean_dec(x_1); x_51 = !lean_is_exclusive(x_50); if (x_51 == 0) @@ -14289,7 +14287,6 @@ lean_dec(x_7); lean_dec(x_6); lean_dec(x_5); lean_dec(x_4); -lean_dec(x_3); lean_dec(x_1); return x_50; } @@ -14303,7 +14300,6 @@ lean_dec(x_7); lean_dec(x_6); lean_dec(x_5); lean_dec(x_4); -lean_dec(x_3); lean_dec(x_1); return x_50; } @@ -14444,7 +14440,6 @@ lean_dec(x_7); lean_dec(x_6); lean_dec(x_5); lean_dec(x_4); -lean_dec(x_3); lean_dec(x_1); x_148 = lean_alloc_ctor(1, 2, 0); lean_ctor_set(x_148, 0, x_109); @@ -14462,7 +14457,6 @@ lean_dec(x_7); lean_dec(x_6); lean_dec(x_5); lean_dec(x_4); -lean_dec(x_3); lean_dec(x_1); x_149 = lean_alloc_ctor(1, 2, 0); lean_ctor_set(x_149, 0, x_109); @@ -14479,7 +14473,6 @@ lean_free_object(x_15); lean_dec(x_47); lean_free_object(x_10); lean_dec(x_4); -lean_dec(x_3); x_150 = lean_box(0); x_151 = l_Lean_Meta_splitIfTarget_x3f(x_1, x_150, x_5, x_6, x_7, x_8, x_13); if (lean_obj_tag(x_151) == 0) @@ -14750,7 +14743,6 @@ lean_free_object(x_15); lean_dec(x_47); lean_free_object(x_10); lean_dec(x_4); -lean_dec(x_3); x_204 = lean_box(0); x_205 = l_Lean_Meta_splitIfTarget_x3f(x_1, x_204, x_5, x_6, x_7, x_8, x_13); if (lean_obj_tag(x_205) == 0) @@ -15045,7 +15037,6 @@ lean_dec(x_7); lean_dec(x_6); lean_dec(x_5); lean_dec(x_4); -lean_dec(x_3); lean_dec(x_1); x_262 = lean_ctor_get(x_261, 0); lean_inc(x_262); @@ -15214,7 +15205,6 @@ lean_dec(x_7); lean_dec(x_6); lean_dec(x_5); lean_dec(x_4); -lean_dec(x_3); lean_dec(x_1); if (lean_is_scalar(x_269)) { x_307 = lean_alloc_ctor(1, 2, 0); @@ -15236,7 +15226,6 @@ lean_dec(x_7); lean_dec(x_6); lean_dec(x_5); lean_dec(x_4); -lean_dec(x_3); lean_dec(x_1); if (lean_is_scalar(x_269)) { x_308 = lean_alloc_ctor(1, 2, 0); @@ -15255,7 +15244,6 @@ lean_object* x_309; lean_object* x_310; lean_dec(x_258); lean_free_object(x_10); lean_dec(x_4); -lean_dec(x_3); x_309 = lean_box(0); x_310 = l_Lean_Meta_splitIfTarget_x3f(x_1, x_309, x_5, x_6, x_7, x_8, x_13); if (lean_obj_tag(x_310) == 0) @@ -15397,7 +15385,6 @@ lean_object* x_334; lean_object* x_335; lean_dec(x_258); lean_free_object(x_10); lean_dec(x_4); -lean_dec(x_3); x_334 = lean_box(0); x_335 = l_Lean_Meta_splitIfTarget_x3f(x_1, x_334, x_5, x_6, x_7, x_8, x_13); if (lean_obj_tag(x_335) == 0) @@ -15546,14 +15533,12 @@ lean_dec(x_10); x_361 = lean_ctor_get(x_359, 0); lean_inc(x_361); lean_dec(x_359); -lean_inc(x_3); lean_inc(x_4); x_362 = l_Lean_Meta_Split_findSplit_x3f_go(x_361, x_2, x_4, x_3); if (lean_obj_tag(x_362) == 0) { lean_object* x_363; lean_object* x_364; lean_object* x_365; lean_object* x_366; lean_object* x_367; lean_object* x_368; uint8_t x_369; lean_dec(x_4); -lean_dec(x_3); x_363 = l_Array_forInUnsafe_loop___at___private_Lean_Meta_Tactic_Split_0__Lean_Meta_Split_generalizeMatchDiscrs_mkNewTarget___spec__4___closed__3; x_364 = l_Lean_isTracingEnabledFor___at_Lean_Meta_processPostponed_loop___spec__1(x_363, x_5, x_6, x_7, x_8, x_360); x_365 = lean_ctor_get(x_364, 0); @@ -15644,7 +15629,6 @@ lean_dec(x_7); lean_dec(x_6); lean_dec(x_5); lean_dec(x_4); -lean_dec(x_3); lean_dec(x_1); x_386 = lean_ctor_get(x_385, 0); lean_inc(x_386); @@ -15815,7 +15799,6 @@ lean_dec(x_7); lean_dec(x_6); lean_dec(x_5); lean_dec(x_4); -lean_dec(x_3); lean_dec(x_1); if (lean_is_scalar(x_393)) { x_432 = lean_alloc_ctor(1, 2, 0); @@ -15836,7 +15819,6 @@ lean_dec(x_7); lean_dec(x_6); lean_dec(x_5); lean_dec(x_4); -lean_dec(x_3); lean_dec(x_1); if (lean_is_scalar(x_393)) { x_433 = lean_alloc_ctor(1, 2, 0); @@ -15855,7 +15837,6 @@ lean_object* x_434; lean_object* x_435; lean_dec(x_382); lean_dec(x_381); lean_dec(x_4); -lean_dec(x_3); x_434 = lean_box(0); x_435 = l_Lean_Meta_splitIfTarget_x3f(x_1, x_434, x_5, x_6, x_7, x_8, x_360); if (lean_obj_tag(x_435) == 0) @@ -15997,7 +15978,6 @@ lean_object* x_459; lean_object* x_460; lean_dec(x_382); lean_dec(x_381); lean_dec(x_4); -lean_dec(x_3); x_459 = lean_box(0); x_460 = l_Lean_Meta_splitIfTarget_x3f(x_1, x_459, x_5, x_6, x_7, x_8, x_360); if (lean_obj_tag(x_460) == 0) @@ -16144,6 +16124,7 @@ x_12 = lean_unbox(x_4); lean_dec(x_4); x_13 = l_Lean_Meta_splitTarget_x3f_go___lambda__1(x_1, x_2, x_3, x_12, x_5, x_6, x_7, x_8, x_9, x_10, x_11); lean_dec(x_6); +lean_dec(x_5); return x_13; } } @@ -16154,6 +16135,7 @@ uint8_t x_10; lean_object* x_11; x_10 = lean_unbox(x_2); lean_dec(x_2); x_11 = l_Lean_Meta_splitTarget_x3f_go(x_1, x_10, x_3, x_4, x_5, x_6, x_7, x_8, x_9); +lean_dec(x_3); return x_11; } } @@ -16402,6 +16384,7 @@ lean_inc(x_13); lean_dec(x_11); x_14 = l_Lean_Meta_splitTarget_x3f___lambda__1___closed__1; x_15 = l_Lean_Meta_splitTarget_x3f_go(x_1, x_2, x_12, x_14, x_3, x_4, x_5, x_6, x_13); +lean_dec(x_12); return x_15; } else @@ -17407,6 +17390,7 @@ x_20 = lean_ctor_get(x_17, 1); x_21 = 1; x_22 = l_Lean_Meta_splitTarget_x3f___lambda__1___closed__1; x_23 = l_Lean_Meta_Split_findSplit_x3f_go(x_12, x_21, x_22, x_19); +lean_dec(x_19); if (lean_obj_tag(x_23) == 0) { lean_object* x_24; @@ -17941,6 +17925,7 @@ lean_dec(x_17); x_128 = 1; x_129 = l_Lean_Meta_splitTarget_x3f___lambda__1___closed__1; x_130 = l_Lean_Meta_Split_findSplit_x3f_go(x_12, x_128, x_129, x_126); +lean_dec(x_126); if (lean_obj_tag(x_130) == 0) { lean_object* x_131; lean_object* x_132; @@ -18384,6 +18369,7 @@ if (lean_is_exclusive(x_204)) { x_208 = 1; x_209 = l_Lean_Meta_splitTarget_x3f___lambda__1___closed__1; x_210 = l_Lean_Meta_Split_findSplit_x3f_go(x_199, x_208, x_209, x_205); +lean_dec(x_205); if (lean_obj_tag(x_210) == 0) { lean_object* x_211; lean_object* x_212; diff --git a/stage0/stdlib/Lean/Meta/Tactic/SplitIf.c b/stage0/stdlib/Lean/Meta/Tactic/SplitIf.c index 0cd73175ad..c84f073c25 100644 --- a/stage0/stdlib/Lean/Meta/Tactic/SplitIf.c +++ b/stage0/stdlib/Lean/Meta/Tactic/SplitIf.c @@ -126,6 +126,7 @@ static lean_object* l___private_Lean_Meta_Tactic_SplitIf_0__Lean_Meta_SplitIf_di static lean_object* l_Lean_Meta_simpIfLocalDecl___closed__2; LEAN_EXPORT lean_object* l_Lean_Meta_SplitIf_mkDischarge_x3f(uint8_t, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); lean_object* l_Lean_Meta_mkDecide(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); +LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_SplitIf_0__Lean_Meta_SplitIf_findIfToSplit_x3f___boxed(lean_object*); static uint32_t l_Lean_Meta_SplitIf_initFn____x40_Lean_Meta_Tactic_SplitIf___hyg_5____lambda__1___closed__8; uint8_t lean_name_eq(lean_object*, lean_object*); lean_object* l_Lean_Name_str___override(lean_object*, lean_object*); @@ -144,7 +145,6 @@ lean_object* l_Lean_MessageData_ofExpr(lean_object*); static lean_object* l_Lean_Meta_simpIfTarget___closed__7; static lean_object* l_Lean_LazyInitExtension_get___at_Lean_Meta_SplitIf_getSimpContext___spec__1___closed__1; LEAN_EXPORT lean_object* l_Array_findSomeRevM_x3f_find___at___private_Lean_Meta_Tactic_SplitIf_0__Lean_Meta_SplitIf_discharge_x3f___spec__5(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); -lean_object* l_Lean_Expr_FindImpl_findUnsafe_x3f(lean_object*, lean_object*); static lean_object* l_Lean_Meta_SplitIf_initFn____x40_Lean_Meta_Tactic_SplitIf___hyg_5____closed__1; static lean_object* l_Lean_Meta_initFn____x40_Lean_Meta_Tactic_SplitIf___hyg_1615____closed__3; LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_SplitIf_0__Lean_Meta_SplitIf_findIfToSplit_x3f(lean_object*); @@ -198,6 +198,7 @@ lean_object* l_Lean_LocalDecl_toExpr(lean_object*); LEAN_EXPORT lean_object* l_Lean_PersistentArray_findSomeRevM_x3f___at___private_Lean_Meta_Tactic_SplitIf_0__Lean_Meta_SplitIf_discharge_x3f___spec__2___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); static lean_object* l_Lean_Meta_initFn____x40_Lean_Meta_Tactic_SplitIf___hyg_1615____closed__4; lean_object* lean_infer_type(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); +lean_object* lean_find_expr(lean_object*, lean_object*); static lean_object* l_Lean_Meta_initFn____x40_Lean_Meta_Tactic_SplitIf___hyg_1615____closed__7; uint8_t lean_nat_dec_le(lean_object*, lean_object*); LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_SplitIf_0__Lean_Meta_SplitIf_findIfToSplit_x3f___lambda__1___boxed(lean_object*); @@ -3673,7 +3674,7 @@ _start: { lean_object* x_2; lean_object* x_3; x_2 = l___private_Lean_Meta_Tactic_SplitIf_0__Lean_Meta_SplitIf_findIfToSplit_x3f___closed__1; -x_3 = l_Lean_Expr_FindImpl_findUnsafe_x3f(x_2, x_1); +x_3 = lean_find_expr(x_2, x_1); if (lean_obj_tag(x_3) == 0) { lean_object* x_4; @@ -3693,7 +3694,6 @@ x_8 = l_Lean_Expr_getRevArg_x21(x_6, x_7); x_9 = l___private_Lean_Meta_Tactic_SplitIf_0__Lean_Meta_SplitIf_findIfToSplit_x3f___closed__3; x_10 = l_Lean_Expr_getRevArg_x21(x_6, x_9); lean_dec(x_6); -lean_inc(x_8); x_11 = l___private_Lean_Meta_Tactic_SplitIf_0__Lean_Meta_SplitIf_findIfToSplit_x3f(x_8); if (lean_obj_tag(x_11) == 0) { @@ -3738,7 +3738,6 @@ x_18 = l_Lean_Expr_getRevArg_x21(x_16, x_17); x_19 = l___private_Lean_Meta_Tactic_SplitIf_0__Lean_Meta_SplitIf_findIfToSplit_x3f___closed__3; x_20 = l_Lean_Expr_getRevArg_x21(x_16, x_19); lean_dec(x_16); -lean_inc(x_18); x_21 = l___private_Lean_Meta_Tactic_SplitIf_0__Lean_Meta_SplitIf_findIfToSplit_x3f(x_18); if (lean_obj_tag(x_21) == 0) { @@ -3786,6 +3785,15 @@ x_3 = lean_box(x_2); return x_3; } } +LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_SplitIf_0__Lean_Meta_SplitIf_findIfToSplit_x3f___boxed(lean_object* x_1) { +_start: +{ +lean_object* x_2; +x_2 = l___private_Lean_Meta_Tactic_SplitIf_0__Lean_Meta_SplitIf_findIfToSplit_x3f(x_1); +lean_dec(x_1); +return x_2; +} +} LEAN_EXPORT lean_object* l_Lean_Meta_SplitIf_splitIfAt_x3f___lambda__1(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4, lean_object* x_5, lean_object* x_6, lean_object* x_7, lean_object* x_8, lean_object* x_9, lean_object* x_10) { _start: { @@ -3970,6 +3978,7 @@ lean_object* x_11; lean_object* x_12; lean_object* x_13; x_11 = lean_ctor_get(x_9, 0); x_12 = lean_ctor_get(x_9, 1); x_13 = l___private_Lean_Meta_Tactic_SplitIf_0__Lean_Meta_SplitIf_findIfToSplit_x3f(x_11); +lean_dec(x_11); if (lean_obj_tag(x_13) == 0) { lean_object* x_14; @@ -4033,6 +4042,7 @@ lean_inc(x_28); lean_inc(x_27); lean_dec(x_9); x_29 = l___private_Lean_Meta_Tactic_SplitIf_0__Lean_Meta_SplitIf_findIfToSplit_x3f(x_27); +lean_dec(x_27); if (lean_obj_tag(x_29) == 0) { lean_object* x_30; lean_object* x_31; diff --git a/stage0/stdlib/Lean/PrettyPrinter.c b/stage0/stdlib/Lean/PrettyPrinter.c index 615285289f..92b7657c74 100644 --- a/stage0/stdlib/Lean/PrettyPrinter.c +++ b/stage0/stdlib/Lean/PrettyPrinter.c @@ -4460,6 +4460,7 @@ x_8 = lean_ctor_get(x_7, 0); lean_inc(x_8); lean_dec(x_7); x_9 = l_Lean_Expr_hasSyntheticSorry(x_8); +lean_dec(x_8); if (x_9 == 0) { size_t x_10; size_t x_11; diff --git a/stage0/stdlib/Lean/PrettyPrinter/Delaborator/Basic.c b/stage0/stdlib/Lean/PrettyPrinter/Delaborator/Basic.c index bb046445d9..34bb406cc0 100644 --- a/stage0/stdlib/Lean/PrettyPrinter/Delaborator/Basic.c +++ b/stage0/stdlib/Lean/PrettyPrinter/Delaborator/Basic.c @@ -40,6 +40,7 @@ LEAN_EXPORT lean_object* l_Lean_PrettyPrinter_Delaborator_OmissionReason_toCtorI LEAN_EXPORT lean_object* l_Lean_PrettyPrinter_delabCore___rarg___lambda__3___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); static lean_object* l_Lean_PrettyPrinter_Delaborator_mkDelabAttribute___closed__9; LEAN_EXPORT lean_object* l_Lean_PrettyPrinter_Delaborator_getUnusedName_bodyUsesSuggestion___boxed(lean_object*, lean_object*, lean_object*); +LEAN_EXPORT lean_object* l_Lean_PrettyPrinter_Delaborator_getUnusedName___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); LEAN_EXPORT lean_object* l_Lean_PrettyPrinter_Delaborator_SubExpr_getExpr___at_Lean_PrettyPrinter_Delaborator_getExprKind___spec__1(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); LEAN_EXPORT lean_object* l_Lean_PrettyPrinter_Delaborator_SubExpr_getPos___at_Lean_PrettyPrinter_Delaborator_getOptionsAtCurrPos___spec__1(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); static lean_object* l_Lean_PrettyPrinter_Delaborator_omission___closed__5; @@ -291,7 +292,6 @@ static lean_object* l_Lean_PrettyPrinter_Delaborator_getExprKind___closed__7; LEAN_EXPORT lean_object* l_Lean_PrettyPrinter_delabCore(lean_object*); LEAN_EXPORT lean_object* l_Lean_PrettyPrinter_Delaborator_mkAnnotatedIdent(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); lean_object* l_Lean_Core_transform___at_Lean_Core_betaReduce___spec__1(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); -lean_object* l_Lean_Expr_FindImpl_findUnsafe_x3f(lean_object*, lean_object*); LEAN_EXPORT lean_object* l_Lean_PrettyPrinter_Delaborator_instAlternativeDelabM___lambda__1(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); LEAN_EXPORT lean_object* l_Lean_PrettyPrinter_Delaborator_delabFailureId; LEAN_EXPORT lean_object* l_Lean_Meta_withLocalDecl___at_Lean_PrettyPrinter_Delaborator_withBindingBodyUnusedName___spec__3___rarg___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); @@ -409,6 +409,7 @@ LEAN_EXPORT lean_object* l_Lean_PrettyPrinter_Delaborator_withBindingBodyUnusedN uint8_t l_Lean_Expr_isMData(lean_object*); LEAN_EXPORT lean_object* l_Lean_PrettyPrinter_Delaborator_SubExpr_nextExtraPos___at_Lean_PrettyPrinter_Delaborator_mkAnnotatedIdent___spec__1___boxed(lean_object*); lean_object* lean_infer_type(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); +lean_object* lean_find_expr(lean_object*, lean_object*); uint8_t lean_nat_dec_le(lean_object*, lean_object*); static lean_object* l_Lean_PrettyPrinter_Delaborator_omission___closed__3; static lean_object* l_Lean_PrettyPrinter_Delaborator_getExprKind___closed__6; @@ -6351,7 +6352,8 @@ lean_object* x_4; lean_object* x_5; x_4 = lean_alloc_closure((void*)(l_Lean_PrettyPrinter_Delaborator_getUnusedName_bodyUsesSuggestion___lambda__1___boxed), 3, 2); lean_closure_set(x_4, 0, x_2); lean_closure_set(x_4, 1, x_3); -x_5 = l_Lean_Expr_FindImpl_findUnsafe_x3f(x_4, x_1); +x_5 = lean_find_expr(x_4, x_1); +lean_dec(x_4); if (lean_obj_tag(x_5) == 0) { uint8_t x_6; @@ -6382,6 +6384,7 @@ _start: { uint8_t x_4; lean_object* x_5; x_4 = l_Lean_PrettyPrinter_Delaborator_getUnusedName_bodyUsesSuggestion(x_1, x_2, x_3); +lean_dec(x_1); x_5 = lean_box(x_4); return x_5; } @@ -6443,7 +6446,6 @@ lean_dec(x_6); lean_dec(x_5); lean_dec(x_4); lean_dec(x_3); -lean_dec(x_2); x_14 = lean_alloc_ctor(0, 2, 0); lean_ctor_set(x_14, 0, x_12); lean_ctor_set(x_14, 1, x_9); @@ -6464,7 +6466,6 @@ lean_dec(x_17); if (x_18 == 0) { uint8_t x_19; -lean_dec(x_2); x_19 = !lean_is_exclusive(x_16); if (x_19 == 0) { @@ -6553,7 +6554,6 @@ else uint8_t x_34; lean_dec(x_12); lean_dec(x_11); -lean_dec(x_2); x_34 = !lean_is_exclusive(x_16); if (x_34 == 0) { @@ -6593,7 +6593,6 @@ lean_dec(x_6); lean_dec(x_5); lean_dec(x_4); lean_dec(x_3); -lean_dec(x_2); x_41 = lean_alloc_ctor(0, 2, 0); lean_ctor_set(x_41, 0, x_39); lean_ctor_set(x_41, 1, x_9); @@ -6614,7 +6613,6 @@ lean_dec(x_44); if (x_45 == 0) { uint8_t x_46; -lean_dec(x_2); x_46 = !lean_is_exclusive(x_43); if (x_46 == 0) { @@ -6700,7 +6698,6 @@ else { uint8_t x_61; lean_dec(x_38); -lean_dec(x_2); x_61 = !lean_is_exclusive(x_43); if (x_61 == 0) { @@ -6724,6 +6721,15 @@ return x_64; } } } +LEAN_EXPORT lean_object* l_Lean_PrettyPrinter_Delaborator_getUnusedName___boxed(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4, lean_object* x_5, lean_object* x_6, lean_object* x_7, lean_object* x_8, lean_object* x_9) { +_start: +{ +lean_object* x_10; +x_10 = l_Lean_PrettyPrinter_Delaborator_getUnusedName(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9); +lean_dec(x_2); +return x_10; +} +} LEAN_EXPORT lean_object* l_Lean_PrettyPrinter_Delaborator_SubExpr_nextExtraPos___at_Lean_PrettyPrinter_Delaborator_mkAnnotatedIdent___spec__1___rarg(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4, lean_object* x_5, lean_object* x_6) { _start: { @@ -7149,6 +7155,7 @@ lean_inc(x_4); lean_inc(x_3); lean_inc(x_2); x_17 = l_Lean_PrettyPrinter_Delaborator_getUnusedName(x_15, x_16, x_2, x_3, x_4, x_5, x_6, x_7, x_14); +lean_dec(x_16); if (lean_obj_tag(x_17) == 0) { lean_object* x_18; lean_object* x_19; lean_object* x_20; lean_object* x_21; diff --git a/stage0/stdlib/Lean/PrettyPrinter/Delaborator/Builtins.c b/stage0/stdlib/Lean/PrettyPrinter/Delaborator/Builtins.c index 502f3b2f99..84c433e5b8 100644 --- a/stage0/stdlib/Lean/PrettyPrinter/Delaborator/Builtins.c +++ b/stage0/stdlib/Lean/PrettyPrinter/Delaborator/Builtins.c @@ -23079,7 +23079,6 @@ lean_inc(x_8); lean_inc(x_7); lean_inc(x_6); lean_inc(x_5); -lean_inc(x_2); x_21 = l_Lean_PrettyPrinter_Delaborator_getUnusedName(x_20, x_2, x_5, x_6, x_7, x_8, x_9, x_10, x_11); if (lean_obj_tag(x_21) == 0) { @@ -28735,6 +28734,7 @@ lean_inc(x_4); lean_inc(x_3); lean_inc(x_2); x_17 = l_Lean_PrettyPrinter_Delaborator_getUnusedName(x_15, x_16, x_2, x_3, x_4, x_5, x_6, x_7, x_13); +lean_dec(x_16); if (lean_obj_tag(x_17) == 0) { lean_object* x_18; lean_object* x_19; lean_object* x_20; lean_object* x_21; @@ -34916,7 +34916,6 @@ lean_inc(x_4); lean_inc(x_3); lean_inc(x_2); lean_inc(x_1); -lean_inc(x_15); x_16 = l_Lean_PrettyPrinter_Delaborator_getUnusedName(x_12, x_15, x_1, x_2, x_3, x_4, x_5, x_6, x_10); if (lean_obj_tag(x_16) == 0) { @@ -43777,7 +43776,6 @@ lean_inc(x_4); lean_inc(x_3); lean_inc(x_2); lean_inc(x_1); -lean_inc(x_66); x_67 = l_Lean_PrettyPrinter_Delaborator_getUnusedName(x_63, x_66, x_1, x_2, x_3, x_4, x_5, x_6, x_62); if (lean_obj_tag(x_67) == 0) { @@ -44265,7 +44263,6 @@ lean_inc(x_4); lean_inc(x_3); lean_inc(x_2); lean_inc(x_1); -lean_inc(x_174); x_175 = l_Lean_PrettyPrinter_Delaborator_getUnusedName(x_171, x_174, x_1, x_2, x_3, x_4, x_5, x_6, x_170); if (lean_obj_tag(x_175) == 0) { diff --git a/stage0/stdlib/Lean/Server/InfoUtils.c b/stage0/stdlib/Lean/Server/InfoUtils.c index 5ebd442e6e..33c3ef168d 100644 --- a/stage0/stdlib/Lean/Server/InfoUtils.c +++ b/stage0/stdlib/Lean/Server/InfoUtils.c @@ -18291,6 +18291,7 @@ if (x_18 == 0) lean_object* x_19; uint8_t x_20; lean_object* x_21; x_19 = lean_ctor_get(x_17, 0); x_20 = l_Lean_Expr_hasSorry(x_19); +lean_dec(x_19); x_21 = lean_box(x_20); lean_ctor_set(x_17, 0, x_21); return x_17; @@ -18304,6 +18305,7 @@ lean_inc(x_23); lean_inc(x_22); lean_dec(x_17); x_24 = l_Lean_Expr_hasSorry(x_22); +lean_dec(x_22); x_25 = lean_box(x_24); x_26 = lean_alloc_ctor(0, 2, 0); lean_ctor_set(x_26, 0, x_25); @@ -18460,6 +18462,7 @@ if (x_55 == 0) lean_object* x_56; uint8_t x_57; lean_object* x_58; x_56 = lean_ctor_get(x_54, 0); x_57 = l_Lean_Expr_hasSorry(x_56); +lean_dec(x_56); x_58 = lean_box(x_57); lean_ctor_set(x_54, 0, x_58); return x_54; @@ -18473,6 +18476,7 @@ lean_inc(x_60); lean_inc(x_59); lean_dec(x_54); x_61 = l_Lean_Expr_hasSorry(x_59); +lean_dec(x_59); x_62 = lean_box(x_61); x_63 = lean_alloc_ctor(0, 2, 0); lean_ctor_set(x_63, 0, x_62); diff --git a/stage0/stdlib/Lean/Util/FindExpr.c b/stage0/stdlib/Lean/Util/FindExpr.c index 26abeb2a2b..19cb7e9d71 100644 --- a/stage0/stdlib/Lean/Util/FindExpr.c +++ b/stage0/stdlib/Lean/Util/FindExpr.c @@ -15,1420 +15,25 @@ extern "C" { #endif LEAN_EXPORT lean_object* l_Lean_Expr_FindStep_toCtorIdx(uint8_t); LEAN_EXPORT lean_object* l_Lean_Expr_FindStep_noConfusion___rarg(uint8_t, uint8_t, lean_object*); -LEAN_EXPORT lean_object* l_Lean_Expr_FindImpl_findM_x3f(lean_object*, lean_object*, lean_object*); -uint64_t lean_uint64_mix_hash(uint64_t, uint64_t); -size_t lean_hashset_mk_idx(lean_object*, uint64_t); LEAN_EXPORT lean_object* l_Lean_Expr_occurs___boxed(lean_object*, lean_object*); -lean_object* l_Lean_mkHashSetImp___rarg(lean_object*); LEAN_EXPORT lean_object* l_Lean_Expr_FindStep_toCtorIdx___boxed(lean_object*); -lean_object* lean_mk_array(lean_object*, lean_object*); -uint8_t lean_usize_dec_eq(size_t, size_t); -LEAN_EXPORT uint8_t l_Lean_HashSetImp_contains___at_Lean_Expr_FindImpl_checkVisited___spec__8(lean_object*, lean_object*); -lean_object* lean_array_fget(lean_object*, lean_object*); -lean_object* lean_array_fset(lean_object*, lean_object*, lean_object*); -LEAN_EXPORT lean_object* l_Lean_Expr_FindImpl_findM_x3f_visit(lean_object*, lean_object*, lean_object*); +LEAN_EXPORT lean_object* l_Lean_Expr_findExt_x3f(lean_object*, lean_object*); +LEAN_EXPORT lean_object* l_Lean_Expr_findExt_x3f___boxed(lean_object*, lean_object*); static lean_object* l_Lean_Expr_FindStep_noConfusion___rarg___closed__1; -static lean_object* l_Lean_Expr_FindImpl_findUnsafe_x3f___closed__1; -size_t lean_ptr_addr(lean_object*); LEAN_EXPORT lean_object* l_Lean_Expr_findExtImpl_x3f___boxed(lean_object*, lean_object*); +LEAN_EXPORT lean_object* l_Lean_Expr_find_x3f___boxed(lean_object*, lean_object*); uint8_t lean_expr_eqv(lean_object*, lean_object*); -uint64_t lean_usize_to_uint64(size_t); LEAN_EXPORT lean_object* l_Lean_Expr_FindStep_noConfusion___rarg___lambda__1___boxed(lean_object*); -LEAN_EXPORT lean_object* l_List_foldl___at_Lean_Expr_FindImpl_checkVisited___spec__5(lean_object*, lean_object*, lean_object*); LEAN_EXPORT lean_object* l_Lean_Expr_findImpl_x3f___boxed(lean_object*, lean_object*); -LEAN_EXPORT lean_object* l_Lean_Expr_FindImpl_checkVisited___lambda__1___boxed(lean_object*, lean_object*, lean_object*); -LEAN_EXPORT lean_object* l_Lean_HashSetImp_moveEntries___at_Lean_Expr_FindImpl_checkVisited___spec__4(lean_object*, lean_object*, lean_object*); -LEAN_EXPORT uint8_t l_List_elem___at_Lean_Expr_FindImpl_checkVisited___spec__2(lean_object*, lean_object*); -LEAN_EXPORT lean_object* l_Lean_Expr_FindExtImpl_findUnsafe_x3f(lean_object*, lean_object*); -LEAN_EXPORT lean_object* l_Lean_HashSetImp_expand___at_Lean_Expr_FindImpl_checkVisited___spec__3(lean_object*, lean_object*); LEAN_EXPORT lean_object* l_Lean_Expr_FindStep_noConfusion(lean_object*); lean_object* lean_find_ext_expr(lean_object*, lean_object*); -LEAN_EXPORT lean_object* l_Lean_Expr_FindImpl_findUnsafe_x3f(lean_object*, lean_object*); -LEAN_EXPORT lean_object* l_Lean_Expr_FindExtImpl_findM_x3f_visit(lean_object*, lean_object*, lean_object*); -uint8_t lean_nat_dec_lt(lean_object*, lean_object*); -LEAN_EXPORT lean_object* l_Lean_HashSetImp_insert___at_Lean_Expr_FindImpl_checkVisited___spec__1(lean_object*, lean_object*); -lean_object* lean_nat_mul(lean_object*, lean_object*); -LEAN_EXPORT lean_object* l_Lean_Expr_FindExtImpl_findM_x3f(lean_object*, lean_object*, lean_object*); -LEAN_EXPORT lean_object* l_List_replace___at_Lean_Expr_FindImpl_checkVisited___spec__7___boxed(lean_object*, lean_object*, lean_object*); -LEAN_EXPORT lean_object* l_List_replace___at_Lean_Expr_FindImpl_checkVisited___spec__7(lean_object*, lean_object*, lean_object*); +LEAN_EXPORT lean_object* l_Lean_Expr_find_x3f(lean_object*, lean_object*); LEAN_EXPORT uint8_t l_Lean_Expr_occurs(lean_object*, lean_object*); LEAN_EXPORT lean_object* l_Lean_Expr_FindStep_noConfusion___rarg___boxed(lean_object*, lean_object*, lean_object*); LEAN_EXPORT lean_object* l_Lean_Expr_occurs___lambda__1___boxed(lean_object*, lean_object*); -lean_object* lean_array_uget(lean_object*, size_t); -LEAN_EXPORT lean_object* l_List_elem___at_Lean_Expr_FindImpl_checkVisited___spec__2___boxed(lean_object*, lean_object*); -LEAN_EXPORT lean_object* l_Lean_Expr_FindImpl_checkVisited___lambda__1(lean_object*, lean_object*, lean_object*); -LEAN_EXPORT lean_object* l_Lean_Expr_FindExtImpl_findM_x3f_visitApp(lean_object*, lean_object*, lean_object*); -lean_object* lean_array_get_size(lean_object*); lean_object* lean_find_expr(lean_object*, lean_object*); -uint8_t lean_nat_dec_le(lean_object*, lean_object*); -lean_object* lean_nat_add(lean_object*, lean_object*); LEAN_EXPORT lean_object* l_Lean_Expr_FindStep_noConfusion___rarg___lambda__1(lean_object*); -LEAN_EXPORT lean_object* l_Lean_HashSetImp_contains___at_Lean_Expr_FindImpl_checkVisited___spec__8___boxed(lean_object*, lean_object*); -LEAN_EXPORT lean_object* l_List_foldl___at_Lean_Expr_FindImpl_checkVisited___spec__5___at_Lean_Expr_FindImpl_checkVisited___spec__6(lean_object*, lean_object*); -static lean_object* l_Lean_Expr_FindImpl_checkVisited___lambda__1___closed__1; -LEAN_EXPORT lean_object* l_Lean_Expr_FindImpl_checkVisited(lean_object*, lean_object*); LEAN_EXPORT uint8_t l_Lean_Expr_occurs___lambda__1(lean_object*, lean_object*); -lean_object* lean_array_uset(lean_object*, size_t, lean_object*); -LEAN_EXPORT uint8_t l_List_elem___at_Lean_Expr_FindImpl_checkVisited___spec__2(lean_object* x_1, lean_object* x_2) { -_start: -{ -if (lean_obj_tag(x_2) == 0) -{ -uint8_t x_3; -x_3 = 0; -return x_3; -} -else -{ -lean_object* x_4; lean_object* x_5; size_t x_6; size_t x_7; uint8_t x_8; -x_4 = lean_ctor_get(x_2, 0); -x_5 = lean_ctor_get(x_2, 1); -x_6 = lean_ptr_addr(x_1); -x_7 = lean_ptr_addr(x_4); -x_8 = lean_usize_dec_eq(x_6, x_7); -if (x_8 == 0) -{ -x_2 = x_5; -goto _start; -} -else -{ -uint8_t x_10; -x_10 = 1; -return x_10; -} -} -} -} -LEAN_EXPORT lean_object* l_List_foldl___at_Lean_Expr_FindImpl_checkVisited___spec__5(lean_object* x_1, lean_object* x_2, lean_object* x_3) { -_start: -{ -if (lean_obj_tag(x_3) == 0) -{ -lean_dec(x_1); -return x_2; -} -else -{ -uint8_t x_4; -x_4 = !lean_is_exclusive(x_3); -if (x_4 == 0) -{ -lean_object* x_5; lean_object* x_6; lean_object* x_7; lean_object* x_8; uint64_t x_9; size_t x_10; lean_object* x_11; lean_object* x_12; -x_5 = lean_ctor_get(x_3, 0); -x_6 = lean_ctor_get(x_3, 1); -x_7 = lean_array_get_size(x_2); -lean_inc(x_1); -lean_inc(x_5); -x_8 = lean_apply_1(x_1, x_5); -x_9 = lean_unbox_uint64(x_8); -lean_dec(x_8); -x_10 = lean_hashset_mk_idx(x_7, x_9); -x_11 = lean_array_uget(x_2, x_10); -lean_ctor_set(x_3, 1, x_11); -x_12 = lean_array_uset(x_2, x_10, x_3); -x_2 = x_12; -x_3 = x_6; -goto _start; -} -else -{ -lean_object* x_14; lean_object* x_15; lean_object* x_16; lean_object* x_17; uint64_t x_18; size_t x_19; lean_object* x_20; lean_object* x_21; lean_object* x_22; -x_14 = lean_ctor_get(x_3, 0); -x_15 = lean_ctor_get(x_3, 1); -lean_inc(x_15); -lean_inc(x_14); -lean_dec(x_3); -x_16 = lean_array_get_size(x_2); -lean_inc(x_1); -lean_inc(x_14); -x_17 = lean_apply_1(x_1, x_14); -x_18 = lean_unbox_uint64(x_17); -lean_dec(x_17); -x_19 = lean_hashset_mk_idx(x_16, x_18); -x_20 = lean_array_uget(x_2, x_19); -x_21 = lean_alloc_ctor(1, 2, 0); -lean_ctor_set(x_21, 0, x_14); -lean_ctor_set(x_21, 1, x_20); -x_22 = lean_array_uset(x_2, x_19, x_21); -x_2 = x_22; -x_3 = x_15; -goto _start; -} -} -} -} -LEAN_EXPORT lean_object* l_List_foldl___at_Lean_Expr_FindImpl_checkVisited___spec__5___at_Lean_Expr_FindImpl_checkVisited___spec__6(lean_object* x_1, lean_object* x_2) { -_start: -{ -if (lean_obj_tag(x_2) == 0) -{ -return x_1; -} -else -{ -uint8_t x_3; -x_3 = !lean_is_exclusive(x_2); -if (x_3 == 0) -{ -lean_object* x_4; lean_object* x_5; lean_object* x_6; size_t x_7; uint64_t x_8; uint64_t x_9; uint64_t x_10; size_t x_11; lean_object* x_12; lean_object* x_13; -x_4 = lean_ctor_get(x_2, 0); -x_5 = lean_ctor_get(x_2, 1); -x_6 = lean_array_get_size(x_1); -x_7 = lean_ptr_addr(x_4); -x_8 = lean_usize_to_uint64(x_7); -x_9 = 11; -x_10 = lean_uint64_mix_hash(x_8, x_9); -x_11 = lean_hashset_mk_idx(x_6, x_10); -x_12 = lean_array_uget(x_1, x_11); -lean_ctor_set(x_2, 1, x_12); -x_13 = lean_array_uset(x_1, x_11, x_2); -x_1 = x_13; -x_2 = x_5; -goto _start; -} -else -{ -lean_object* x_15; lean_object* x_16; lean_object* x_17; size_t x_18; uint64_t x_19; uint64_t x_20; uint64_t x_21; size_t x_22; lean_object* x_23; lean_object* x_24; lean_object* x_25; -x_15 = lean_ctor_get(x_2, 0); -x_16 = lean_ctor_get(x_2, 1); -lean_inc(x_16); -lean_inc(x_15); -lean_dec(x_2); -x_17 = lean_array_get_size(x_1); -x_18 = lean_ptr_addr(x_15); -x_19 = lean_usize_to_uint64(x_18); -x_20 = 11; -x_21 = lean_uint64_mix_hash(x_19, x_20); -x_22 = lean_hashset_mk_idx(x_17, x_21); -x_23 = lean_array_uget(x_1, x_22); -x_24 = lean_alloc_ctor(1, 2, 0); -lean_ctor_set(x_24, 0, x_15); -lean_ctor_set(x_24, 1, x_23); -x_25 = lean_array_uset(x_1, x_22, x_24); -x_1 = x_25; -x_2 = x_16; -goto _start; -} -} -} -} -LEAN_EXPORT lean_object* l_Lean_HashSetImp_moveEntries___at_Lean_Expr_FindImpl_checkVisited___spec__4(lean_object* x_1, lean_object* x_2, lean_object* x_3) { -_start: -{ -lean_object* x_4; uint8_t x_5; -x_4 = lean_array_get_size(x_2); -x_5 = lean_nat_dec_lt(x_1, x_4); -lean_dec(x_4); -if (x_5 == 0) -{ -lean_dec(x_2); -lean_dec(x_1); -return x_3; -} -else -{ -lean_object* x_6; lean_object* x_7; lean_object* x_8; lean_object* x_9; lean_object* x_10; lean_object* x_11; -x_6 = lean_array_fget(x_2, x_1); -x_7 = lean_box(0); -x_8 = lean_array_fset(x_2, x_1, x_7); -x_9 = l_List_foldl___at_Lean_Expr_FindImpl_checkVisited___spec__5___at_Lean_Expr_FindImpl_checkVisited___spec__6(x_3, x_6); -x_10 = lean_unsigned_to_nat(1u); -x_11 = lean_nat_add(x_1, x_10); -lean_dec(x_1); -x_1 = x_11; -x_2 = x_8; -x_3 = x_9; -goto _start; -} -} -} -LEAN_EXPORT lean_object* l_Lean_HashSetImp_expand___at_Lean_Expr_FindImpl_checkVisited___spec__3(lean_object* x_1, lean_object* x_2) { -_start: -{ -lean_object* x_3; lean_object* x_4; lean_object* x_5; lean_object* x_6; lean_object* x_7; lean_object* x_8; lean_object* x_9; lean_object* x_10; -x_3 = lean_array_get_size(x_2); -x_4 = lean_unsigned_to_nat(2u); -x_5 = lean_nat_mul(x_3, x_4); -lean_dec(x_3); -x_6 = lean_box(0); -x_7 = lean_mk_array(x_5, x_6); -x_8 = lean_unsigned_to_nat(0u); -x_9 = l_Lean_HashSetImp_moveEntries___at_Lean_Expr_FindImpl_checkVisited___spec__4(x_8, x_2, x_7); -x_10 = lean_alloc_ctor(0, 2, 0); -lean_ctor_set(x_10, 0, x_1); -lean_ctor_set(x_10, 1, x_9); -return x_10; -} -} -LEAN_EXPORT lean_object* l_List_replace___at_Lean_Expr_FindImpl_checkVisited___spec__7(lean_object* x_1, lean_object* x_2, lean_object* x_3) { -_start: -{ -if (lean_obj_tag(x_1) == 0) -{ -lean_object* x_4; -lean_dec(x_3); -x_4 = lean_box(0); -return x_4; -} -else -{ -uint8_t x_5; -x_5 = !lean_is_exclusive(x_1); -if (x_5 == 0) -{ -lean_object* x_6; lean_object* x_7; size_t x_8; size_t x_9; uint8_t x_10; -x_6 = lean_ctor_get(x_1, 0); -x_7 = lean_ctor_get(x_1, 1); -x_8 = lean_ptr_addr(x_2); -x_9 = lean_ptr_addr(x_6); -x_10 = lean_usize_dec_eq(x_8, x_9); -if (x_10 == 0) -{ -lean_object* x_11; -x_11 = l_List_replace___at_Lean_Expr_FindImpl_checkVisited___spec__7(x_7, x_2, x_3); -lean_ctor_set(x_1, 1, x_11); -return x_1; -} -else -{ -lean_dec(x_6); -lean_ctor_set(x_1, 0, x_3); -return x_1; -} -} -else -{ -lean_object* x_12; lean_object* x_13; size_t x_14; size_t x_15; uint8_t x_16; -x_12 = lean_ctor_get(x_1, 0); -x_13 = lean_ctor_get(x_1, 1); -lean_inc(x_13); -lean_inc(x_12); -lean_dec(x_1); -x_14 = lean_ptr_addr(x_2); -x_15 = lean_ptr_addr(x_12); -x_16 = lean_usize_dec_eq(x_14, x_15); -if (x_16 == 0) -{ -lean_object* x_17; lean_object* x_18; -x_17 = l_List_replace___at_Lean_Expr_FindImpl_checkVisited___spec__7(x_13, x_2, x_3); -x_18 = lean_alloc_ctor(1, 2, 0); -lean_ctor_set(x_18, 0, x_12); -lean_ctor_set(x_18, 1, x_17); -return x_18; -} -else -{ -lean_object* x_19; -lean_dec(x_12); -x_19 = lean_alloc_ctor(1, 2, 0); -lean_ctor_set(x_19, 0, x_3); -lean_ctor_set(x_19, 1, x_13); -return x_19; -} -} -} -} -} -LEAN_EXPORT lean_object* l_Lean_HashSetImp_insert___at_Lean_Expr_FindImpl_checkVisited___spec__1(lean_object* x_1, lean_object* x_2) { -_start: -{ -uint8_t x_3; -x_3 = !lean_is_exclusive(x_1); -if (x_3 == 0) -{ -lean_object* x_4; lean_object* x_5; lean_object* x_6; size_t x_7; uint64_t x_8; uint64_t x_9; uint64_t x_10; size_t x_11; lean_object* x_12; uint8_t x_13; -x_4 = lean_ctor_get(x_1, 0); -x_5 = lean_ctor_get(x_1, 1); -x_6 = lean_array_get_size(x_5); -x_7 = lean_ptr_addr(x_2); -x_8 = lean_usize_to_uint64(x_7); -x_9 = 11; -x_10 = lean_uint64_mix_hash(x_8, x_9); -lean_inc(x_6); -x_11 = lean_hashset_mk_idx(x_6, x_10); -x_12 = lean_array_uget(x_5, x_11); -x_13 = l_List_elem___at_Lean_Expr_FindImpl_checkVisited___spec__2(x_2, x_12); -if (x_13 == 0) -{ -lean_object* x_14; lean_object* x_15; lean_object* x_16; lean_object* x_17; uint8_t x_18; -x_14 = lean_unsigned_to_nat(1u); -x_15 = lean_nat_add(x_4, x_14); -lean_dec(x_4); -x_16 = lean_alloc_ctor(1, 2, 0); -lean_ctor_set(x_16, 0, x_2); -lean_ctor_set(x_16, 1, x_12); -x_17 = lean_array_uset(x_5, x_11, x_16); -x_18 = lean_nat_dec_le(x_15, x_6); -lean_dec(x_6); -if (x_18 == 0) -{ -lean_object* x_19; -lean_free_object(x_1); -x_19 = l_Lean_HashSetImp_expand___at_Lean_Expr_FindImpl_checkVisited___spec__3(x_15, x_17); -return x_19; -} -else -{ -lean_ctor_set(x_1, 1, x_17); -lean_ctor_set(x_1, 0, x_15); -return x_1; -} -} -else -{ -lean_object* x_20; lean_object* x_21; lean_object* x_22; lean_object* x_23; -lean_dec(x_6); -x_20 = lean_box(0); -x_21 = lean_array_uset(x_5, x_11, x_20); -lean_inc(x_2); -x_22 = l_List_replace___at_Lean_Expr_FindImpl_checkVisited___spec__7(x_12, x_2, x_2); -lean_dec(x_2); -x_23 = lean_array_uset(x_21, x_11, x_22); -lean_ctor_set(x_1, 1, x_23); -return x_1; -} -} -else -{ -lean_object* x_24; lean_object* x_25; lean_object* x_26; size_t x_27; uint64_t x_28; uint64_t x_29; uint64_t x_30; size_t x_31; lean_object* x_32; uint8_t x_33; -x_24 = lean_ctor_get(x_1, 0); -x_25 = lean_ctor_get(x_1, 1); -lean_inc(x_25); -lean_inc(x_24); -lean_dec(x_1); -x_26 = lean_array_get_size(x_25); -x_27 = lean_ptr_addr(x_2); -x_28 = lean_usize_to_uint64(x_27); -x_29 = 11; -x_30 = lean_uint64_mix_hash(x_28, x_29); -lean_inc(x_26); -x_31 = lean_hashset_mk_idx(x_26, x_30); -x_32 = lean_array_uget(x_25, x_31); -x_33 = l_List_elem___at_Lean_Expr_FindImpl_checkVisited___spec__2(x_2, x_32); -if (x_33 == 0) -{ -lean_object* x_34; lean_object* x_35; lean_object* x_36; lean_object* x_37; uint8_t x_38; -x_34 = lean_unsigned_to_nat(1u); -x_35 = lean_nat_add(x_24, x_34); -lean_dec(x_24); -x_36 = lean_alloc_ctor(1, 2, 0); -lean_ctor_set(x_36, 0, x_2); -lean_ctor_set(x_36, 1, x_32); -x_37 = lean_array_uset(x_25, x_31, x_36); -x_38 = lean_nat_dec_le(x_35, x_26); -lean_dec(x_26); -if (x_38 == 0) -{ -lean_object* x_39; -x_39 = l_Lean_HashSetImp_expand___at_Lean_Expr_FindImpl_checkVisited___spec__3(x_35, x_37); -return x_39; -} -else -{ -lean_object* x_40; -x_40 = lean_alloc_ctor(0, 2, 0); -lean_ctor_set(x_40, 0, x_35); -lean_ctor_set(x_40, 1, x_37); -return x_40; -} -} -else -{ -lean_object* x_41; lean_object* x_42; lean_object* x_43; lean_object* x_44; lean_object* x_45; -lean_dec(x_26); -x_41 = lean_box(0); -x_42 = lean_array_uset(x_25, x_31, x_41); -lean_inc(x_2); -x_43 = l_List_replace___at_Lean_Expr_FindImpl_checkVisited___spec__7(x_32, x_2, x_2); -lean_dec(x_2); -x_44 = lean_array_uset(x_42, x_31, x_43); -x_45 = lean_alloc_ctor(0, 2, 0); -lean_ctor_set(x_45, 0, x_24); -lean_ctor_set(x_45, 1, x_44); -return x_45; -} -} -} -} -LEAN_EXPORT uint8_t l_Lean_HashSetImp_contains___at_Lean_Expr_FindImpl_checkVisited___spec__8(lean_object* x_1, lean_object* x_2) { -_start: -{ -lean_object* x_3; lean_object* x_4; size_t x_5; uint64_t x_6; uint64_t x_7; uint64_t x_8; size_t x_9; lean_object* x_10; uint8_t x_11; -x_3 = lean_ctor_get(x_1, 1); -x_4 = lean_array_get_size(x_3); -x_5 = lean_ptr_addr(x_2); -x_6 = lean_usize_to_uint64(x_5); -x_7 = 11; -x_8 = lean_uint64_mix_hash(x_6, x_7); -x_9 = lean_hashset_mk_idx(x_4, x_8); -x_10 = lean_array_uget(x_3, x_9); -x_11 = l_List_elem___at_Lean_Expr_FindImpl_checkVisited___spec__2(x_2, x_10); -lean_dec(x_10); -return x_11; -} -} -static lean_object* _init_l_Lean_Expr_FindImpl_checkVisited___lambda__1___closed__1() { -_start: -{ -lean_object* x_1; lean_object* x_2; -x_1 = lean_box(0); -x_2 = lean_alloc_ctor(1, 1, 0); -lean_ctor_set(x_2, 0, x_1); -return x_2; -} -} -LEAN_EXPORT lean_object* l_Lean_Expr_FindImpl_checkVisited___lambda__1(lean_object* x_1, lean_object* x_2, lean_object* x_3) { -_start: -{ -lean_object* x_4; lean_object* x_5; lean_object* x_6; -x_4 = l_Lean_HashSetImp_insert___at_Lean_Expr_FindImpl_checkVisited___spec__1(x_3, x_1); -x_5 = l_Lean_Expr_FindImpl_checkVisited___lambda__1___closed__1; -x_6 = lean_alloc_ctor(0, 2, 0); -lean_ctor_set(x_6, 0, x_5); -lean_ctor_set(x_6, 1, x_4); -return x_6; -} -} -LEAN_EXPORT lean_object* l_Lean_Expr_FindImpl_checkVisited(lean_object* x_1, lean_object* x_2) { -_start: -{ -uint8_t x_3; -x_3 = l_Lean_HashSetImp_contains___at_Lean_Expr_FindImpl_checkVisited___spec__8(x_2, x_1); -if (x_3 == 0) -{ -lean_object* x_4; lean_object* x_5; -x_4 = lean_box(0); -x_5 = l_Lean_Expr_FindImpl_checkVisited___lambda__1(x_1, x_4, x_2); -return x_5; -} -else -{ -lean_object* x_6; lean_object* x_7; -lean_dec(x_1); -x_6 = lean_box(0); -x_7 = lean_alloc_ctor(0, 2, 0); -lean_ctor_set(x_7, 0, x_6); -lean_ctor_set(x_7, 1, x_2); -return x_7; -} -} -} -LEAN_EXPORT lean_object* l_List_elem___at_Lean_Expr_FindImpl_checkVisited___spec__2___boxed(lean_object* x_1, lean_object* x_2) { -_start: -{ -uint8_t x_3; lean_object* x_4; -x_3 = l_List_elem___at_Lean_Expr_FindImpl_checkVisited___spec__2(x_1, x_2); -lean_dec(x_2); -lean_dec(x_1); -x_4 = lean_box(x_3); -return x_4; -} -} -LEAN_EXPORT lean_object* l_List_replace___at_Lean_Expr_FindImpl_checkVisited___spec__7___boxed(lean_object* x_1, lean_object* x_2, lean_object* x_3) { -_start: -{ -lean_object* x_4; -x_4 = l_List_replace___at_Lean_Expr_FindImpl_checkVisited___spec__7(x_1, x_2, x_3); -lean_dec(x_2); -return x_4; -} -} -LEAN_EXPORT lean_object* l_Lean_HashSetImp_contains___at_Lean_Expr_FindImpl_checkVisited___spec__8___boxed(lean_object* x_1, lean_object* x_2) { -_start: -{ -uint8_t x_3; lean_object* x_4; -x_3 = l_Lean_HashSetImp_contains___at_Lean_Expr_FindImpl_checkVisited___spec__8(x_1, x_2); -lean_dec(x_2); -lean_dec(x_1); -x_4 = lean_box(x_3); -return x_4; -} -} -LEAN_EXPORT lean_object* l_Lean_Expr_FindImpl_checkVisited___lambda__1___boxed(lean_object* x_1, lean_object* x_2, lean_object* x_3) { -_start: -{ -lean_object* x_4; -x_4 = l_Lean_Expr_FindImpl_checkVisited___lambda__1(x_1, x_2, x_3); -lean_dec(x_2); -return x_4; -} -} -LEAN_EXPORT lean_object* l_Lean_Expr_FindImpl_findM_x3f_visit(lean_object* x_1, lean_object* x_2, lean_object* x_3) { -_start: -{ -lean_object* x_4; lean_object* x_5; uint8_t x_166; -x_166 = l_Lean_HashSetImp_contains___at_Lean_Expr_FindImpl_checkVisited___spec__8(x_3, x_2); -if (x_166 == 0) -{ -lean_object* x_167; lean_object* x_168; lean_object* x_169; lean_object* x_170; -x_167 = lean_box(0); -lean_inc(x_2); -x_168 = l_Lean_Expr_FindImpl_checkVisited___lambda__1(x_2, x_167, x_3); -x_169 = lean_ctor_get(x_168, 0); -lean_inc(x_169); -x_170 = lean_ctor_get(x_168, 1); -lean_inc(x_170); -lean_dec(x_168); -x_4 = x_169; -x_5 = x_170; -goto block_165; -} -else -{ -lean_object* x_171; -x_171 = lean_box(0); -x_4 = x_171; -x_5 = x_3; -goto block_165; -} -block_165: -{ -if (lean_obj_tag(x_4) == 0) -{ -lean_object* x_6; lean_object* x_7; -lean_dec(x_2); -lean_dec(x_1); -x_6 = lean_box(0); -x_7 = lean_alloc_ctor(0, 2, 0); -lean_ctor_set(x_7, 0, x_6); -lean_ctor_set(x_7, 1, x_5); -return x_7; -} -else -{ -uint8_t x_8; -x_8 = !lean_is_exclusive(x_4); -if (x_8 == 0) -{ -lean_object* x_9; lean_object* x_10; uint8_t x_11; -x_9 = lean_ctor_get(x_4, 0); -lean_dec(x_9); -lean_inc(x_1); -lean_inc(x_2); -x_10 = lean_apply_1(x_1, x_2); -x_11 = lean_unbox(x_10); -lean_dec(x_10); -if (x_11 == 0) -{ -lean_free_object(x_4); -switch (lean_obj_tag(x_2)) { -case 5: -{ -lean_object* x_12; lean_object* x_13; lean_object* x_14; lean_object* x_15; -x_12 = lean_ctor_get(x_2, 0); -lean_inc(x_12); -x_13 = lean_ctor_get(x_2, 1); -lean_inc(x_13); -lean_dec(x_2); -lean_inc(x_1); -x_14 = l_Lean_Expr_FindImpl_findM_x3f_visit(x_1, x_12, x_5); -x_15 = lean_ctor_get(x_14, 0); -lean_inc(x_15); -if (lean_obj_tag(x_15) == 0) -{ -lean_object* x_16; -x_16 = lean_ctor_get(x_14, 1); -lean_inc(x_16); -lean_dec(x_14); -x_2 = x_13; -x_3 = x_16; -goto _start; -} -else -{ -uint8_t x_18; -lean_dec(x_13); -lean_dec(x_1); -x_18 = !lean_is_exclusive(x_14); -if (x_18 == 0) -{ -lean_object* x_19; uint8_t x_20; -x_19 = lean_ctor_get(x_14, 0); -lean_dec(x_19); -x_20 = !lean_is_exclusive(x_15); -if (x_20 == 0) -{ -return x_14; -} -else -{ -lean_object* x_21; lean_object* x_22; -x_21 = lean_ctor_get(x_15, 0); -lean_inc(x_21); -lean_dec(x_15); -x_22 = lean_alloc_ctor(1, 1, 0); -lean_ctor_set(x_22, 0, x_21); -lean_ctor_set(x_14, 0, x_22); -return x_14; -} -} -else -{ -lean_object* x_23; lean_object* x_24; lean_object* x_25; lean_object* x_26; lean_object* x_27; -x_23 = lean_ctor_get(x_14, 1); -lean_inc(x_23); -lean_dec(x_14); -x_24 = lean_ctor_get(x_15, 0); -lean_inc(x_24); -if (lean_is_exclusive(x_15)) { - lean_ctor_release(x_15, 0); - x_25 = x_15; -} else { - lean_dec_ref(x_15); - x_25 = lean_box(0); -} -if (lean_is_scalar(x_25)) { - x_26 = lean_alloc_ctor(1, 1, 0); -} else { - x_26 = x_25; -} -lean_ctor_set(x_26, 0, x_24); -x_27 = lean_alloc_ctor(0, 2, 0); -lean_ctor_set(x_27, 0, x_26); -lean_ctor_set(x_27, 1, x_23); -return x_27; -} -} -} -case 6: -{ -lean_object* x_28; lean_object* x_29; lean_object* x_30; lean_object* x_31; -x_28 = lean_ctor_get(x_2, 1); -lean_inc(x_28); -x_29 = lean_ctor_get(x_2, 2); -lean_inc(x_29); -lean_dec(x_2); -lean_inc(x_1); -x_30 = l_Lean_Expr_FindImpl_findM_x3f_visit(x_1, x_28, x_5); -x_31 = lean_ctor_get(x_30, 0); -lean_inc(x_31); -if (lean_obj_tag(x_31) == 0) -{ -lean_object* x_32; -x_32 = lean_ctor_get(x_30, 1); -lean_inc(x_32); -lean_dec(x_30); -x_2 = x_29; -x_3 = x_32; -goto _start; -} -else -{ -uint8_t x_34; -lean_dec(x_29); -lean_dec(x_1); -x_34 = !lean_is_exclusive(x_30); -if (x_34 == 0) -{ -lean_object* x_35; uint8_t x_36; -x_35 = lean_ctor_get(x_30, 0); -lean_dec(x_35); -x_36 = !lean_is_exclusive(x_31); -if (x_36 == 0) -{ -return x_30; -} -else -{ -lean_object* x_37; lean_object* x_38; -x_37 = lean_ctor_get(x_31, 0); -lean_inc(x_37); -lean_dec(x_31); -x_38 = lean_alloc_ctor(1, 1, 0); -lean_ctor_set(x_38, 0, x_37); -lean_ctor_set(x_30, 0, x_38); -return x_30; -} -} -else -{ -lean_object* x_39; lean_object* x_40; lean_object* x_41; lean_object* x_42; lean_object* x_43; -x_39 = lean_ctor_get(x_30, 1); -lean_inc(x_39); -lean_dec(x_30); -x_40 = lean_ctor_get(x_31, 0); -lean_inc(x_40); -if (lean_is_exclusive(x_31)) { - lean_ctor_release(x_31, 0); - x_41 = x_31; -} else { - lean_dec_ref(x_31); - x_41 = lean_box(0); -} -if (lean_is_scalar(x_41)) { - x_42 = lean_alloc_ctor(1, 1, 0); -} else { - x_42 = x_41; -} -lean_ctor_set(x_42, 0, x_40); -x_43 = lean_alloc_ctor(0, 2, 0); -lean_ctor_set(x_43, 0, x_42); -lean_ctor_set(x_43, 1, x_39); -return x_43; -} -} -} -case 7: -{ -lean_object* x_44; lean_object* x_45; lean_object* x_46; lean_object* x_47; -x_44 = lean_ctor_get(x_2, 1); -lean_inc(x_44); -x_45 = lean_ctor_get(x_2, 2); -lean_inc(x_45); -lean_dec(x_2); -lean_inc(x_1); -x_46 = l_Lean_Expr_FindImpl_findM_x3f_visit(x_1, x_44, x_5); -x_47 = lean_ctor_get(x_46, 0); -lean_inc(x_47); -if (lean_obj_tag(x_47) == 0) -{ -lean_object* x_48; -x_48 = lean_ctor_get(x_46, 1); -lean_inc(x_48); -lean_dec(x_46); -x_2 = x_45; -x_3 = x_48; -goto _start; -} -else -{ -uint8_t x_50; -lean_dec(x_45); -lean_dec(x_1); -x_50 = !lean_is_exclusive(x_46); -if (x_50 == 0) -{ -lean_object* x_51; uint8_t x_52; -x_51 = lean_ctor_get(x_46, 0); -lean_dec(x_51); -x_52 = !lean_is_exclusive(x_47); -if (x_52 == 0) -{ -return x_46; -} -else -{ -lean_object* x_53; lean_object* x_54; -x_53 = lean_ctor_get(x_47, 0); -lean_inc(x_53); -lean_dec(x_47); -x_54 = lean_alloc_ctor(1, 1, 0); -lean_ctor_set(x_54, 0, x_53); -lean_ctor_set(x_46, 0, x_54); -return x_46; -} -} -else -{ -lean_object* x_55; lean_object* x_56; lean_object* x_57; lean_object* x_58; lean_object* x_59; -x_55 = lean_ctor_get(x_46, 1); -lean_inc(x_55); -lean_dec(x_46); -x_56 = lean_ctor_get(x_47, 0); -lean_inc(x_56); -if (lean_is_exclusive(x_47)) { - lean_ctor_release(x_47, 0); - x_57 = x_47; -} else { - lean_dec_ref(x_47); - x_57 = lean_box(0); -} -if (lean_is_scalar(x_57)) { - x_58 = lean_alloc_ctor(1, 1, 0); -} else { - x_58 = x_57; -} -lean_ctor_set(x_58, 0, x_56); -x_59 = lean_alloc_ctor(0, 2, 0); -lean_ctor_set(x_59, 0, x_58); -lean_ctor_set(x_59, 1, x_55); -return x_59; -} -} -} -case 8: -{ -lean_object* x_60; lean_object* x_61; lean_object* x_62; lean_object* x_63; lean_object* x_64; -x_60 = lean_ctor_get(x_2, 1); -lean_inc(x_60); -x_61 = lean_ctor_get(x_2, 2); -lean_inc(x_61); -x_62 = lean_ctor_get(x_2, 3); -lean_inc(x_62); -lean_dec(x_2); -lean_inc(x_1); -x_63 = l_Lean_Expr_FindImpl_findM_x3f_visit(x_1, x_60, x_5); -x_64 = lean_ctor_get(x_63, 0); -lean_inc(x_64); -if (lean_obj_tag(x_64) == 0) -{ -lean_object* x_65; lean_object* x_66; lean_object* x_67; -x_65 = lean_ctor_get(x_63, 1); -lean_inc(x_65); -lean_dec(x_63); -lean_inc(x_1); -x_66 = l_Lean_Expr_FindImpl_findM_x3f_visit(x_1, x_61, x_65); -x_67 = lean_ctor_get(x_66, 0); -lean_inc(x_67); -if (lean_obj_tag(x_67) == 0) -{ -lean_object* x_68; -x_68 = lean_ctor_get(x_66, 1); -lean_inc(x_68); -lean_dec(x_66); -x_2 = x_62; -x_3 = x_68; -goto _start; -} -else -{ -uint8_t x_70; -lean_dec(x_62); -lean_dec(x_1); -x_70 = !lean_is_exclusive(x_66); -if (x_70 == 0) -{ -lean_object* x_71; uint8_t x_72; -x_71 = lean_ctor_get(x_66, 0); -lean_dec(x_71); -x_72 = !lean_is_exclusive(x_67); -if (x_72 == 0) -{ -return x_66; -} -else -{ -lean_object* x_73; lean_object* x_74; -x_73 = lean_ctor_get(x_67, 0); -lean_inc(x_73); -lean_dec(x_67); -x_74 = lean_alloc_ctor(1, 1, 0); -lean_ctor_set(x_74, 0, x_73); -lean_ctor_set(x_66, 0, x_74); -return x_66; -} -} -else -{ -lean_object* x_75; lean_object* x_76; lean_object* x_77; lean_object* x_78; lean_object* x_79; -x_75 = lean_ctor_get(x_66, 1); -lean_inc(x_75); -lean_dec(x_66); -x_76 = lean_ctor_get(x_67, 0); -lean_inc(x_76); -if (lean_is_exclusive(x_67)) { - lean_ctor_release(x_67, 0); - x_77 = x_67; -} else { - lean_dec_ref(x_67); - x_77 = lean_box(0); -} -if (lean_is_scalar(x_77)) { - x_78 = lean_alloc_ctor(1, 1, 0); -} else { - x_78 = x_77; -} -lean_ctor_set(x_78, 0, x_76); -x_79 = lean_alloc_ctor(0, 2, 0); -lean_ctor_set(x_79, 0, x_78); -lean_ctor_set(x_79, 1, x_75); -return x_79; -} -} -} -else -{ -uint8_t x_80; -lean_dec(x_62); -lean_dec(x_61); -lean_dec(x_1); -x_80 = !lean_is_exclusive(x_63); -if (x_80 == 0) -{ -lean_object* x_81; uint8_t x_82; -x_81 = lean_ctor_get(x_63, 0); -lean_dec(x_81); -x_82 = !lean_is_exclusive(x_64); -if (x_82 == 0) -{ -return x_63; -} -else -{ -lean_object* x_83; lean_object* x_84; -x_83 = lean_ctor_get(x_64, 0); -lean_inc(x_83); -lean_dec(x_64); -x_84 = lean_alloc_ctor(1, 1, 0); -lean_ctor_set(x_84, 0, x_83); -lean_ctor_set(x_63, 0, x_84); -return x_63; -} -} -else -{ -lean_object* x_85; lean_object* x_86; lean_object* x_87; lean_object* x_88; lean_object* x_89; -x_85 = lean_ctor_get(x_63, 1); -lean_inc(x_85); -lean_dec(x_63); -x_86 = lean_ctor_get(x_64, 0); -lean_inc(x_86); -if (lean_is_exclusive(x_64)) { - lean_ctor_release(x_64, 0); - x_87 = x_64; -} else { - lean_dec_ref(x_64); - x_87 = lean_box(0); -} -if (lean_is_scalar(x_87)) { - x_88 = lean_alloc_ctor(1, 1, 0); -} else { - x_88 = x_87; -} -lean_ctor_set(x_88, 0, x_86); -x_89 = lean_alloc_ctor(0, 2, 0); -lean_ctor_set(x_89, 0, x_88); -lean_ctor_set(x_89, 1, x_85); -return x_89; -} -} -} -case 10: -{ -lean_object* x_90; -x_90 = lean_ctor_get(x_2, 1); -lean_inc(x_90); -lean_dec(x_2); -x_2 = x_90; -x_3 = x_5; -goto _start; -} -case 11: -{ -lean_object* x_92; -x_92 = lean_ctor_get(x_2, 2); -lean_inc(x_92); -lean_dec(x_2); -x_2 = x_92; -x_3 = x_5; -goto _start; -} -default: -{ -lean_object* x_94; lean_object* x_95; -lean_dec(x_2); -lean_dec(x_1); -x_94 = lean_box(0); -x_95 = lean_alloc_ctor(0, 2, 0); -lean_ctor_set(x_95, 0, x_94); -lean_ctor_set(x_95, 1, x_5); -return x_95; -} -} -} -else -{ -lean_object* x_96; -lean_dec(x_1); -lean_ctor_set(x_4, 0, x_2); -x_96 = lean_alloc_ctor(0, 2, 0); -lean_ctor_set(x_96, 0, x_4); -lean_ctor_set(x_96, 1, x_5); -return x_96; -} -} -else -{ -lean_object* x_97; uint8_t x_98; -lean_dec(x_4); -lean_inc(x_1); -lean_inc(x_2); -x_97 = lean_apply_1(x_1, x_2); -x_98 = lean_unbox(x_97); -lean_dec(x_97); -if (x_98 == 0) -{ -switch (lean_obj_tag(x_2)) { -case 5: -{ -lean_object* x_99; lean_object* x_100; lean_object* x_101; lean_object* x_102; -x_99 = lean_ctor_get(x_2, 0); -lean_inc(x_99); -x_100 = lean_ctor_get(x_2, 1); -lean_inc(x_100); -lean_dec(x_2); -lean_inc(x_1); -x_101 = l_Lean_Expr_FindImpl_findM_x3f_visit(x_1, x_99, x_5); -x_102 = lean_ctor_get(x_101, 0); -lean_inc(x_102); -if (lean_obj_tag(x_102) == 0) -{ -lean_object* x_103; -x_103 = lean_ctor_get(x_101, 1); -lean_inc(x_103); -lean_dec(x_101); -x_2 = x_100; -x_3 = x_103; -goto _start; -} -else -{ -lean_object* x_105; lean_object* x_106; lean_object* x_107; lean_object* x_108; lean_object* x_109; lean_object* x_110; -lean_dec(x_100); -lean_dec(x_1); -x_105 = lean_ctor_get(x_101, 1); -lean_inc(x_105); -if (lean_is_exclusive(x_101)) { - lean_ctor_release(x_101, 0); - lean_ctor_release(x_101, 1); - x_106 = x_101; -} else { - lean_dec_ref(x_101); - x_106 = lean_box(0); -} -x_107 = lean_ctor_get(x_102, 0); -lean_inc(x_107); -if (lean_is_exclusive(x_102)) { - lean_ctor_release(x_102, 0); - x_108 = x_102; -} else { - lean_dec_ref(x_102); - x_108 = lean_box(0); -} -if (lean_is_scalar(x_108)) { - x_109 = lean_alloc_ctor(1, 1, 0); -} else { - x_109 = x_108; -} -lean_ctor_set(x_109, 0, x_107); -if (lean_is_scalar(x_106)) { - x_110 = lean_alloc_ctor(0, 2, 0); -} else { - x_110 = x_106; -} -lean_ctor_set(x_110, 0, x_109); -lean_ctor_set(x_110, 1, x_105); -return x_110; -} -} -case 6: -{ -lean_object* x_111; lean_object* x_112; lean_object* x_113; lean_object* x_114; -x_111 = lean_ctor_get(x_2, 1); -lean_inc(x_111); -x_112 = lean_ctor_get(x_2, 2); -lean_inc(x_112); -lean_dec(x_2); -lean_inc(x_1); -x_113 = l_Lean_Expr_FindImpl_findM_x3f_visit(x_1, x_111, x_5); -x_114 = lean_ctor_get(x_113, 0); -lean_inc(x_114); -if (lean_obj_tag(x_114) == 0) -{ -lean_object* x_115; -x_115 = lean_ctor_get(x_113, 1); -lean_inc(x_115); -lean_dec(x_113); -x_2 = x_112; -x_3 = x_115; -goto _start; -} -else -{ -lean_object* x_117; lean_object* x_118; lean_object* x_119; lean_object* x_120; lean_object* x_121; lean_object* x_122; -lean_dec(x_112); -lean_dec(x_1); -x_117 = lean_ctor_get(x_113, 1); -lean_inc(x_117); -if (lean_is_exclusive(x_113)) { - lean_ctor_release(x_113, 0); - lean_ctor_release(x_113, 1); - x_118 = x_113; -} else { - lean_dec_ref(x_113); - x_118 = lean_box(0); -} -x_119 = lean_ctor_get(x_114, 0); -lean_inc(x_119); -if (lean_is_exclusive(x_114)) { - lean_ctor_release(x_114, 0); - x_120 = x_114; -} else { - lean_dec_ref(x_114); - x_120 = lean_box(0); -} -if (lean_is_scalar(x_120)) { - x_121 = lean_alloc_ctor(1, 1, 0); -} else { - x_121 = x_120; -} -lean_ctor_set(x_121, 0, x_119); -if (lean_is_scalar(x_118)) { - x_122 = lean_alloc_ctor(0, 2, 0); -} else { - x_122 = x_118; -} -lean_ctor_set(x_122, 0, x_121); -lean_ctor_set(x_122, 1, x_117); -return x_122; -} -} -case 7: -{ -lean_object* x_123; lean_object* x_124; lean_object* x_125; lean_object* x_126; -x_123 = lean_ctor_get(x_2, 1); -lean_inc(x_123); -x_124 = lean_ctor_get(x_2, 2); -lean_inc(x_124); -lean_dec(x_2); -lean_inc(x_1); -x_125 = l_Lean_Expr_FindImpl_findM_x3f_visit(x_1, x_123, x_5); -x_126 = lean_ctor_get(x_125, 0); -lean_inc(x_126); -if (lean_obj_tag(x_126) == 0) -{ -lean_object* x_127; -x_127 = lean_ctor_get(x_125, 1); -lean_inc(x_127); -lean_dec(x_125); -x_2 = x_124; -x_3 = x_127; -goto _start; -} -else -{ -lean_object* x_129; lean_object* x_130; lean_object* x_131; lean_object* x_132; lean_object* x_133; lean_object* x_134; -lean_dec(x_124); -lean_dec(x_1); -x_129 = lean_ctor_get(x_125, 1); -lean_inc(x_129); -if (lean_is_exclusive(x_125)) { - lean_ctor_release(x_125, 0); - lean_ctor_release(x_125, 1); - x_130 = x_125; -} else { - lean_dec_ref(x_125); - x_130 = lean_box(0); -} -x_131 = lean_ctor_get(x_126, 0); -lean_inc(x_131); -if (lean_is_exclusive(x_126)) { - lean_ctor_release(x_126, 0); - x_132 = x_126; -} else { - lean_dec_ref(x_126); - x_132 = lean_box(0); -} -if (lean_is_scalar(x_132)) { - x_133 = lean_alloc_ctor(1, 1, 0); -} else { - x_133 = x_132; -} -lean_ctor_set(x_133, 0, x_131); -if (lean_is_scalar(x_130)) { - x_134 = lean_alloc_ctor(0, 2, 0); -} else { - x_134 = x_130; -} -lean_ctor_set(x_134, 0, x_133); -lean_ctor_set(x_134, 1, x_129); -return x_134; -} -} -case 8: -{ -lean_object* x_135; lean_object* x_136; lean_object* x_137; lean_object* x_138; lean_object* x_139; -x_135 = lean_ctor_get(x_2, 1); -lean_inc(x_135); -x_136 = lean_ctor_get(x_2, 2); -lean_inc(x_136); -x_137 = lean_ctor_get(x_2, 3); -lean_inc(x_137); -lean_dec(x_2); -lean_inc(x_1); -x_138 = l_Lean_Expr_FindImpl_findM_x3f_visit(x_1, x_135, x_5); -x_139 = lean_ctor_get(x_138, 0); -lean_inc(x_139); -if (lean_obj_tag(x_139) == 0) -{ -lean_object* x_140; lean_object* x_141; lean_object* x_142; -x_140 = lean_ctor_get(x_138, 1); -lean_inc(x_140); -lean_dec(x_138); -lean_inc(x_1); -x_141 = l_Lean_Expr_FindImpl_findM_x3f_visit(x_1, x_136, x_140); -x_142 = lean_ctor_get(x_141, 0); -lean_inc(x_142); -if (lean_obj_tag(x_142) == 0) -{ -lean_object* x_143; -x_143 = lean_ctor_get(x_141, 1); -lean_inc(x_143); -lean_dec(x_141); -x_2 = x_137; -x_3 = x_143; -goto _start; -} -else -{ -lean_object* x_145; lean_object* x_146; lean_object* x_147; lean_object* x_148; lean_object* x_149; lean_object* x_150; -lean_dec(x_137); -lean_dec(x_1); -x_145 = lean_ctor_get(x_141, 1); -lean_inc(x_145); -if (lean_is_exclusive(x_141)) { - lean_ctor_release(x_141, 0); - lean_ctor_release(x_141, 1); - x_146 = x_141; -} else { - lean_dec_ref(x_141); - x_146 = lean_box(0); -} -x_147 = lean_ctor_get(x_142, 0); -lean_inc(x_147); -if (lean_is_exclusive(x_142)) { - lean_ctor_release(x_142, 0); - x_148 = x_142; -} else { - lean_dec_ref(x_142); - x_148 = lean_box(0); -} -if (lean_is_scalar(x_148)) { - x_149 = lean_alloc_ctor(1, 1, 0); -} else { - x_149 = x_148; -} -lean_ctor_set(x_149, 0, x_147); -if (lean_is_scalar(x_146)) { - x_150 = lean_alloc_ctor(0, 2, 0); -} else { - x_150 = x_146; -} -lean_ctor_set(x_150, 0, x_149); -lean_ctor_set(x_150, 1, x_145); -return x_150; -} -} -else -{ -lean_object* x_151; lean_object* x_152; lean_object* x_153; lean_object* x_154; lean_object* x_155; lean_object* x_156; -lean_dec(x_137); -lean_dec(x_136); -lean_dec(x_1); -x_151 = lean_ctor_get(x_138, 1); -lean_inc(x_151); -if (lean_is_exclusive(x_138)) { - lean_ctor_release(x_138, 0); - lean_ctor_release(x_138, 1); - x_152 = x_138; -} else { - lean_dec_ref(x_138); - x_152 = lean_box(0); -} -x_153 = lean_ctor_get(x_139, 0); -lean_inc(x_153); -if (lean_is_exclusive(x_139)) { - lean_ctor_release(x_139, 0); - x_154 = x_139; -} else { - lean_dec_ref(x_139); - x_154 = lean_box(0); -} -if (lean_is_scalar(x_154)) { - x_155 = lean_alloc_ctor(1, 1, 0); -} else { - x_155 = x_154; -} -lean_ctor_set(x_155, 0, x_153); -if (lean_is_scalar(x_152)) { - x_156 = lean_alloc_ctor(0, 2, 0); -} else { - x_156 = x_152; -} -lean_ctor_set(x_156, 0, x_155); -lean_ctor_set(x_156, 1, x_151); -return x_156; -} -} -case 10: -{ -lean_object* x_157; -x_157 = lean_ctor_get(x_2, 1); -lean_inc(x_157); -lean_dec(x_2); -x_2 = x_157; -x_3 = x_5; -goto _start; -} -case 11: -{ -lean_object* x_159; -x_159 = lean_ctor_get(x_2, 2); -lean_inc(x_159); -lean_dec(x_2); -x_2 = x_159; -x_3 = x_5; -goto _start; -} -default: -{ -lean_object* x_161; lean_object* x_162; -lean_dec(x_2); -lean_dec(x_1); -x_161 = lean_box(0); -x_162 = lean_alloc_ctor(0, 2, 0); -lean_ctor_set(x_162, 0, x_161); -lean_ctor_set(x_162, 1, x_5); -return x_162; -} -} -} -else -{ -lean_object* x_163; lean_object* x_164; -lean_dec(x_1); -x_163 = lean_alloc_ctor(1, 1, 0); -lean_ctor_set(x_163, 0, x_2); -x_164 = lean_alloc_ctor(0, 2, 0); -lean_ctor_set(x_164, 0, x_163); -lean_ctor_set(x_164, 1, x_5); -return x_164; -} -} -} -} -} -} -LEAN_EXPORT lean_object* l_Lean_Expr_FindImpl_findM_x3f(lean_object* x_1, lean_object* x_2, lean_object* x_3) { -_start: -{ -lean_object* x_4; -x_4 = l_Lean_Expr_FindImpl_findM_x3f_visit(x_1, x_2, x_3); -return x_4; -} -} -static lean_object* _init_l_Lean_Expr_FindImpl_findUnsafe_x3f___closed__1() { -_start: -{ -lean_object* x_1; lean_object* x_2; -x_1 = lean_unsigned_to_nat(64u); -x_2 = l_Lean_mkHashSetImp___rarg(x_1); -return x_2; -} -} -LEAN_EXPORT lean_object* l_Lean_Expr_FindImpl_findUnsafe_x3f(lean_object* x_1, lean_object* x_2) { -_start: -{ -lean_object* x_3; lean_object* x_4; lean_object* x_5; -x_3 = l_Lean_Expr_FindImpl_findUnsafe_x3f___closed__1; -x_4 = l_Lean_Expr_FindImpl_findM_x3f_visit(x_1, x_2, x_3); -x_5 = lean_ctor_get(x_4, 0); -lean_inc(x_5); -lean_dec(x_4); -return x_5; -} -} LEAN_EXPORT lean_object* l_Lean_Expr_findImpl_x3f___boxed(lean_object* x_1, lean_object* x_2) { _start: { @@ -1439,6 +44,24 @@ lean_dec(x_1); return x_3; } } +LEAN_EXPORT lean_object* l_Lean_Expr_find_x3f(lean_object* x_1, lean_object* x_2) { +_start: +{ +lean_object* x_3; +x_3 = lean_find_expr(x_1, x_2); +return x_3; +} +} +LEAN_EXPORT lean_object* l_Lean_Expr_find_x3f___boxed(lean_object* x_1, lean_object* x_2) { +_start: +{ +lean_object* x_3; +x_3 = l_Lean_Expr_find_x3f(x_1, x_2); +lean_dec(x_2); +lean_dec(x_1); +return x_3; +} +} LEAN_EXPORT uint8_t l_Lean_Expr_occurs___lambda__1(lean_object* x_1, lean_object* x_2) { _start: { @@ -1453,7 +76,8 @@ _start: lean_object* x_3; lean_object* x_4; x_3 = lean_alloc_closure((void*)(l_Lean_Expr_occurs___lambda__1___boxed), 2, 1); lean_closure_set(x_3, 0, x_1); -x_4 = l_Lean_Expr_FindImpl_findUnsafe_x3f(x_3, x_2); +x_4 = lean_find_expr(x_3, x_2); +lean_dec(x_3); if (lean_obj_tag(x_4) == 0) { uint8_t x_5; @@ -1485,6 +109,7 @@ _start: { uint8_t x_3; lean_object* x_4; x_3 = l_Lean_Expr_occurs(x_1, x_2); +lean_dec(x_2); x_4 = lean_box(x_3); return x_4; } @@ -1586,857 +211,22 @@ lean_dec(x_1); return x_3; } } -LEAN_EXPORT lean_object* l_Lean_Expr_FindExtImpl_findM_x3f_visitApp(lean_object* x_1, lean_object* x_2, lean_object* x_3) { +LEAN_EXPORT lean_object* l_Lean_Expr_findExt_x3f(lean_object* x_1, lean_object* x_2) { _start: { -if (lean_obj_tag(x_2) == 5) -{ -lean_object* x_4; lean_object* x_5; lean_object* x_6; lean_object* x_7; -x_4 = lean_ctor_get(x_2, 0); -lean_inc(x_4); -x_5 = lean_ctor_get(x_2, 1); -lean_inc(x_5); -lean_dec(x_2); -lean_inc(x_1); -x_6 = l_Lean_Expr_FindExtImpl_findM_x3f_visitApp(x_1, x_4, x_3); -x_7 = lean_ctor_get(x_6, 0); -lean_inc(x_7); -if (lean_obj_tag(x_7) == 0) -{ -lean_object* x_8; lean_object* x_9; -x_8 = lean_ctor_get(x_6, 1); -lean_inc(x_8); -lean_dec(x_6); -x_9 = l_Lean_Expr_FindExtImpl_findM_x3f_visit(x_1, x_5, x_8); -return x_9; -} -else -{ -uint8_t x_10; -lean_dec(x_5); -lean_dec(x_1); -x_10 = !lean_is_exclusive(x_6); -if (x_10 == 0) -{ -lean_object* x_11; uint8_t x_12; -x_11 = lean_ctor_get(x_6, 0); -lean_dec(x_11); -x_12 = !lean_is_exclusive(x_7); -if (x_12 == 0) -{ -return x_6; -} -else -{ -lean_object* x_13; lean_object* x_14; -x_13 = lean_ctor_get(x_7, 0); -lean_inc(x_13); -lean_dec(x_7); -x_14 = lean_alloc_ctor(1, 1, 0); -lean_ctor_set(x_14, 0, x_13); -lean_ctor_set(x_6, 0, x_14); -return x_6; +lean_object* x_3; +x_3 = lean_find_ext_expr(x_1, x_2); +return x_3; } } -else -{ -lean_object* x_15; lean_object* x_16; lean_object* x_17; lean_object* x_18; lean_object* x_19; -x_15 = lean_ctor_get(x_6, 1); -lean_inc(x_15); -lean_dec(x_6); -x_16 = lean_ctor_get(x_7, 0); -lean_inc(x_16); -if (lean_is_exclusive(x_7)) { - lean_ctor_release(x_7, 0); - x_17 = x_7; -} else { - lean_dec_ref(x_7); - x_17 = lean_box(0); -} -if (lean_is_scalar(x_17)) { - x_18 = lean_alloc_ctor(1, 1, 0); -} else { - x_18 = x_17; -} -lean_ctor_set(x_18, 0, x_16); -x_19 = lean_alloc_ctor(0, 2, 0); -lean_ctor_set(x_19, 0, x_18); -lean_ctor_set(x_19, 1, x_15); -return x_19; -} -} -} -else -{ -lean_object* x_20; -x_20 = l_Lean_Expr_FindExtImpl_findM_x3f_visit(x_1, x_2, x_3); -return x_20; -} -} -} -LEAN_EXPORT lean_object* l_Lean_Expr_FindExtImpl_findM_x3f_visit(lean_object* x_1, lean_object* x_2, lean_object* x_3) { +LEAN_EXPORT lean_object* l_Lean_Expr_findExt_x3f___boxed(lean_object* x_1, lean_object* x_2) { _start: { -lean_object* x_4; lean_object* x_5; uint8_t x_144; -x_144 = l_Lean_HashSetImp_contains___at_Lean_Expr_FindImpl_checkVisited___spec__8(x_3, x_2); -if (x_144 == 0) -{ -lean_object* x_145; lean_object* x_146; lean_object* x_147; lean_object* x_148; -x_145 = lean_box(0); -lean_inc(x_2); -x_146 = l_Lean_Expr_FindImpl_checkVisited___lambda__1(x_2, x_145, x_3); -x_147 = lean_ctor_get(x_146, 0); -lean_inc(x_147); -x_148 = lean_ctor_get(x_146, 1); -lean_inc(x_148); -lean_dec(x_146); -x_4 = x_147; -x_5 = x_148; -goto block_143; -} -else -{ -lean_object* x_149; -x_149 = lean_box(0); -x_4 = x_149; -x_5 = x_3; -goto block_143; -} -block_143: -{ -if (lean_obj_tag(x_4) == 0) -{ -lean_object* x_6; lean_object* x_7; +lean_object* x_3; +x_3 = l_Lean_Expr_findExt_x3f(x_1, x_2); lean_dec(x_2); lean_dec(x_1); -x_6 = lean_box(0); -x_7 = lean_alloc_ctor(0, 2, 0); -lean_ctor_set(x_7, 0, x_6); -lean_ctor_set(x_7, 1, x_5); -return x_7; -} -else -{ -uint8_t x_8; -x_8 = !lean_is_exclusive(x_4); -if (x_8 == 0) -{ -lean_object* x_9; lean_object* x_10; uint8_t x_11; -x_9 = lean_ctor_get(x_4, 0); -lean_dec(x_9); -lean_inc(x_1); -lean_inc(x_2); -x_10 = lean_apply_1(x_1, x_2); -x_11 = lean_unbox(x_10); -lean_dec(x_10); -switch (x_11) { -case 0: -{ -lean_object* x_12; -lean_dec(x_1); -lean_ctor_set(x_4, 0, x_2); -x_12 = lean_alloc_ctor(0, 2, 0); -lean_ctor_set(x_12, 0, x_4); -lean_ctor_set(x_12, 1, x_5); -return x_12; -} -case 1: -{ -lean_free_object(x_4); -switch (lean_obj_tag(x_2)) { -case 5: -{ -lean_object* x_13; -x_13 = l_Lean_Expr_FindExtImpl_findM_x3f_visitApp(x_1, x_2, x_5); -return x_13; -} -case 6: -{ -lean_object* x_14; lean_object* x_15; lean_object* x_16; lean_object* x_17; -x_14 = lean_ctor_get(x_2, 1); -lean_inc(x_14); -x_15 = lean_ctor_get(x_2, 2); -lean_inc(x_15); -lean_dec(x_2); -lean_inc(x_1); -x_16 = l_Lean_Expr_FindExtImpl_findM_x3f_visit(x_1, x_14, x_5); -x_17 = lean_ctor_get(x_16, 0); -lean_inc(x_17); -if (lean_obj_tag(x_17) == 0) -{ -lean_object* x_18; -x_18 = lean_ctor_get(x_16, 1); -lean_inc(x_18); -lean_dec(x_16); -x_2 = x_15; -x_3 = x_18; -goto _start; -} -else -{ -uint8_t x_20; -lean_dec(x_15); -lean_dec(x_1); -x_20 = !lean_is_exclusive(x_16); -if (x_20 == 0) -{ -lean_object* x_21; uint8_t x_22; -x_21 = lean_ctor_get(x_16, 0); -lean_dec(x_21); -x_22 = !lean_is_exclusive(x_17); -if (x_22 == 0) -{ -return x_16; -} -else -{ -lean_object* x_23; lean_object* x_24; -x_23 = lean_ctor_get(x_17, 0); -lean_inc(x_23); -lean_dec(x_17); -x_24 = lean_alloc_ctor(1, 1, 0); -lean_ctor_set(x_24, 0, x_23); -lean_ctor_set(x_16, 0, x_24); -return x_16; -} -} -else -{ -lean_object* x_25; lean_object* x_26; lean_object* x_27; lean_object* x_28; lean_object* x_29; -x_25 = lean_ctor_get(x_16, 1); -lean_inc(x_25); -lean_dec(x_16); -x_26 = lean_ctor_get(x_17, 0); -lean_inc(x_26); -if (lean_is_exclusive(x_17)) { - lean_ctor_release(x_17, 0); - x_27 = x_17; -} else { - lean_dec_ref(x_17); - x_27 = lean_box(0); -} -if (lean_is_scalar(x_27)) { - x_28 = lean_alloc_ctor(1, 1, 0); -} else { - x_28 = x_27; -} -lean_ctor_set(x_28, 0, x_26); -x_29 = lean_alloc_ctor(0, 2, 0); -lean_ctor_set(x_29, 0, x_28); -lean_ctor_set(x_29, 1, x_25); -return x_29; -} -} -} -case 7: -{ -lean_object* x_30; lean_object* x_31; lean_object* x_32; lean_object* x_33; -x_30 = lean_ctor_get(x_2, 1); -lean_inc(x_30); -x_31 = lean_ctor_get(x_2, 2); -lean_inc(x_31); -lean_dec(x_2); -lean_inc(x_1); -x_32 = l_Lean_Expr_FindExtImpl_findM_x3f_visit(x_1, x_30, x_5); -x_33 = lean_ctor_get(x_32, 0); -lean_inc(x_33); -if (lean_obj_tag(x_33) == 0) -{ -lean_object* x_34; -x_34 = lean_ctor_get(x_32, 1); -lean_inc(x_34); -lean_dec(x_32); -x_2 = x_31; -x_3 = x_34; -goto _start; -} -else -{ -uint8_t x_36; -lean_dec(x_31); -lean_dec(x_1); -x_36 = !lean_is_exclusive(x_32); -if (x_36 == 0) -{ -lean_object* x_37; uint8_t x_38; -x_37 = lean_ctor_get(x_32, 0); -lean_dec(x_37); -x_38 = !lean_is_exclusive(x_33); -if (x_38 == 0) -{ -return x_32; -} -else -{ -lean_object* x_39; lean_object* x_40; -x_39 = lean_ctor_get(x_33, 0); -lean_inc(x_39); -lean_dec(x_33); -x_40 = lean_alloc_ctor(1, 1, 0); -lean_ctor_set(x_40, 0, x_39); -lean_ctor_set(x_32, 0, x_40); -return x_32; -} -} -else -{ -lean_object* x_41; lean_object* x_42; lean_object* x_43; lean_object* x_44; lean_object* x_45; -x_41 = lean_ctor_get(x_32, 1); -lean_inc(x_41); -lean_dec(x_32); -x_42 = lean_ctor_get(x_33, 0); -lean_inc(x_42); -if (lean_is_exclusive(x_33)) { - lean_ctor_release(x_33, 0); - x_43 = x_33; -} else { - lean_dec_ref(x_33); - x_43 = lean_box(0); -} -if (lean_is_scalar(x_43)) { - x_44 = lean_alloc_ctor(1, 1, 0); -} else { - x_44 = x_43; -} -lean_ctor_set(x_44, 0, x_42); -x_45 = lean_alloc_ctor(0, 2, 0); -lean_ctor_set(x_45, 0, x_44); -lean_ctor_set(x_45, 1, x_41); -return x_45; -} -} -} -case 8: -{ -lean_object* x_46; lean_object* x_47; lean_object* x_48; lean_object* x_49; lean_object* x_50; -x_46 = lean_ctor_get(x_2, 1); -lean_inc(x_46); -x_47 = lean_ctor_get(x_2, 2); -lean_inc(x_47); -x_48 = lean_ctor_get(x_2, 3); -lean_inc(x_48); -lean_dec(x_2); -lean_inc(x_1); -x_49 = l_Lean_Expr_FindExtImpl_findM_x3f_visit(x_1, x_46, x_5); -x_50 = lean_ctor_get(x_49, 0); -lean_inc(x_50); -if (lean_obj_tag(x_50) == 0) -{ -lean_object* x_51; lean_object* x_52; lean_object* x_53; -x_51 = lean_ctor_get(x_49, 1); -lean_inc(x_51); -lean_dec(x_49); -lean_inc(x_1); -x_52 = l_Lean_Expr_FindExtImpl_findM_x3f_visit(x_1, x_47, x_51); -x_53 = lean_ctor_get(x_52, 0); -lean_inc(x_53); -if (lean_obj_tag(x_53) == 0) -{ -lean_object* x_54; -x_54 = lean_ctor_get(x_52, 1); -lean_inc(x_54); -lean_dec(x_52); -x_2 = x_48; -x_3 = x_54; -goto _start; -} -else -{ -uint8_t x_56; -lean_dec(x_48); -lean_dec(x_1); -x_56 = !lean_is_exclusive(x_52); -if (x_56 == 0) -{ -lean_object* x_57; uint8_t x_58; -x_57 = lean_ctor_get(x_52, 0); -lean_dec(x_57); -x_58 = !lean_is_exclusive(x_53); -if (x_58 == 0) -{ -return x_52; -} -else -{ -lean_object* x_59; lean_object* x_60; -x_59 = lean_ctor_get(x_53, 0); -lean_inc(x_59); -lean_dec(x_53); -x_60 = lean_alloc_ctor(1, 1, 0); -lean_ctor_set(x_60, 0, x_59); -lean_ctor_set(x_52, 0, x_60); -return x_52; -} -} -else -{ -lean_object* x_61; lean_object* x_62; lean_object* x_63; lean_object* x_64; lean_object* x_65; -x_61 = lean_ctor_get(x_52, 1); -lean_inc(x_61); -lean_dec(x_52); -x_62 = lean_ctor_get(x_53, 0); -lean_inc(x_62); -if (lean_is_exclusive(x_53)) { - lean_ctor_release(x_53, 0); - x_63 = x_53; -} else { - lean_dec_ref(x_53); - x_63 = lean_box(0); -} -if (lean_is_scalar(x_63)) { - x_64 = lean_alloc_ctor(1, 1, 0); -} else { - x_64 = x_63; -} -lean_ctor_set(x_64, 0, x_62); -x_65 = lean_alloc_ctor(0, 2, 0); -lean_ctor_set(x_65, 0, x_64); -lean_ctor_set(x_65, 1, x_61); -return x_65; -} -} -} -else -{ -uint8_t x_66; -lean_dec(x_48); -lean_dec(x_47); -lean_dec(x_1); -x_66 = !lean_is_exclusive(x_49); -if (x_66 == 0) -{ -lean_object* x_67; uint8_t x_68; -x_67 = lean_ctor_get(x_49, 0); -lean_dec(x_67); -x_68 = !lean_is_exclusive(x_50); -if (x_68 == 0) -{ -return x_49; -} -else -{ -lean_object* x_69; lean_object* x_70; -x_69 = lean_ctor_get(x_50, 0); -lean_inc(x_69); -lean_dec(x_50); -x_70 = lean_alloc_ctor(1, 1, 0); -lean_ctor_set(x_70, 0, x_69); -lean_ctor_set(x_49, 0, x_70); -return x_49; -} -} -else -{ -lean_object* x_71; lean_object* x_72; lean_object* x_73; lean_object* x_74; lean_object* x_75; -x_71 = lean_ctor_get(x_49, 1); -lean_inc(x_71); -lean_dec(x_49); -x_72 = lean_ctor_get(x_50, 0); -lean_inc(x_72); -if (lean_is_exclusive(x_50)) { - lean_ctor_release(x_50, 0); - x_73 = x_50; -} else { - lean_dec_ref(x_50); - x_73 = lean_box(0); -} -if (lean_is_scalar(x_73)) { - x_74 = lean_alloc_ctor(1, 1, 0); -} else { - x_74 = x_73; -} -lean_ctor_set(x_74, 0, x_72); -x_75 = lean_alloc_ctor(0, 2, 0); -lean_ctor_set(x_75, 0, x_74); -lean_ctor_set(x_75, 1, x_71); -return x_75; -} -} -} -case 10: -{ -lean_object* x_76; -x_76 = lean_ctor_get(x_2, 1); -lean_inc(x_76); -lean_dec(x_2); -x_2 = x_76; -x_3 = x_5; -goto _start; -} -case 11: -{ -lean_object* x_78; -x_78 = lean_ctor_get(x_2, 2); -lean_inc(x_78); -lean_dec(x_2); -x_2 = x_78; -x_3 = x_5; -goto _start; -} -default: -{ -lean_object* x_80; lean_object* x_81; -lean_dec(x_2); -lean_dec(x_1); -x_80 = lean_box(0); -x_81 = lean_alloc_ctor(0, 2, 0); -lean_ctor_set(x_81, 0, x_80); -lean_ctor_set(x_81, 1, x_5); -return x_81; -} -} -} -default: -{ -lean_object* x_82; lean_object* x_83; -lean_free_object(x_4); -lean_dec(x_2); -lean_dec(x_1); -x_82 = lean_box(0); -x_83 = lean_alloc_ctor(0, 2, 0); -lean_ctor_set(x_83, 0, x_82); -lean_ctor_set(x_83, 1, x_5); -return x_83; -} -} -} -else -{ -lean_object* x_84; uint8_t x_85; -lean_dec(x_4); -lean_inc(x_1); -lean_inc(x_2); -x_84 = lean_apply_1(x_1, x_2); -x_85 = lean_unbox(x_84); -lean_dec(x_84); -switch (x_85) { -case 0: -{ -lean_object* x_86; lean_object* x_87; -lean_dec(x_1); -x_86 = lean_alloc_ctor(1, 1, 0); -lean_ctor_set(x_86, 0, x_2); -x_87 = lean_alloc_ctor(0, 2, 0); -lean_ctor_set(x_87, 0, x_86); -lean_ctor_set(x_87, 1, x_5); -return x_87; -} -case 1: -{ -switch (lean_obj_tag(x_2)) { -case 5: -{ -lean_object* x_88; -x_88 = l_Lean_Expr_FindExtImpl_findM_x3f_visitApp(x_1, x_2, x_5); -return x_88; -} -case 6: -{ -lean_object* x_89; lean_object* x_90; lean_object* x_91; lean_object* x_92; -x_89 = lean_ctor_get(x_2, 1); -lean_inc(x_89); -x_90 = lean_ctor_get(x_2, 2); -lean_inc(x_90); -lean_dec(x_2); -lean_inc(x_1); -x_91 = l_Lean_Expr_FindExtImpl_findM_x3f_visit(x_1, x_89, x_5); -x_92 = lean_ctor_get(x_91, 0); -lean_inc(x_92); -if (lean_obj_tag(x_92) == 0) -{ -lean_object* x_93; -x_93 = lean_ctor_get(x_91, 1); -lean_inc(x_93); -lean_dec(x_91); -x_2 = x_90; -x_3 = x_93; -goto _start; -} -else -{ -lean_object* x_95; lean_object* x_96; lean_object* x_97; lean_object* x_98; lean_object* x_99; lean_object* x_100; -lean_dec(x_90); -lean_dec(x_1); -x_95 = lean_ctor_get(x_91, 1); -lean_inc(x_95); -if (lean_is_exclusive(x_91)) { - lean_ctor_release(x_91, 0); - lean_ctor_release(x_91, 1); - x_96 = x_91; -} else { - lean_dec_ref(x_91); - x_96 = lean_box(0); -} -x_97 = lean_ctor_get(x_92, 0); -lean_inc(x_97); -if (lean_is_exclusive(x_92)) { - lean_ctor_release(x_92, 0); - x_98 = x_92; -} else { - lean_dec_ref(x_92); - x_98 = lean_box(0); -} -if (lean_is_scalar(x_98)) { - x_99 = lean_alloc_ctor(1, 1, 0); -} else { - x_99 = x_98; -} -lean_ctor_set(x_99, 0, x_97); -if (lean_is_scalar(x_96)) { - x_100 = lean_alloc_ctor(0, 2, 0); -} else { - x_100 = x_96; -} -lean_ctor_set(x_100, 0, x_99); -lean_ctor_set(x_100, 1, x_95); -return x_100; -} -} -case 7: -{ -lean_object* x_101; lean_object* x_102; lean_object* x_103; lean_object* x_104; -x_101 = lean_ctor_get(x_2, 1); -lean_inc(x_101); -x_102 = lean_ctor_get(x_2, 2); -lean_inc(x_102); -lean_dec(x_2); -lean_inc(x_1); -x_103 = l_Lean_Expr_FindExtImpl_findM_x3f_visit(x_1, x_101, x_5); -x_104 = lean_ctor_get(x_103, 0); -lean_inc(x_104); -if (lean_obj_tag(x_104) == 0) -{ -lean_object* x_105; -x_105 = lean_ctor_get(x_103, 1); -lean_inc(x_105); -lean_dec(x_103); -x_2 = x_102; -x_3 = x_105; -goto _start; -} -else -{ -lean_object* x_107; lean_object* x_108; lean_object* x_109; lean_object* x_110; lean_object* x_111; lean_object* x_112; -lean_dec(x_102); -lean_dec(x_1); -x_107 = lean_ctor_get(x_103, 1); -lean_inc(x_107); -if (lean_is_exclusive(x_103)) { - lean_ctor_release(x_103, 0); - lean_ctor_release(x_103, 1); - x_108 = x_103; -} else { - lean_dec_ref(x_103); - x_108 = lean_box(0); -} -x_109 = lean_ctor_get(x_104, 0); -lean_inc(x_109); -if (lean_is_exclusive(x_104)) { - lean_ctor_release(x_104, 0); - x_110 = x_104; -} else { - lean_dec_ref(x_104); - x_110 = lean_box(0); -} -if (lean_is_scalar(x_110)) { - x_111 = lean_alloc_ctor(1, 1, 0); -} else { - x_111 = x_110; -} -lean_ctor_set(x_111, 0, x_109); -if (lean_is_scalar(x_108)) { - x_112 = lean_alloc_ctor(0, 2, 0); -} else { - x_112 = x_108; -} -lean_ctor_set(x_112, 0, x_111); -lean_ctor_set(x_112, 1, x_107); -return x_112; -} -} -case 8: -{ -lean_object* x_113; lean_object* x_114; lean_object* x_115; lean_object* x_116; lean_object* x_117; -x_113 = lean_ctor_get(x_2, 1); -lean_inc(x_113); -x_114 = lean_ctor_get(x_2, 2); -lean_inc(x_114); -x_115 = lean_ctor_get(x_2, 3); -lean_inc(x_115); -lean_dec(x_2); -lean_inc(x_1); -x_116 = l_Lean_Expr_FindExtImpl_findM_x3f_visit(x_1, x_113, x_5); -x_117 = lean_ctor_get(x_116, 0); -lean_inc(x_117); -if (lean_obj_tag(x_117) == 0) -{ -lean_object* x_118; lean_object* x_119; lean_object* x_120; -x_118 = lean_ctor_get(x_116, 1); -lean_inc(x_118); -lean_dec(x_116); -lean_inc(x_1); -x_119 = l_Lean_Expr_FindExtImpl_findM_x3f_visit(x_1, x_114, x_118); -x_120 = lean_ctor_get(x_119, 0); -lean_inc(x_120); -if (lean_obj_tag(x_120) == 0) -{ -lean_object* x_121; -x_121 = lean_ctor_get(x_119, 1); -lean_inc(x_121); -lean_dec(x_119); -x_2 = x_115; -x_3 = x_121; -goto _start; -} -else -{ -lean_object* x_123; lean_object* x_124; lean_object* x_125; lean_object* x_126; lean_object* x_127; lean_object* x_128; -lean_dec(x_115); -lean_dec(x_1); -x_123 = lean_ctor_get(x_119, 1); -lean_inc(x_123); -if (lean_is_exclusive(x_119)) { - lean_ctor_release(x_119, 0); - lean_ctor_release(x_119, 1); - x_124 = x_119; -} else { - lean_dec_ref(x_119); - x_124 = lean_box(0); -} -x_125 = lean_ctor_get(x_120, 0); -lean_inc(x_125); -if (lean_is_exclusive(x_120)) { - lean_ctor_release(x_120, 0); - x_126 = x_120; -} else { - lean_dec_ref(x_120); - x_126 = lean_box(0); -} -if (lean_is_scalar(x_126)) { - x_127 = lean_alloc_ctor(1, 1, 0); -} else { - x_127 = x_126; -} -lean_ctor_set(x_127, 0, x_125); -if (lean_is_scalar(x_124)) { - x_128 = lean_alloc_ctor(0, 2, 0); -} else { - x_128 = x_124; -} -lean_ctor_set(x_128, 0, x_127); -lean_ctor_set(x_128, 1, x_123); -return x_128; -} -} -else -{ -lean_object* x_129; lean_object* x_130; lean_object* x_131; lean_object* x_132; lean_object* x_133; lean_object* x_134; -lean_dec(x_115); -lean_dec(x_114); -lean_dec(x_1); -x_129 = lean_ctor_get(x_116, 1); -lean_inc(x_129); -if (lean_is_exclusive(x_116)) { - lean_ctor_release(x_116, 0); - lean_ctor_release(x_116, 1); - x_130 = x_116; -} else { - lean_dec_ref(x_116); - x_130 = lean_box(0); -} -x_131 = lean_ctor_get(x_117, 0); -lean_inc(x_131); -if (lean_is_exclusive(x_117)) { - lean_ctor_release(x_117, 0); - x_132 = x_117; -} else { - lean_dec_ref(x_117); - x_132 = lean_box(0); -} -if (lean_is_scalar(x_132)) { - x_133 = lean_alloc_ctor(1, 1, 0); -} else { - x_133 = x_132; -} -lean_ctor_set(x_133, 0, x_131); -if (lean_is_scalar(x_130)) { - x_134 = lean_alloc_ctor(0, 2, 0); -} else { - x_134 = x_130; -} -lean_ctor_set(x_134, 0, x_133); -lean_ctor_set(x_134, 1, x_129); -return x_134; -} -} -case 10: -{ -lean_object* x_135; -x_135 = lean_ctor_get(x_2, 1); -lean_inc(x_135); -lean_dec(x_2); -x_2 = x_135; -x_3 = x_5; -goto _start; -} -case 11: -{ -lean_object* x_137; -x_137 = lean_ctor_get(x_2, 2); -lean_inc(x_137); -lean_dec(x_2); -x_2 = x_137; -x_3 = x_5; -goto _start; -} -default: -{ -lean_object* x_139; lean_object* x_140; -lean_dec(x_2); -lean_dec(x_1); -x_139 = lean_box(0); -x_140 = lean_alloc_ctor(0, 2, 0); -lean_ctor_set(x_140, 0, x_139); -lean_ctor_set(x_140, 1, x_5); -return x_140; -} -} -} -default: -{ -lean_object* x_141; lean_object* x_142; -lean_dec(x_2); -lean_dec(x_1); -x_141 = lean_box(0); -x_142 = lean_alloc_ctor(0, 2, 0); -lean_ctor_set(x_142, 0, x_141); -lean_ctor_set(x_142, 1, x_5); -return x_142; -} -} -} -} -} -} -} -LEAN_EXPORT lean_object* l_Lean_Expr_FindExtImpl_findM_x3f(lean_object* x_1, lean_object* x_2, lean_object* x_3) { -_start: -{ -lean_object* x_4; -x_4 = l_Lean_Expr_FindExtImpl_findM_x3f_visit(x_1, x_2, x_3); -return x_4; -} -} -LEAN_EXPORT lean_object* l_Lean_Expr_FindExtImpl_findUnsafe_x3f(lean_object* x_1, lean_object* x_2) { -_start: -{ -lean_object* x_3; lean_object* x_4; lean_object* x_5; -x_3 = l_Lean_Expr_FindImpl_findUnsafe_x3f___closed__1; -x_4 = l_Lean_Expr_FindExtImpl_findM_x3f_visit(x_1, x_2, x_3); -x_5 = lean_ctor_get(x_4, 0); -lean_inc(x_5); -lean_dec(x_4); -return x_5; +return x_3; } } lean_object* initialize_Lean_Expr(uint8_t builtin, lean_object*); @@ -2452,10 +242,6 @@ lean_dec_ref(res); res = initialize_Lean_Util_PtrSet(builtin, lean_io_mk_world()); if (lean_io_result_is_error(res)) return res; lean_dec_ref(res); -l_Lean_Expr_FindImpl_checkVisited___lambda__1___closed__1 = _init_l_Lean_Expr_FindImpl_checkVisited___lambda__1___closed__1(); -lean_mark_persistent(l_Lean_Expr_FindImpl_checkVisited___lambda__1___closed__1); -l_Lean_Expr_FindImpl_findUnsafe_x3f___closed__1 = _init_l_Lean_Expr_FindImpl_findUnsafe_x3f___closed__1(); -lean_mark_persistent(l_Lean_Expr_FindImpl_findUnsafe_x3f___closed__1); l_Lean_Expr_FindStep_noConfusion___rarg___closed__1 = _init_l_Lean_Expr_FindStep_noConfusion___rarg___closed__1(); lean_mark_persistent(l_Lean_Expr_FindStep_noConfusion___rarg___closed__1); return lean_io_result_mk_ok(lean_box(0)); diff --git a/stage0/stdlib/Lean/Util/ReplaceExpr.c b/stage0/stdlib/Lean/Util/ReplaceExpr.c index 7d5cf8760c..81c9fe8ccd 100644 --- a/stage0/stdlib/Lean/Util/ReplaceExpr.c +++ b/stage0/stdlib/Lean/Util/ReplaceExpr.c @@ -31,7 +31,9 @@ LEAN_EXPORT lean_object* l_Lean_Expr_ReplaceImpl_cache(lean_object*, uint8_t, le LEAN_EXPORT lean_object* l_Lean_Expr_ReplaceImpl_replaceUnsafe(lean_object*, lean_object*); size_t lean_ptr_addr(lean_object*); uint8_t lean_is_exclusive_obj(lean_object*); +lean_object* lean_replace_expr(lean_object*, lean_object*); uint64_t lean_usize_to_uint64(size_t); +LEAN_EXPORT lean_object* l_Lean_Expr_replaceImpl___boxed(lean_object*, lean_object*); lean_object* l_Lean_Expr_forallE___override(lean_object*, lean_object*, lean_object*, uint8_t); LEAN_EXPORT lean_object* l_Lean_Expr_ReplaceImpl_cache___boxed(lean_object*, lean_object*, lean_object*, lean_object*); LEAN_EXPORT lean_object* l_Lean_AssocList_contains___at_Lean_Expr_ReplaceImpl_cache___spec__2___boxed(lean_object*, lean_object*); @@ -1380,6 +1382,16 @@ return x_85; } } } +LEAN_EXPORT lean_object* l_Lean_Expr_replaceImpl___boxed(lean_object* x_1, lean_object* x_2) { +_start: +{ +lean_object* x_3; +x_3 = lean_replace_expr(x_1, x_2); +lean_dec(x_2); +lean_dec(x_1); +return x_3; +} +} lean_object* initialize_Lean_Expr(uint8_t builtin, lean_object*); lean_object* initialize_Lean_Util_PtrSet(uint8_t builtin, lean_object*); static bool _G_initialized = false; diff --git a/stage0/stdlib/Lean/Util/Sorry.c b/stage0/stdlib/Lean/Util/Sorry.c index 8df55905f7..99baea4f63 100644 --- a/stage0/stdlib/Lean/Util/Sorry.c +++ b/stage0/stdlib/Lean/Util/Sorry.c @@ -42,7 +42,6 @@ LEAN_EXPORT lean_object* l_List_foldlM___at_Lean_Declaration_hasSorry___spec__4_ lean_object* l_Lean_Name_str___override(lean_object*, lean_object*); LEAN_EXPORT lean_object* l_List_foldlM___at_Lean_Declaration_hasNonSyntheticSorry___spec__2___boxed(lean_object*, lean_object*); static lean_object* l_Lean_Expr_isSyntheticSorry___closed__2; -lean_object* l_Lean_Expr_FindImpl_findUnsafe_x3f(lean_object*, lean_object*); LEAN_EXPORT uint8_t l_Lean_Declaration_foldExprM___at_Lean_Declaration_hasNonSyntheticSorry___spec__1(lean_object*, uint8_t); LEAN_EXPORT lean_object* l_List_foldlM___at_Lean_Declaration_hasSorry___spec__3___boxed(lean_object*, lean_object*); uint8_t l_Lean_Expr_isConstOf(lean_object*, lean_object*); @@ -53,6 +52,7 @@ LEAN_EXPORT uint8_t l_List_foldlM___at_Lean_Declaration_hasNonSyntheticSorry___s LEAN_EXPORT lean_object* l_Lean_Expr_hasSorry___lambda__1___boxed(lean_object*); LEAN_EXPORT uint8_t l_Lean_Expr_hasNonSyntheticSorry(lean_object*); LEAN_EXPORT uint8_t l_List_foldlM___at_Lean_Declaration_hasSorry___spec__2(uint8_t, lean_object*); +lean_object* lean_find_expr(lean_object*, lean_object*); LEAN_EXPORT uint8_t l_List_foldlM___at_Lean_Declaration_hasSorry___spec__3(uint8_t, lean_object*); LEAN_EXPORT lean_object* l_List_foldlM___at_Lean_Declaration_hasNonSyntheticSorry___spec__4___boxed(lean_object*, lean_object*); LEAN_EXPORT lean_object* l_Lean_Expr_hasNonSyntheticSorry___boxed(lean_object*); @@ -480,7 +480,7 @@ _start: { lean_object* x_2; lean_object* x_3; x_2 = l_Lean_Expr_hasSorry___closed__1; -x_3 = l_Lean_Expr_FindImpl_findUnsafe_x3f(x_2, x_1); +x_3 = lean_find_expr(x_2, x_1); if (lean_obj_tag(x_3) == 0) { uint8_t x_4; @@ -511,6 +511,7 @@ _start: { uint8_t x_2; lean_object* x_3; x_2 = l_Lean_Expr_hasSorry(x_1); +lean_dec(x_1); x_3 = lean_box(x_2); return x_3; } @@ -528,7 +529,7 @@ _start: { lean_object* x_2; lean_object* x_3; x_2 = l_Lean_Expr_hasSyntheticSorry___closed__1; -x_3 = l_Lean_Expr_FindImpl_findUnsafe_x3f(x_2, x_1); +x_3 = lean_find_expr(x_2, x_1); if (lean_obj_tag(x_3) == 0) { uint8_t x_4; @@ -549,6 +550,7 @@ _start: { uint8_t x_2; lean_object* x_3; x_2 = l_Lean_Expr_hasSyntheticSorry(x_1); +lean_dec(x_1); x_3 = lean_box(x_2); return x_3; } @@ -566,7 +568,7 @@ _start: { lean_object* x_2; lean_object* x_3; x_2 = l_Lean_Expr_hasNonSyntheticSorry___closed__1; -x_3 = l_Lean_Expr_FindImpl_findUnsafe_x3f(x_2, x_1); +x_3 = lean_find_expr(x_2, x_1); if (lean_obj_tag(x_3) == 0) { uint8_t x_4; @@ -587,6 +589,7 @@ _start: { uint8_t x_2; lean_object* x_3; x_2 = l_Lean_Expr_hasNonSyntheticSorry(x_1); +lean_dec(x_1); x_3 = lean_box(x_2); return x_3; } @@ -604,22 +607,14 @@ if (x_1 == 0) { lean_object* x_3; lean_object* x_4; lean_object* x_5; lean_object* x_6; uint8_t x_7; x_3 = lean_ctor_get(x_2, 0); -lean_inc(x_3); x_4 = lean_ctor_get(x_2, 1); -lean_inc(x_4); -lean_dec(x_2); x_5 = lean_ctor_get(x_3, 0); -lean_inc(x_5); x_6 = lean_ctor_get(x_5, 2); -lean_inc(x_6); -lean_dec(x_5); x_7 = l_Lean_Expr_hasSorry(x_6); if (x_7 == 0) { lean_object* x_8; uint8_t x_9; x_8 = lean_ctor_get(x_3, 1); -lean_inc(x_8); -lean_dec(x_3); x_9 = l_Lean_Expr_hasSorry(x_8); x_1 = x_9; x_2 = x_4; @@ -628,7 +623,6 @@ goto _start; else { uint8_t x_11; -lean_dec(x_3); x_11 = 1; x_1 = x_11; x_2 = x_4; @@ -639,8 +633,6 @@ else { lean_object* x_13; uint8_t x_14; x_13 = lean_ctor_get(x_2, 1); -lean_inc(x_13); -lean_dec(x_2); x_14 = 1; x_1 = x_14; x_2 = x_13; @@ -662,13 +654,8 @@ if (x_1 == 0) { lean_object* x_3; lean_object* x_4; lean_object* x_5; uint8_t x_6; x_3 = lean_ctor_get(x_2, 0); -lean_inc(x_3); x_4 = lean_ctor_get(x_2, 1); -lean_inc(x_4); -lean_dec(x_2); x_5 = lean_ctor_get(x_3, 1); -lean_inc(x_5); -lean_dec(x_3); x_6 = l_Lean_Expr_hasSorry(x_5); x_1 = x_6; x_2 = x_4; @@ -678,8 +665,6 @@ else { lean_object* x_8; uint8_t x_9; x_8 = lean_ctor_get(x_2, 1); -lean_inc(x_8); -lean_dec(x_2); x_9 = 1; x_1 = x_9; x_2 = x_8; @@ -701,15 +686,9 @@ if (x_1 == 0) { lean_object* x_3; lean_object* x_4; lean_object* x_5; lean_object* x_6; uint8_t x_7; uint8_t x_8; x_3 = lean_ctor_get(x_2, 0); -lean_inc(x_3); x_4 = lean_ctor_get(x_2, 1); -lean_inc(x_4); -lean_dec(x_2); x_5 = lean_ctor_get(x_3, 2); -lean_inc(x_5); x_6 = lean_ctor_get(x_3, 1); -lean_inc(x_6); -lean_dec(x_3); x_7 = l_Lean_Expr_hasSorry(x_6); x_8 = l_List_foldlM___at_Lean_Declaration_hasSorry___spec__3(x_7, x_5); x_1 = x_8; @@ -720,13 +699,8 @@ else { lean_object* x_10; lean_object* x_11; lean_object* x_12; uint8_t x_13; uint8_t x_14; x_10 = lean_ctor_get(x_2, 0); -lean_inc(x_10); x_11 = lean_ctor_get(x_2, 1); -lean_inc(x_11); -lean_dec(x_2); x_12 = lean_ctor_get(x_10, 2); -lean_inc(x_12); -lean_dec(x_10); x_13 = 1; x_14 = l_List_foldlM___at_Lean_Declaration_hasSorry___spec__3(x_13, x_12); x_1 = x_14; @@ -742,26 +716,18 @@ _start: switch (lean_obj_tag(x_1)) { case 0: { -lean_object* x_3; lean_object* x_4; -x_3 = lean_ctor_get(x_1, 0); -lean_inc(x_3); -lean_dec(x_1); -x_4 = lean_ctor_get(x_3, 0); -lean_inc(x_4); -lean_dec(x_3); if (x_2 == 0) { -lean_object* x_5; uint8_t x_6; +lean_object* x_3; lean_object* x_4; lean_object* x_5; uint8_t x_6; +x_3 = lean_ctor_get(x_1, 0); +x_4 = lean_ctor_get(x_3, 0); x_5 = lean_ctor_get(x_4, 2); -lean_inc(x_5); -lean_dec(x_4); x_6 = l_Lean_Expr_hasSorry(x_5); return x_6; } else { uint8_t x_7; -lean_dec(x_4); x_7 = 1; return x_7; } @@ -774,8 +740,6 @@ case 5: { lean_object* x_8; uint8_t x_9; x_8 = lean_ctor_get(x_1, 0); -lean_inc(x_8); -lean_dec(x_1); x_9 = l_List_foldlM___at_Lean_Declaration_hasSorry___spec__2(x_2, x_8); return x_9; } @@ -783,28 +747,18 @@ case 6: { lean_object* x_10; uint8_t x_11; x_10 = lean_ctor_get(x_1, 2); -lean_inc(x_10); -lean_dec(x_1); x_11 = l_List_foldlM___at_Lean_Declaration_hasSorry___spec__4(x_2, x_10); return x_11; } default: { -lean_object* x_12; lean_object* x_13; -x_12 = lean_ctor_get(x_1, 0); -lean_inc(x_12); -lean_dec(x_1); -x_13 = lean_ctor_get(x_12, 0); -lean_inc(x_13); if (x_2 == 0) { -lean_object* x_14; lean_object* x_15; uint8_t x_16; +lean_object* x_12; lean_object* x_13; lean_object* x_14; lean_object* x_15; uint8_t x_16; +x_12 = lean_ctor_get(x_1, 0); +x_13 = lean_ctor_get(x_12, 0); x_14 = lean_ctor_get(x_12, 1); -lean_inc(x_14); -lean_dec(x_12); x_15 = lean_ctor_get(x_13, 2); -lean_inc(x_15); -lean_dec(x_13); x_16 = l_Lean_Expr_hasSorry(x_15); if (x_16 == 0) { @@ -815,7 +769,6 @@ return x_17; else { uint8_t x_18; -lean_dec(x_14); x_18 = 1; return x_18; } @@ -823,8 +776,6 @@ return x_18; else { uint8_t x_19; -lean_dec(x_13); -lean_dec(x_12); x_19 = 1; return x_19; } @@ -848,6 +799,7 @@ uint8_t x_3; uint8_t x_4; lean_object* x_5; x_3 = lean_unbox(x_1); lean_dec(x_1); x_4 = l_List_foldlM___at_Lean_Declaration_hasSorry___spec__2(x_3, x_2); +lean_dec(x_2); x_5 = lean_box(x_4); return x_5; } @@ -859,6 +811,7 @@ uint8_t x_3; uint8_t x_4; lean_object* x_5; x_3 = lean_unbox(x_1); lean_dec(x_1); x_4 = l_List_foldlM___at_Lean_Declaration_hasSorry___spec__3(x_3, x_2); +lean_dec(x_2); x_5 = lean_box(x_4); return x_5; } @@ -870,6 +823,7 @@ uint8_t x_3; uint8_t x_4; lean_object* x_5; x_3 = lean_unbox(x_1); lean_dec(x_1); x_4 = l_List_foldlM___at_Lean_Declaration_hasSorry___spec__4(x_3, x_2); +lean_dec(x_2); x_5 = lean_box(x_4); return x_5; } @@ -881,6 +835,7 @@ uint8_t x_3; uint8_t x_4; lean_object* x_5; x_3 = lean_unbox(x_2); lean_dec(x_2); x_4 = l_Lean_Declaration_foldExprM___at_Lean_Declaration_hasSorry___spec__1(x_1, x_3); +lean_dec(x_1); x_5 = lean_box(x_4); return x_5; } @@ -890,6 +845,7 @@ _start: { uint8_t x_2; lean_object* x_3; x_2 = l_Lean_Declaration_hasSorry(x_1); +lean_dec(x_1); x_3 = lean_box(x_2); return x_3; } @@ -907,22 +863,14 @@ if (x_1 == 0) { lean_object* x_3; lean_object* x_4; lean_object* x_5; lean_object* x_6; uint8_t x_7; x_3 = lean_ctor_get(x_2, 0); -lean_inc(x_3); x_4 = lean_ctor_get(x_2, 1); -lean_inc(x_4); -lean_dec(x_2); x_5 = lean_ctor_get(x_3, 0); -lean_inc(x_5); x_6 = lean_ctor_get(x_5, 2); -lean_inc(x_6); -lean_dec(x_5); x_7 = l_Lean_Expr_hasNonSyntheticSorry(x_6); if (x_7 == 0) { lean_object* x_8; uint8_t x_9; x_8 = lean_ctor_get(x_3, 1); -lean_inc(x_8); -lean_dec(x_3); x_9 = l_Lean_Expr_hasNonSyntheticSorry(x_8); x_1 = x_9; x_2 = x_4; @@ -931,7 +879,6 @@ goto _start; else { uint8_t x_11; -lean_dec(x_3); x_11 = 1; x_1 = x_11; x_2 = x_4; @@ -942,8 +889,6 @@ else { lean_object* x_13; uint8_t x_14; x_13 = lean_ctor_get(x_2, 1); -lean_inc(x_13); -lean_dec(x_2); x_14 = 1; x_1 = x_14; x_2 = x_13; @@ -965,13 +910,8 @@ if (x_1 == 0) { lean_object* x_3; lean_object* x_4; lean_object* x_5; uint8_t x_6; x_3 = lean_ctor_get(x_2, 0); -lean_inc(x_3); x_4 = lean_ctor_get(x_2, 1); -lean_inc(x_4); -lean_dec(x_2); x_5 = lean_ctor_get(x_3, 1); -lean_inc(x_5); -lean_dec(x_3); x_6 = l_Lean_Expr_hasNonSyntheticSorry(x_5); x_1 = x_6; x_2 = x_4; @@ -981,8 +921,6 @@ else { lean_object* x_8; uint8_t x_9; x_8 = lean_ctor_get(x_2, 1); -lean_inc(x_8); -lean_dec(x_2); x_9 = 1; x_1 = x_9; x_2 = x_8; @@ -1004,15 +942,9 @@ if (x_1 == 0) { lean_object* x_3; lean_object* x_4; lean_object* x_5; lean_object* x_6; uint8_t x_7; uint8_t x_8; x_3 = lean_ctor_get(x_2, 0); -lean_inc(x_3); x_4 = lean_ctor_get(x_2, 1); -lean_inc(x_4); -lean_dec(x_2); x_5 = lean_ctor_get(x_3, 2); -lean_inc(x_5); x_6 = lean_ctor_get(x_3, 1); -lean_inc(x_6); -lean_dec(x_3); x_7 = l_Lean_Expr_hasNonSyntheticSorry(x_6); x_8 = l_List_foldlM___at_Lean_Declaration_hasNonSyntheticSorry___spec__3(x_7, x_5); x_1 = x_8; @@ -1023,13 +955,8 @@ else { lean_object* x_10; lean_object* x_11; lean_object* x_12; uint8_t x_13; uint8_t x_14; x_10 = lean_ctor_get(x_2, 0); -lean_inc(x_10); x_11 = lean_ctor_get(x_2, 1); -lean_inc(x_11); -lean_dec(x_2); x_12 = lean_ctor_get(x_10, 2); -lean_inc(x_12); -lean_dec(x_10); x_13 = 1; x_14 = l_List_foldlM___at_Lean_Declaration_hasNonSyntheticSorry___spec__3(x_13, x_12); x_1 = x_14; @@ -1045,26 +972,18 @@ _start: switch (lean_obj_tag(x_1)) { case 0: { -lean_object* x_3; lean_object* x_4; -x_3 = lean_ctor_get(x_1, 0); -lean_inc(x_3); -lean_dec(x_1); -x_4 = lean_ctor_get(x_3, 0); -lean_inc(x_4); -lean_dec(x_3); if (x_2 == 0) { -lean_object* x_5; uint8_t x_6; +lean_object* x_3; lean_object* x_4; lean_object* x_5; uint8_t x_6; +x_3 = lean_ctor_get(x_1, 0); +x_4 = lean_ctor_get(x_3, 0); x_5 = lean_ctor_get(x_4, 2); -lean_inc(x_5); -lean_dec(x_4); x_6 = l_Lean_Expr_hasNonSyntheticSorry(x_5); return x_6; } else { uint8_t x_7; -lean_dec(x_4); x_7 = 1; return x_7; } @@ -1077,8 +996,6 @@ case 5: { lean_object* x_8; uint8_t x_9; x_8 = lean_ctor_get(x_1, 0); -lean_inc(x_8); -lean_dec(x_1); x_9 = l_List_foldlM___at_Lean_Declaration_hasNonSyntheticSorry___spec__2(x_2, x_8); return x_9; } @@ -1086,28 +1003,18 @@ case 6: { lean_object* x_10; uint8_t x_11; x_10 = lean_ctor_get(x_1, 2); -lean_inc(x_10); -lean_dec(x_1); x_11 = l_List_foldlM___at_Lean_Declaration_hasNonSyntheticSorry___spec__4(x_2, x_10); return x_11; } default: { -lean_object* x_12; lean_object* x_13; -x_12 = lean_ctor_get(x_1, 0); -lean_inc(x_12); -lean_dec(x_1); -x_13 = lean_ctor_get(x_12, 0); -lean_inc(x_13); if (x_2 == 0) { -lean_object* x_14; lean_object* x_15; uint8_t x_16; +lean_object* x_12; lean_object* x_13; lean_object* x_14; lean_object* x_15; uint8_t x_16; +x_12 = lean_ctor_get(x_1, 0); +x_13 = lean_ctor_get(x_12, 0); x_14 = lean_ctor_get(x_12, 1); -lean_inc(x_14); -lean_dec(x_12); x_15 = lean_ctor_get(x_13, 2); -lean_inc(x_15); -lean_dec(x_13); x_16 = l_Lean_Expr_hasNonSyntheticSorry(x_15); if (x_16 == 0) { @@ -1118,7 +1025,6 @@ return x_17; else { uint8_t x_18; -lean_dec(x_14); x_18 = 1; return x_18; } @@ -1126,8 +1032,6 @@ return x_18; else { uint8_t x_19; -lean_dec(x_13); -lean_dec(x_12); x_19 = 1; return x_19; } @@ -1151,6 +1055,7 @@ uint8_t x_3; uint8_t x_4; lean_object* x_5; x_3 = lean_unbox(x_1); lean_dec(x_1); x_4 = l_List_foldlM___at_Lean_Declaration_hasNonSyntheticSorry___spec__2(x_3, x_2); +lean_dec(x_2); x_5 = lean_box(x_4); return x_5; } @@ -1162,6 +1067,7 @@ uint8_t x_3; uint8_t x_4; lean_object* x_5; x_3 = lean_unbox(x_1); lean_dec(x_1); x_4 = l_List_foldlM___at_Lean_Declaration_hasNonSyntheticSorry___spec__3(x_3, x_2); +lean_dec(x_2); x_5 = lean_box(x_4); return x_5; } @@ -1173,6 +1079,7 @@ uint8_t x_3; uint8_t x_4; lean_object* x_5; x_3 = lean_unbox(x_1); lean_dec(x_1); x_4 = l_List_foldlM___at_Lean_Declaration_hasNonSyntheticSorry___spec__4(x_3, x_2); +lean_dec(x_2); x_5 = lean_box(x_4); return x_5; } @@ -1184,6 +1091,7 @@ uint8_t x_3; uint8_t x_4; lean_object* x_5; x_3 = lean_unbox(x_2); lean_dec(x_2); x_4 = l_Lean_Declaration_foldExprM___at_Lean_Declaration_hasNonSyntheticSorry___spec__1(x_1, x_3); +lean_dec(x_1); x_5 = lean_box(x_4); return x_5; } @@ -1193,6 +1101,7 @@ _start: { uint8_t x_2; lean_object* x_3; x_2 = l_Lean_Declaration_hasNonSyntheticSorry(x_1); +lean_dec(x_1); x_3 = lean_box(x_2); return x_3; }